01:19:29 @lo48576@mastodon.cardina1.red
02:16:20 @lo48576@mastodon.cardina1.red
icon

GCC 8.1 Compiler Released As The First Stable GCC8, Brings Many Improvements - Phoronix - phoronix.com/scan.php?page=new

起きて gentoo repo に上がってたらさっそく入れてみたい(が、たぶんそんなに早くは来ない)

Web site image
GCC 8.1 Compiler Released As The First Stable GCC8, Brings Many Improvements
12:33:37 @lo48576@mastodon.cardina1.red
icon

電子書籍の DRM を絶対に許さない

12:36:13 @lo48576@mastodon.cardina1.red
2018-05-03 12:35:03 Alberto Colemanの投稿 i_sparkling@rainyman.jp
icon

このアカウントは、notestockで公開設定になっていません。

12:36:14 @lo48576@mastodon.cardina1.red
2018-05-03 12:35:51 Alberto Colemanの投稿 i_sparkling@rainyman.jp
icon

このアカウントは、notestockで公開設定になっていません。

12:36:38 @lo48576@mastodon.cardina1.red
icon

どちらかというとコンピュッタとかメンタルモデルがしっかりしていないのではと思っている(根拠なき個人の感想)

12:36:43 @lo48576@mastodon.cardina1.red
2018-05-03 12:36:03 TGMのサントラ販売中の投稿 Common_Lisper@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

12:36:45 @lo48576@mastodon.cardina1.red
2018-05-03 12:36:09 やんてねの投稿 yantene@fla.red
icon

このアカウントは、notestockで公開設定になっていません。

12:37:40 @lo48576@mastodon.cardina1.red
icon

むしろ長期的な視点で見るほど DRM は害が大きいので、1e17歳生きてる人は DRM に反対しそう……と思ったけど、1e17年も生きていられる人は記憶力が桁違いなのかな?

12:38:21 @lo48576@mastodon.cardina1.red
icon

さて、 sys-devel/gcc-8.1.0 を入れます

12:39:22 @lo48576@mastodon.cardina1.red
2018-05-03 12:39:17 こるもJS(末代)の投稿 cormojs@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

12:39:40 @lo48576@mastodon.cardina1.red
icon

それは媒体の問題であって、コンテンツそのものの保存性の問題ではないので

12:40:28 @lo48576@mastodon.cardina1.red
icon

そもそも完全なコピーができるのであればメディアの経年劣化は本質的な問題にはならないので

12:40:42 @lo48576@mastodon.cardina1.red
icon

s/とか/とかメモリの/

12:41:05 @lo48576@mastodon.cardina1.red
icon

寝起きなので手と頭がちゃんと動いてない……

12:43:11 @lo48576@mastodon.cardina1.red
icon

.

Attach image
12:44:16 @lo48576@mastodon.cardina1.red
icon

個人的には、コーディングってマジで「書くだけ」なので、その前段階の設計と書いたあとのデバッグが思考リソースの大部分を占めていると思うんですが

12:44:59 @lo48576@mastodon.cardina1.red
icon

逆に言えば、コードとおおよそ1対1対応するくらいに精確に、コンピュータやコンパイラに何をさせたいかイメージできていないと手が動かない

12:45:44 @lo48576@mastodon.cardina1.red
icon

で、結局「何をさせたいか」の部分って脳内で可動式のオモチャをガチャガチャ動かしているようなものなので、メンタルモデルが堅固であることがとても大事なのではないかと考えるわけです

12:46:39 @lo48576@mastodon.cardina1.red
icon

もしかすると脳内でガチャガチャせずに要件からスマートにコードを吐き出せるタイプの人もいるのかもしれませんが、それは私の考えの及ぶところではありませんね……

12:47:47 @lo48576@mastodon.cardina1.red
icon

あと設計といってもクラス図云々みたいな「人に伝えるための整理された情報」ではなくて、もっとモヤっと混沌としたグラフ的なものです(私の場合は)

12:48:12 @lo48576@mastodon.cardina1.red
icon

人に伝えるための情報なんて、コードとコメント(ドキュメント)とテストから自動生成すればよろしい(個人の感想)

12:48:29 @lo48576@mastodon.cardina1.red
2018-05-03 12:48:11 Alberto Colemanの投稿 i_sparkling@rainyman.jp
icon

このアカウントは、notestockで公開設定になっていません。

12:49:12 @lo48576@mastodon.cardina1.red
icon

あれ、もしかして普通の人って「コードから挙動を想像する」の方向で考えてるんですか……

12:49:47 @lo48576@mastodon.cardina1.red
icon

ずっと「挙動を分解して記号化する」の方向で勉強してきたのであまりイメッジがわかない

12:51:00 @lo48576@mastodon.cardina1.red
icon

たとえばいつぞや書いた気もするけど、 git の勉強とかも「git add してみましょう!ホニャララになりましたね!」みたいな最初に手を動かす方式よりも、 staging area とか worktree とか diff とか snapshot みたいな概念を知ってメンタルモデルを作る方を重視していたので

12:51:46 @lo48576@mastodon.cardina1.red
2018-05-03 12:49:57 TGMのサントラ販売中の投稿 Common_Lisper@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

12:51:47 @lo48576@mastodon.cardina1.red
2018-05-03 12:49:27 Yavit :verified:の投稿 8vit@gs.yvt.jp
icon

このアカウントは、notestockで公開設定になっていません。

12:52:17 @lo48576@mastodon.cardina1.red
icon

著作権が切れた後、ちゃんと DRM なし版が配布されるとは限らない……

12:55:24 @lo48576@mastodon.cardina1.red
icon

「数学には解がひとつしかない/答えがひとつに定まる」みたいなアレだな……

12:55:45 @lo48576@mastodon.cardina1.red
icon

さんすうのイメッジを持ち込まれている?

12:57:19 @lo48576@mastodon.cardina1.red
icon

mastodon.cardina1.red/@lo48576
こうして言葉にしてみると、私が記号的な思考を得意としていないことがよくわかるなぁ……

Web site image
らりお・ザ・何らかの🈗然㊌ソムリエ (@lo48576@mastodon.cardina1.red)
12:58:11 @lo48576@mastodon.cardina1.red
icon

グラフとかオートマトンみたいなものを考えるときも、記号じゃなくて対象のモヤっとしたイメージをガチャガチャやってたりするからな……

12:59:21 @lo48576@mastodon.cardina1.red
icon

エッジケースを考える癖が付いているので辛うじてこれでどうにかなっている感が強い

12:59:37 @lo48576@mastodon.cardina1.red
2018-05-03 12:56:21 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジ的には「プログラミングって、やりたい事をどんどん分解して考えていけば、一応出来るよ!><」って言う事多いかも><

12:59:39 @lo48576@mastodon.cardina1.red
2018-05-03 12:59:19 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

これら、プログラミングに限った事じゃなく、お料理もそうだし、ゲームなら例えばfactorioとかプログラミングの分解して考える方法が出来てない人を観察できるかも><

13:00:03 @lo48576@mastodon.cardina1.red
icon

穴埋めなら答えられるタイプのアレっぽい

13:02:36 @lo48576@mastodon.cardina1.red
2018-05-03 13:02:11 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

例えば、カレーライスを作るよ!><ってなった時に、プログラミングできないタイプの人ってオレンジが観察した限りボトムアップ的に考えちゃいやすいっぽくて、レシピを頭から呼んで混乱してるかも><

13:03:43 @lo48576@mastodon.cardina1.red
2018-05-03 13:02:28 Alberto Colemanの投稿 i_sparkling@rainyman.jp
icon

このアカウントは、notestockで公開設定になっていません。

13:05:32 @lo48576@mastodon.cardina1.red
icon

初学者の質問、しばしば「hoge をしたいが、どうすればいいか」という質問を掘り下げていくと「fuga をするのに hoge する必要がある」などという情報が出てきて、しかし根本的に fuga に hoge は向いてなかったり間違っていたりして、難しい

13:06:02 @lo48576@mastodon.cardina1.red
icon

要求開発みたいな真似が必要になる

13:07:04 @lo48576@mastodon.cardina1.red
2018-05-03 13:04:53 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

プログラミングできる人々ってたぶん、「カレーライス作るよ!><」って考えた時に無意識に「カレーライスって事はカレールーとライスが必要かも!><」って考えて、「まずルーの方は、カレールーのなんか固形のやつと、にんじんとジャガイモと肉と・・・」みたいに完成予定からトップダウン(?)に考える人が多いかも?><

13:07:43 @lo48576@mastodon.cardina1.red
icon

脳のワーキングメモリがとても小さいので、私はトップダウンで依存を手繰って考えていくのは苦手ですね……(何を考えていたかすぐに思い出せなくなる)

13:10:13 @lo48576@mastodon.cardina1.red
icon

扱いたいデータを表現する型をぜんぶ最初に用意して、あとは I/O などからデータをその型に用意するコードを書いて、そうすると全部メモリに乗せられるのであとはロジックを書くだけ、みたいな感じでやることが多いです

13:11:15 @lo48576@mastodon.cardina1.red
icon

つまり、「今やっている作業は○○から必要」という方向よりも「今やっている作業をすると○○できるようになる」という方向で作業を記憶している

13:12:01 @lo48576@mastodon.cardina1.red
icon

これだと、「今あるコードから何ができる」というのがわかりやすいのと、「以前書いていたとき何からやろうとしていた」という作業の依存関係が発生しづらいので、記憶に優しい

13:12:30 @lo48576@mastodon.cardina1.red
icon

「これの次は○○をする」とかが本当に覚えていられないので……

13:15:14 @lo48576@mastodon.cardina1.red
icon

記憶力が欲しいよ……

13:15:50 @lo48576@mastodon.cardina1.red
2018-05-03 13:12:22 monacaの投稿 mimoo@omochi.xyz
icon

このアカウントは、notestockで公開設定になっていません。

13:16:03 @lo48576@mastodon.cardina1.red
icon

私は美しいコードの方が好きですね(どちらが金になるかは別として)

13:16:43 @lo48576@mastodon.cardina1.red
icon

うんこを食べて生きるか、虚無を食べて死ぬかみたいな話(適当)

13:16:50 @lo48576@mastodon.cardina1.red
2018-05-03 13:04:10 Satoshi Kojima (小嶋智)の投稿 skoji@sandbox.skoji.jp
icon

このアカウントは、notestockで公開設定になっていません。

13:17:39 @lo48576@mastodon.cardina1.red
icon

これも結局「自分の知っているモデルに落とす」とか「自分の知っているモデルを拡張する」の方向にいくので、そのパラダイムで最初に勉強する言語ではモデルとても大事なのでは

13:17:49 @lo48576@mastodon.cardina1.red
icon

λ計算とかどうやって勉強したんだっけ……

13:18:26 @lo48576@mastodon.cardina1.red
icon

grass を知って SKI コンビネータで遊んだんだったか?

13:21:03 @lo48576@mastodon.cardina1.red
icon

あと料理は並行・並列な処理が必要なので完全に記憶リソース不足ですね

13:21:22 @lo48576@mastodon.cardina1.red
2018-05-03 13:19:47 Alberto Colemanの投稿 i_sparkling@rainyman.jp
icon

このアカウントは、notestockで公開設定になっていません。

13:22:00 @lo48576@mastodon.cardina1.red
icon

たとえば「カードを並べ替える」とき無意識に2本の腕を使ってしまうところからして、計算機レベルでは (swap 除き)プリミティブじゃないし……

13:22:38 @lo48576@mastodon.cardina1.red
icon

最初に CPU には1本の腕しかないということを納得してもらう必要がある

13:27:37 @lo48576@mastodon.cardina1.red
icon

sandbox.skoji.jp/@skoji/999634
コミットメッセージかな

Web site image
Satoshi Kojima (小嶋智) (@skoji@sandbox.skoji.jp)
13:32:46 @lo48576@mastodon.cardina1.red
2018-05-03 13:32:32 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

プログラミングできるようにするってつまり「設計できるようにする」なんだから、設計の考え方を教えられなかったら、細かい事ごちゃごちゃ教えられてもそれの活用方法なんてわからないの当たり前かも><
ニンジンの切り方を教えられたってカレーは作れないんだから><

13:35:54 @lo48576@mastodon.cardina1.red
2018-05-03 13:34:51 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

・・・で、設計ってトップダウンだよねって><(トップダウンじゃない設計って世の中になんかあるっけ?><;(トップダウンかどうかって視点だからあれだけど><;))

13:36:51 @lo48576@mastodon.cardina1.red
icon

やりたいことと大雑把な仕組みはトップダウンで決まるけど、「この通りにコードを書けばおkやで」という「書くだけ」ステージには持っていかないなぁ(私は)

13:37:15 @lo48576@mastodon.cardina1.red
icon

授業では若干そういう感じの方法論も習ったので、まあ産業的にはそれが普通なのかもしれないけど……

13:38:57 @lo48576@mastodon.cardina1.red
icon

とにかく「何をするべきだったか思い出せない(メモをしても精確に概念を再現できるわけではない)」が障害になるので、「道具を作ればあとは組み合わせるだけ」みたいなフェーズに持って行くように道具を作る

13:39:53 @lo48576@mastodon.cardina1.red
icon

なので実装最終段階はシェルスクリプトでも組んでいるかのような気分になる(既に自分が欲しがりそうなコンポーネントは出来上がっているので、いい感じに組み合わせる)

13:55:52 @lo48576@mastodon.cardina1.red
2018-05-03 13:44:31 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

例えばソートでも、「プログラムとして書けなくてもあなたは数字を並べ替える事が出来るんでしょ?>< 普段どうやってるのかそのまま説明してみて?><」って聞いてみると「なるほど!」ってなるかもしれない><(ソートの説明ではそれをした事無いけど><)

13:57:27 @lo48576@mastodon.cardina1.red
icon

これ、ちょっと考えてみたけど、最少単位が一通りわかってないと「どこまで分解するか」とか「何へと分解するか」みたいなのがわかってないとどうすればいいんだ……みたいな感じになるので、やはりメンタルモデルかなぁという気持ちになった(個人の感想)

13:59:37 @lo48576@mastodon.cardina1.red
2018-05-03 13:58:27 :neko_smiley:の投稿 mizukmb@mstdn.nere9.help
icon

このアカウントは、notestockで公開設定になっていません。

14:00:50 @lo48576@mastodon.cardina1.red
icon

たとえば「腕を動かすことに注目するべきか」とか「指を動かすことに注目するべきか」とか「目線の移動を気にするべきか」とか、そういったあらゆる細部を適切に抽出し適切に無視するために、「今考えている基盤で要求される操作の粒度」は大事なのかなと

14:01:04 @lo48576@mastodon.cardina1.red
2018-05-03 14:00:57 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

1対1で具体的に何かを教えてあげる時であれば、どこまで分解するかとかも「という事はそれをするにはどうすればいい?><」みたいに聞いてあげる事で、ちょうど必要な部分まで掘り下げるお手伝いが出来るかも><

14:01:28 @lo48576@mastodon.cardina1.red
icon

私が割と自己完結的に考えがちなのでそういうインタラクティブな思索が苦手だというだけの話だったかもしれない

14:01:46 @lo48576@mastodon.cardina1.red
icon

「前提条件を後出ししてくるの反則やろ……」みたいな気持ちになる

14:02:16 @lo48576@mastodon.cardina1.red
icon

意識し活用できるかは別として、まず情報開示を行ってから始めましょうという気持ちが強い

14:03:45 @lo48576@mastodon.cardina1.red
2018-05-03 14:03:35 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジがしそういう方法で色々教えた時の感覚では、ほぼ全ての人がそういうの苦手っぽいかも><; なんかものすごく「(あん? うっせーな・・・)」を感じる><;

14:03:56 @lo48576@mastodon.cardina1.red
icon

たぶん「情報の後出し感」がそうさせるのではという考えです

14:04:29 @lo48576@mastodon.cardina1.red
icon

たとえるなら、文法を提示されていない言語でコンパイラと闘っているような

14:04:45 @lo48576@mastodon.cardina1.red
icon

「それ最初に言えや」みたいな

14:04:58 @lo48576@mastodon.cardina1.red
2018-05-03 14:04:52 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

「前提条件を後出し」じゃなく、必要な前提条件を見つけ出す作業こそが設計なんだよ><って言いたいしそれを教える感じかも><

14:05:46 @lo48576@mastodon.cardina1.red
icon

その設計が何から成っているのか(記述の最小粒度)が提示されていないから、「まだやるの?どこまで掘り下げるか聞かされてないんだけど……」というゴールの見えない感が出てしまうのでは

14:07:51 @lo48576@mastodon.cardina1.red
icon

たとえば求める条件の記述が、状況によって「カードが昇順に整列されている」で十分なこともあれば、整列や大小関係とはどういうことなのか記述する必要もあるかもしれないし、そういった「設計をこれでよしとする(メタな)条件」が明示されてほしいという感じだろうか

14:08:04 @lo48576@mastodon.cardina1.red
2018-05-03 14:07:55 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

未発見のものでありまだ作られてないものなんだから、最初にも何もまだ存在しないかも><; プログラミングで「プログラミングって完成品のソースコードがあれば作らなくてもいいんじゃね?」「そうだね!>< でもそのソースコードが無いのでどうやって作ろうか?って考えてる時に完成品があればって言ってもしょうがないかも!><;」みたいな話かも><;

14:08:58 @lo48576@mastodon.cardina1.red
icon

その場合で言えば、ソフトウェアを記述するための基盤はソースコード(言語)であるわけで、つまり提示されるべきなのは言語自体の仕様や操作の大きさ

14:10:32 @lo48576@mastodon.cardina1.red
2018-05-03 14:10:07 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

完成品から部品にたどって必要なものを考えていって、その必要なものが「そういえばそれ、完成品で既にあるかも!><」ってなったらそれを使えばいいし、そこが底かも><(駄洒落かも><)

14:10:59 @lo48576@mastodon.cardina1.red
icon

あれ?いま初学者に教える話だった気がしましたが

14:12:13 @lo48576@mastodon.cardina1.red
2018-05-03 14:12:06 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

うん><; なのでまず「設計とはどういうものか?><」という概念を先に教えないと無理だよ!><;って話をしてるし、具体例としては1対1で気づかせるって方法の話をしてた><;

14:14:27 @lo48576@mastodon.cardina1.red
2018-05-03 14:14:12 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

例えば部品に辿って考えていって教えられてる人が「じゃあ、これとこれを足せばいいって事?」ってなったとして
「足せばいい!?>< なんとここに便利な加算命令というものが!!!><」
「マジで!!!!?」
みたいな><

14:15:33 @lo48576@mastodon.cardina1.red
icon

それ私が嫌いなタイプのやつだ……完全に個人的嗜好の問題っぽい

14:16:16 @lo48576@mastodon.cardina1.red
icon

どう喩えたものか……

14:17:24 @lo48576@mastodon.cardina1.red
icon

たとえばなんか巨大な整数を与えられて「さあ分解してみましょう」と言われたとして、それをなんだかよくわからないけど延々と分解していって、いつか「おっ、それは既にありますね!やった!」と言われるまで延々とポチポチして分解しつづけるみたいな終わりのないジョブ、私にはちょっと耐えられないです

14:18:32 @lo48576@mastodon.cardina1.red
icon

ここで提示されてほしいメタ条件は、「分解先は2以上の自然数でいいです」と「分割後の積が分割前と一致するように分解します」だったりするわけで

14:20:01 @lo48576@mastodon.cardina1.red
icon

試行錯誤するにしても、「整数に分解します」の部分は絶対に最初に提示するべきだと思うんですよね

14:20:52 @lo48576@mastodon.cardina1.red
2018-05-03 14:19:53 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

でもある程度以上大きなものの設計って基本的にそういうものかも><(自動車を作ろうって考えたら、部品で買える所までは辿らないといけないし、既製の部品で納得がいかなければ最後は「鉄鉱石ってどうやって掘るんだろ?><」とかなりかねないし、そういう意味では元々きりが無い><)

14:22:36 @lo48576@mastodon.cardina1.red
icon

既成の部分が使えるかを知るためには「これはこう使える」みたいな用法まで含めた部分がわかっていないといけないわけで、それって最初に教えるべき部分ではなくて、「問題を(設定された粒度まで)分解できる人が、部分的に未分割な問題とうまく付き合う方法」という、言ってみればステップアップ後の段階なのではと思いました

14:23:19 @lo48576@mastodon.cardina1.red
2018-05-03 14:22:13 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

ていうかそんな事言ったら何らかの課題で教える時に正解を丸ごと教えないとケチみたいな話になっちゃう>< それじゃ何も設計は出来ない><

14:25:25 @lo48576@mastodon.cardina1.red
icon

条件が足りないと「足し算をする必要があります→まず AND と XOR を作ります」みたいな分割までやらないといけない(それをやる直前まで「ここで終わり」と気付けない)かもしれないわけで、「ここまでいけば十分であろう」というのを設計者自身に自覚してもらう/見通してもらうためには「足し算できる機械が最初から用意してあります」という前提条件が必須だと思うわけです

14:27:09 @lo48576@mastodon.cardina1.red
icon

そういう、「これ以上掘り下げる必要はありません」という壁のようなものは、設計そのもの(いわゆる「答え」)を直接には記述しないわけで、これが事前に提示される必要があるのではと考えます

14:27:59 @lo48576@mastodon.cardina1.red
icon

無論、現実に高度な問題を考えるうえでその壁というか限度が見えないということもままあるでしょうけど、それは初心者に教える例として使える難易度の問題ではないというだけで、選択のミスではと

14:29:23 @lo48576@mastodon.cardina1.red
icon

「ソートは与えられているので今回その中身を考える必要はありません」という条件と、「こうするとソートができます」という知識は全く別の話で、たとえば後者を知っていたからとして今回の設計でそれを使うとは限らない(それを掘り下げるべきではないかもしれない)

14:30:54 @lo48576@mastodon.cardina1.red
icon

もっと小さな問題で考えるなら、「加算できる機械があります」という前提条件と「こうすると加算ができます」という知識はそのまま交換可能ではないわけで、設計を試してもらううえで、後者を考え出す必要がないのであれば、前者の条件を事前に与えるべきなのでは、ということです

14:32:34 @lo48576@mastodon.cardina1.red
2018-05-03 14:31:48 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

それはそうだと思うけど>< でも、うまく説明できないけど用意した土台にくっつく瞬間の部分?><みたいなのは、初心者だからこそ提示してても気づけない可能性が高いし、さっきの「加算命令というものが!><」みたいな風に教えてあげないと、通過(?)しちゃうかも><

14:33:29 @lo48576@mastodon.cardina1.red
icon

それは提示されることと活用することを同一視しているから発生する懸念であって、たとえば数学書で定義を覚えていなければ後から戻ってもう一度閲覧できるのと同じように、提示された条件も指摘された後で戻って確認することもできるわけです

14:34:24 @lo48576@mastodon.cardina1.red
icon

「自分で気付く余地がある」というのは大事だと思っていて、それがないと「自分で気付けたかもしれないことも、インストラクターから全て指摘されるまで確定できない」という他人に制御されている感が強烈になる

14:35:42 @lo48576@mastodon.cardina1.red
icon

「おっ、そこに土台あるじゃん」という「達成の予感」を得られるかどうかが、前提条件の事前の提示があるかどうかで決まるのではということです

14:36:12 @lo48576@mastodon.cardina1.red
2018-05-03 14:35:54 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

どこまで掘り下げるのか?の問題はあるけど、知識のを知識としてのみしか教えないのであれば自分で考える方法は学べないし、ソートを教えられる時に「どうしてそうする出来るのか?」まで自分で考えるように教えないのであれば、それはソースコードコピペして済ますのと大差ないかも><

14:36:13 @lo48576@mastodon.cardina1.red
icon

14:37:12 @lo48576@mastodon.cardina1.red
icon

設計の方法論について納得したのであれば、上のレイヤーを設計するときと下のレイヤーを設計するときの違いは分割の粒度のみなので、特定の例でソートの内容を考慮しなかったからといって、ソート自体を設計できないということにはならないのでは

14:37:53 @lo48576@mastodon.cardina1.red
2018-05-03 14:37:43 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

自分で考えるクセがつけられないのであれば、どうしてそうするのか?を実体験として学べなくて、ソースコードコピペしてるのとあんまり変わらないよって言いたい・・・><

14:38:39 @lo48576@mastodon.cardina1.red
icon

その「自分で考える」は前提条件の提示により妨げられないのでは……?

14:42:04 @lo48576@mastodon.cardina1.red
2018-05-03 14:40:59 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

これべつに、土台に付く部分を邪魔するって話じゃなく、再起に教えられてる人が途中で気づける(=自分でたどり着ける=設計できる)のであれば、「という事はあれを使えば!!!」「その通り!><」で済むよもちろん><
そうじゃなく通過しそうになっちゃった時に「それは実は既にあるんです!><」って教えてあげると、「そんな便利なものが!」ってなるみたいな感じ><

14:42:05 @lo48576@mastodon.cardina1.red
2018-05-03 14:41:50 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

x再起に o先に
x再起に教えられてる人が
x教えられてる人が先に

14:42:30 @lo48576@mastodon.cardina1.red
icon

その土台の形が最初に提示される必要があるのではという話をしていたのですが……

14:42:36 @lo48576@mastodon.cardina1.red
icon

かなり噛み合ってない気がしてきた

14:43:49 @lo48576@mastodon.cardina1.red
2018-05-03 14:43:34 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジは、その土台の形はどう教えるの?><; って・・・><

14:44:28 @lo48576@mastodon.cardina1.red
icon

なんか根本的に食い違ってたw

14:44:46 @lo48576@mastodon.cardina1.red
icon

というか「土台」という言葉の意図も噛み合ってない予感がしている

14:47:07 @lo48576@mastodon.cardina1.red
icon

「設計という作業の完了条件(メタな条件)を誰が判断するか」という話で、まあ普通に設計者がそれを判断するものだと思います。
であれば、その完了条件は「そこまで分割したならこういう部品がありますね!」という(教えられる側から見て偶発的な)指摘のみに依るのではなく、教えられる側が最初から参照できる場所に「おっ、これならもうこの部分の設計は完了したといえるな」と判断できるように提示されているべき、という意図の話です

14:49:42 @lo48576@mastodon.cardina1.red
icon

たとえばトランプを並べ替えるソートを設計するとして、両手での swap を使って選択ソートを表現できた人がいたとして、「でも両手は使えないよ?」と後から言われるとイラッとするわけで、であれば最初から「カードを持てるのは片手までです」と提示してほしい、というレベルの話です

14:50:47 @lo48576@mastodon.cardina1.red
icon

ここで「カードを持てるのは片手までです」とか「一度に注視できるカードは一枚までです」とか、そういう前提条件の提示は、ソートアルゴリズムを設計するうえで解答を記述することにはなりませんよね

14:52:31 @lo48576@mastodon.cardina1.red
icon

で、私の言う「完了条件」というのは、「目的の動作を、『片手で一度に一枚までカードを持つ』などなどの前提条件を満たすような操作のみに分割できたこと」という風なものです

14:52:55 @lo48576@mastodon.cardina1.red
2018-05-03 14:52:00 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

難しい><; オレンジ的に実際に教えた時の経験上は、プログラミングできない人に1対1で教える時にはその部分逆に取っ払わないと混乱してしまうので「とりあえず忘れて><」ってしてる
ので、このあたり書いた><
mstdn.nere9.help/@orange_in_sp
mstdn.nere9.help/@orange_in_sp

Web site image
orange (@orange_in_space@mstdn.nere9.help)
Web site image
orange (@orange_in_space@mstdn.nere9.help)
14:54:13 @lo48576@mastodon.cardina1.red
icon

それは最小単位を組み合わせて大きなものを作ろうとするから混乱するのであって、それはまあわかるんですが。
かといって、大きいものから分割していこうというとき、最小単位を隠すというのは回答者にとってストレスフル(かつ実践的とは限らない)のではないか、というのが考えです

14:54:53 @lo48576@mastodon.cardina1.red
icon

「操作を組み上げるのではなく、問題をだんだん分割していきましょう」というのと「最小単位がわかりません」というのは独立していると思うのですが

14:56:18 @lo48576@mastodon.cardina1.red
icon

最小単位がわからない状況もあるかもしれませんが、それはまた別の話ですよね(要するに設計の前に環境と状況を調査しろという話であって、まあそれも設計というフェーズに含めて考えることもできるかもしれませんが)

14:56:59 @lo48576@mastodon.cardina1.red
2018-05-03 14:56:47 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

ストレスフルなのもわかるけど、設計って自分が思いついたアイディアが、自分にとって未発見の制限にぶつかって取り下げる事も大きく含まれると思うのでなんとも><; 「あ!><; よく考えたら出来ない!><;」って大切かも>< じゃなきゃ設計にならない><

14:58:18 @lo48576@mastodon.cardina1.red
icon

それはバックトラックと再帰的な問題の分割により達成されるものなので、前提条件と無関係では……?
そもそも「よく考えたら出来ない」というのがどう判定されるかというと、「操作の最小単位まで分割できなかった」という条件によるわけで、結局最小単位がわかっていないと失敗判定もできないような

14:58:37 @lo48576@mastodon.cardina1.red
2018-05-03 14:57:39 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

前提条件を真に全て細かく出せてしまったら、それはそれ自体が設計かも><(それはつまり前提条件により必然的に決まるので><)

14:58:41 @lo48576@mastodon.cardina1.red
icon

これは嘘では

14:59:19 @lo48576@mastodon.cardina1.red
icon

たとえば CPU で実行可能なあらゆる命令が列挙されているとして、それはソートアルゴリズムを必然的に記述できるので設計が完了しているとは見做せませんよね

15:00:42 @lo48576@mastodon.cardina1.red
icon

gcc-8.1.0 のビルドが完了していたので、 emerge -e しにいきます

15:01:44 @lo48576@mastodon.cardina1.red
2018-05-03 15:01:18 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

それは全ての前提条件ではないかも>< 制限としての前提条件のうちのかなり限られた部分集合かも><;
オレンジが言いたい事はそういうことじゃなく、それができるのかを知るためには、それをさらに分解して考えていく必要があるみたいな事が言いたい・・・><

15:02:37 @lo48576@mastodon.cardina1.red
icon

その「できるのかを知る」は低位のレイヤーにいくとたとえば「コンピュータアーキテクチャを知る」などになるわけで、それは必要な知識かもしれないけど、やりすぎればもはや設計とは別のレイヤーではと思います

15:02:48 @lo48576@mastodon.cardina1.red
2018-05-03 15:02:32 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

例えばすごく第一歩として言うのであれば、CPUの命令表には「ソートせよ」とは書かれてない>< そういう意味での制限><

15:04:14 @lo48576@mastodon.cardina1.red
icon

や、まあそこまで含めた設計の必要がある場合もあるだろうけど、それは初心者への例題としては不適切では

15:05:52 @lo48576@mastodon.cardina1.red
icon

「ソートせよ」が存在しないというのは、命令の一覧を眺めることで知ることができるわけで、それは設計という作業を通して知るべき知識ではなくて、設計に先立って把握しているべき条件や知っているべき知識から察せられるべき事柄ですよね

15:06:52 @lo48576@mastodon.cardina1.red
icon

逆に言えば、「前提となる環境等を十分に調査・把握しないうちから設計をしようとしたって真っ当にできるわけがない」みたいな話になるかな?

15:07:20 @lo48576@mastodon.cardina1.red
icon

であればこそ、方法論の前に十分なメンタルモデルが欲しい、という発想になるわけです(最初の話に戻った)

15:08:37 @lo48576@mastodon.cardina1.red
2018-05-03 15:08:26 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

その、調査したつもりの制限という壁に突き進んでいても実際にぶつかるまではなかなか気づけないよ!><みたいな事が言いたい・・・><

15:09:40 @lo48576@mastodon.cardina1.red
icon

そのときは設計を別経路からやりなおす(バックトラックする)か、壁を乗り越えるサブ問題を設定する(再帰的にやる)べきなのであって、結局その「壁にぶつかってその存在を知る」フェーズは設計の本質を知るのに必要ではないのではと

15:10:24 @lo48576@mastodon.cardina1.red
icon

つまり、壁にぶつかる直前までの方法論を(ちょっとだけ方向を変えて)継続することで進行することができるので

15:10:34 @lo48576@mastodon.cardina1.red
2018-05-03 15:10:02 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

で、メンタルモデルとしては、「設計できるようになるには、自分で考えるクセをつけるのが大切でしょ!?><」って事で、嫌がられるのが前提で、「じゃあそれをするのはどうやってやればいい?><」って問い詰めていく方法って実際に有用だったかもって言いたい><;

15:10:52 @lo48576@mastodon.cardina1.red
icon

うーん

15:11:20 @lo48576@mastodon.cardina1.red
icon

私の腑に落ちないのは「癖を付けさせる」部分なのだろうか……

15:12:46 @lo48576@mastodon.cardina1.red
icon

結局「こう考えれば楽にできるんやで」とだけ言っておけば自然とそれを使うようになるし、敢えて暗闇を歩かせる必要はあるのだろうか、という……?

15:13:20 @lo48576@mastodon.cardina1.red
icon

或いは、強制と反復によって思考パターンを植え付ける方式に抵抗がある、という感じだろうか?

15:15:20 @lo48576@mastodon.cardina1.red
icon

他者からの苦痛を伴わないとどうにもならないようでは、知的な学習というより獣の躾ではという(暴論)

15:21:47 @lo48576@mastodon.cardina1.red
icon

すごい暴論だけど「できるやつは勝手にやるようになるし、できないやつはいつまでもやらない」みたいな話

15:22:35 @lo48576@mastodon.cardina1.red
icon

まあこういう姿勢はほぼ無条件な相手を対象とする教育としては成立しないんでしょうけど

15:24:26 @lo48576@mastodon.cardina1.red
icon

こう、「ステージを上げる」ためにはそういう強力な干渉が必要なんでしょうけど、たとえば「ポインタなんていらない、 Python があれば十分」と思っている人はそれで十分な範囲からあまり出てこないわけで、いざそれで足りないとなったとき勝手に勉強するやつと諦めるやつがいるのではと

15:24:59 @lo48576@mastodon.cardina1.red
icon

で、ハードモードでやる必要があるのは後者をどうにかする場合なんだろうけど、それって著しくコスパが悪そうという感想

15:25:32 @lo48576@mastodon.cardina1.red
icon

勝手にやる人の手を引っ張った方がいろいろな面で、まあ、なのでは。

15:25:50 @lo48576@mastodon.cardina1.red
icon

いやこんな偉そうなこと言ってられる立場でもないんですけどね私は

15:26:02 @lo48576@mastodon.cardina1.red
2018-05-03 15:25:52 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

なのでオレンジは強制的に「なるほどそういう事か!」って反応がある場所まで「(うっせーなこいつ・・・)」に「><;」って耐えながら強引に案内するみたいな教え方をしてるかも><;

15:26:27 @lo48576@mastodon.cardina1.red
icon

私は知りたいと思ってない人には理解を求めないタイプなので、まあその辺りの違いなんですかね

15:27:20 @lo48576@mastodon.cardina1.red
icon

基本うちのサークルはそっち系に明るい人が多いし、理解させることを義務として物を教えたことはないので

15:29:31 @lo48576@mastodon.cardina1.red
2018-05-03 15:29:21 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

チュートリアル的なトレーニング無しでどう役に立つのかわからないつまらない予備知識を一方的に「こうういうものなんです!!!」って教えられてもおもしろくないかも>< 予備知識も自分でも考えながら納得して「そういうことか!」って学ぶ方が楽しくない?><(主観)

15:31:02 @lo48576@mastodon.cardina1.red
icon

私はまず「知りたい」が先にくるので……

15:31:14 @lo48576@mastodon.cardina1.red
icon

「○○をしたい」が先立ったことはほとんどない気がします

15:31:48 @lo48576@mastodon.cardina1.red
icon

「何が起きてるかわからないけど魔法が起きてなんとかなる」みたいなのあまり好きじゃないので……

15:33:06 @lo48576@mastodon.cardina1.red
icon

物理的な原理とかまで深掘りするかはともかく、「何をすると何が起きてそれゆえこの結果になる」というくらいの因果は知っておきたいし、その因果を納得できるためには表面的であれ原理は知らずにはいられない

15:33:19 @lo48576@mastodon.cardina1.red
2018-05-03 15:33:10 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

知りたいでも結局粒度の話になるかも>< 計算機のアーキテクチャの話を聞きたい時にそれこそ「なんとかなる」を避ける為に、半導体そのものの材料の話をされてもまじめに聞く?><

15:33:32 @lo48576@mastodon.cardina1.red
icon

電子回路からコンピュッタに入った勢なので……

15:35:15 @lo48576@mastodon.cardina1.red
icon

まあ現実に全てを掘り下げることはできないので興味と必要の強さに応じて選択的に疑問を無視するわけですが、そういった諸々はモヤモヤとしてストレス源になったりするので

15:35:48 @lo48576@mastodon.cardina1.red
2018-05-03 15:33:20 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

15:35:50 @lo48576@mastodon.cardina1.red
2018-05-03 15:35:05 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

15:36:34 @lo48576@mastodon.cardina1.red
icon

これは文法からモデルを構築するのに慣れている人のやりかたっぽいので、初学者とはだいぶプロセスが違うのかなぁという気がします(知らんけど。共通かもしれないけど)

15:38:29 @lo48576@mastodon.cardina1.red
icon

プログラミング言語を「言語」と区分しがちなのも誤解に繋がっているのかなぁという印象はある

15:39:06 @lo48576@mastodon.cardina1.red
icon

どうせポヨグヤマなんて抽象構文木とかを思い浮かべてるんだから文法なんて大して問題ではなくて、本当に注目・区別すべきなのはパラダイムとか意味論とかなんだけど

15:41:14 @lo48576@mastodon.cardina1.red
icon

ただ、ありがちな「FizzBuzz 書いてみて言語を比べてみます」みたいなアレな web ページとかでは、文法についてあれこれ言ってるのが多くて、アッハイ何も見てないんだね、という気持ちになりがち

15:41:49 @lo48576@mastodon.cardina1.red
icon

文法に言及するのなんて、 C のポインタ型くらい滅茶苦茶な減点があるときくらいで十分

15:42:15 @lo48576@mastodon.cardina1.red
2018-05-03 15:42:09 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

前提条件だけ教えてあげれば自分でって教え方ってつまり「前提条件は頭に叩き込め! 後は知らん! 条件を忘れてた!? それはお前の責任だ!」って鬼軍曹じゃん?><

15:42:40 @lo48576@mastodon.cardina1.red
icon

や、条件を最初に提示しろというのと、条件に基く判定を全て回答者が行えというのは別の話では

15:43:04 @lo48576@mastodon.cardina1.red
icon

べつに条件を提示したからといって、道を外れないためのガイドを行ってはいけないわけではないです

15:43:43 @lo48576@mastodon.cardina1.red
icon

たとえばループをジャンプ命令でやってたとして、「ここに!ループ命令が!書いてあるだろう!!なんで使わないんだ!!!!」とか言いませんよ初心者に

15:45:01 @lo48576@mastodon.cardina1.red
icon

ループ命令を使うかジャンプを使うか別のことをするか、そういった選択は回答者が勝手にやることであって、「おっジャンプ命令があるじゃん、これ使えばおしまいだ」という「完了の予兆」に回答者自身が気付ける環境であってほしいという話です

15:46:01 @lo48576@mastodon.cardina1.red
2018-05-03 15:45:47 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

でも、チュートリアル的なもので、なんだっけ?><マイクロソフトがマインクラフトのキャラを題材に子どもにプログラミング教えるみたいなのでも「これを使うと便利になっちゃう!」方式だった気がするんだけど><

15:46:29 @lo48576@mastodon.cardina1.red
icon

その教材見てないのでわかりませんが、結局「プリミティブな操作」は既知なのでは……?

15:46:50 @lo48576@mastodon.cardina1.red
2018-05-03 15:46:34 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジの場合は「どんな命令があったらいいと思う?><」って言いそうなシチュエーション><

15:46:53 @lo48576@mastodon.cardina1.red
icon

なるほどなぁ

15:47:45 @lo48576@mastodon.cardina1.red
icon

命令は「そこにあるもの」というお気持ちなので、「欲しいもの」は(命令と粒度が一致するかはさておき)すべて「処理」であって命令とは別の話、という感じの想定です

15:48:03 @lo48576@mastodon.cardina1.red
icon

今そこに現実があって、その上で問題を解決したい、というモチベーションなので

15:49:06 @lo48576@mastodon.cardina1.red
icon

フレーム問題みたいだな

15:49:50 @lo48576@mastodon.cardina1.red
icon

現実の側を弄れるなら、それは基盤とするモノ自体が間違っているというか、弄れるもの含めて設計の対象であるべきなのであって

15:50:51 @lo48576@mastodon.cardina1.red
icon

少なくとも、今自分が行っている設計作業の手が絶対に及ばない領域と、そうでない領域を区別させてほしい

15:52:32 @lo48576@mastodon.cardina1.red
icon

たとえばヒイヒイ言いながら英語で何か書こうとしていたとして、「日本語でおkやで」と後から言われると、最初から言えや💢となるので、「言語は日本語か英語です」という「弄れる領域」(或いは「言語は英語限定です」という「弄れない領域」)を区別できないと自由に活動できない

15:53:40 @lo48576@mastodon.cardina1.red
icon

で、「日本語か英語です」と言われたうえで、敢えて「英語だけでいこう」という選択肢もあるわけで、領域を明確にすることは必ずしも選択の変化を強制するわけではない

15:54:00 @lo48576@mastodon.cardina1.red
2018-05-03 15:53:27 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

難しい><; 部品というものは部品が存在するために部品があるわけじゃなく、何らかの目的を果たす上位のモノを作るために必要になったので部品があるかも><

15:54:18 @lo48576@mastodon.cardina1.red
icon

その「目的」というのがトップダウンに与えられるのが好きじゃないかも

15:55:15 @lo48576@mastodon.cardina1.red
icon

「そこにあるソレを、使えるように使う」というので事を為すには十分なわけで(それが最適とは限らないけど)、「これは○○のためにあります」と言われても、はあそうですか……となる

15:55:43 @lo48576@mastodon.cardina1.red
2018-05-03 15:55:13 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

好きじゃなくても例えばソートアルゴリズムは少なくともソートするためにあるかも><;

15:56:00 @lo48576@mastodon.cardina1.red
icon

たとえばソートアルゴリズムにランダムな大小比較を代入してやればシャッフルになるかもしれないじゃないですか

15:56:39 @lo48576@mastodon.cardina1.red
icon

最終的な用途を決めるのはユーザであって、設計者の意図を忖度する必要はない(まあ最適なことをしようと思ったらいずれそれも必要になるけど、それはまた別のステージ)

15:57:08 @lo48576@mastodon.cardina1.red
2018-05-03 15:56:53 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

そりゃ具体的に必要にならなきゃ「そうですか...」になっちゃうでしょ!!><;っていうのが一番いいたいし、だからこそ「じゃあそれをするには何が必要?><」って方式に・・・><

15:57:45 @lo48576@mastodon.cardina1.red
icon

で、「○○がしたいです!そういう部品はありますか?」といちいち聞かないと「あります/ありません」の答えが得られないという対話的環境が非効率だ、という話です

15:58:15 @lo48576@mastodon.cardina1.red
icon

使えるものが列挙されていれば、「○○がしたいです!……なかった、まだ分割するか……」と自分で判断できるので

15:58:59 @lo48576@mastodon.cardina1.red
2018-05-03 15:58:39 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

目的無しに適当に組む事を設計とは言わない!><;

15:59:00 @lo48576@mastodon.cardina1.red
icon

部品の用途と設計の目的は独立です!

16:00:16 @lo48576@mastodon.cardina1.red
icon

たとえば整数乗算命令を高速な整数除算として使うこともできるわけで、「除算をしたいという私の目的」と「乗算機能を提供するという CPU 設計者の目的」は全く別です

16:00:26 @lo48576@mastodon.cardina1.red
2018-05-03 16:00:11 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

直接的にはそりゃそうだけど、設計であるプログラミングをどう教えるかっていう話では><;

16:01:11 @lo48576@mastodon.cardina1.red
icon

つまり「乗算命令を使って除算を実装しようとしている人を止めるか止めないか」という話であって、「ここに除算命令もあるけど乗算を使おう」というのもまた設計なのではと

16:02:13 @lo48576@mastodon.cardina1.red
icon

「除算がしたいんですけど……乗算しかないんですか?」と聞かれたとき初めて「ここに除算があるんですよ」と言えばいいのであって

16:02:32 @lo48576@mastodon.cardina1.red
2018-05-03 16:02:19 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

それはその通りだし、それってたぶんオレンジの教え方の方に近いじゃん・・・><

16:02:34 @lo48576@mastodon.cardina1.red
icon

そうですか?

16:02:44 @lo48576@mastodon.cardina1.red
icon

「使おう」と言ってるのはインストラクターではなく設計者ですよ

16:03:26 @lo48576@mastodon.cardina1.red
icon

あと「聞かなくても『ここに除算があるじゃん』を最初から知ることができるのが大事」というのが私の主張なので、その点が orange 氏とは違っていた気がしますが

16:03:49 @lo48576@mastodon.cardina1.red
2018-05-03 16:03:42 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

さっきの前提どうのの話だと「除算命令とか言う便利な物があるなら最初から言え!!」って言うからオレンジが「><;」ってなってるんじゃん><;

16:04:11 @lo48576@mastodon.cardina1.red
icon

それはインストラクターが口出ししろという意味ではなくて、「手元に一覧を渡してくれ」という意味です

16:04:52 @lo48576@mastodon.cardina1.red
icon

その一覧を吟味したっていいし、ざっと眺めて人に尋ねるのをメインにしてもいいけど、尋ねることを強制されるのは駄目

16:05:51 @lo48576@mastodon.cardina1.red
icon

ざっと眺めて尋ねなかった結果除算に気付かず、遠回りにも乗算命令を使おうとしたとして、それが不正解とは言えないのだし、それでいいのではと

16:06:38 @lo48576@mastodon.cardina1.red
2018-05-03 16:06:24 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

難しい><; 究極には全てを予め提示するみたいな事になっちゃってそれはおそらく不可能かも><

16:07:05 @lo48576@mastodon.cardina1.red
icon

その「全て」が、結局コンピュータアーキテクチャであるわけで、つまるところそのくらいも知らずにポヨグヤミンしようだなんて簡単にいくわけがないのではというお気持ちです

16:07:10 @lo48576@mastodon.cardina1.red
2018-05-03 16:04:49 monacaの投稿 mimoo@omochi.xyz
icon

このアカウントは、notestockで公開設定になっていません。

16:07:37 @lo48576@mastodon.cardina1.red
icon

そもそも料理は非同期・並行・並列と闇が揃っているので、プログラミングに喩えるにはあまりに複雑すぎる

16:09:38 @lo48576@mastodon.cardina1.red
icon

さんすうを知らない人に素因数分解を教えようとしたってしょうがない、いや可能かもしれないがそこまでする意味があるのか、という

16:09:56 @lo48576@mastodon.cardina1.red
icon

先にさんすうを教えなさい、という感想しか持てないし……

16:10:29 @lo48576@mastodon.cardina1.red
icon

べつに数論を教えなさいという話ではないんですよ、算数を教えなさいというレベルなんです

16:11:00 @lo48576@mastodon.cardina1.red
icon

コンピュータも同じことで、仮想的なモデルはそれ自体がある程度抽象化されているので、その先のハードウェアの知識には実は依存関係があまりない

16:11:19 @lo48576@mastodon.cardina1.red
icon

たとえばチューリングマシンを説明するのに歯車の形を説明する必要がない、といった具合です

16:11:54 @lo48576@mastodon.cardina1.red
icon

で、コンピュータアーキテクチャも、そうして抽象化によって現実と隔離されたレイヤーがあるわけで、その部分を教える必要はあるのではと思います

16:13:02 @lo48576@mastodon.cardina1.red
icon

たとえば一般的なものでは、メモリが整数で番号付けされるセルの一次元配列であること、 CPU が書き換えられるメモリの領域が最大で連続nセルであること、セルの中身は整数であること、などなど

16:13:36 @lo48576@mastodon.cardina1.red
icon

たとえばですが

16:14:02 @lo48576@mastodon.cardina1.red
2018-05-03 16:13:49 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジ的に料理に例えるのはなぜかというと、料理するのってレシピを見てその通りに単に作業するのも料理だし、トップダウン的にどう調理すれば目的の食べ物を作れるのか考えるのも料理だし、既存のレシピから脇道にそれたちょっとアレンジしても料理だし、みたいな例えに使えるから><

16:14:11 @lo48576@mastodon.cardina1.red
icon

上流から見るか下流から見るか、みたいな感じがする

16:15:01 @lo48576@mastodon.cardina1.red
2018-05-03 16:12:43 monacaの投稿 mimoo@omochi.xyz
icon

このアカウントは、notestockで公開設定になっていません。

16:15:16 @lo48576@mastodon.cardina1.red
icon

「秘伝のタレを作るためには、秘伝のタレとうなぎを使います」とか再帰

16:15:27 @lo48576@mastodon.cardina1.red
icon

まあこれだけだとブートストラップ問題が発生するけど

16:15:57 @lo48576@mastodon.cardina1.red
2018-05-03 16:10:38 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

16:15:59 @lo48576@mastodon.cardina1.red
2018-05-03 16:15:38 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

16:17:03 @lo48576@mastodon.cardina1.red
icon

そうして基底ケースと帰納段階と羃等性を説明できる

16:32:20 @lo48576@mastodon.cardina1.red
icon

とにかく記憶領域が小さくてつらい

16:32:49 @lo48576@mastodon.cardina1.red
icon

依存を辿ろうとすると、経路上のノードの子とかも展開することになるわけだけど、それだけであっという間に記憶が飽和する

16:33:41 @lo48576@mastodon.cardina1.red
icon

ので、とりあえず「これは絶対必要」というものを手当たり次第に用意していって、考えるべき領域の全体を狭めていく方式でやる

16:34:57 @lo48576@mastodon.cardina1.red
icon

あとこれは記憶のサイズとは別で、「頻繁に変更される記憶が苦手」というのがあって、たとえば「頭にシャンプーを使ったか」とかは毎日切り替わるフラグだし、「前回何を食べたか」とかは1日3回くらい切り替わるわけで、そういうのが本当に苦手

16:35:10 @lo48576@mastodon.cardina1.red
icon

あと日付とかも1日1回変わるので覚えられない

16:35:48 @lo48576@mastodon.cardina1.red
icon

で、これは過去だけでなく未来についても言えて、「次は○○をする」という記憶は作業切り替えごとに頻繁に変更されるものなので、これが本当に覚えていられない

16:35:57 @lo48576@mastodon.cardina1.red
icon

とにかくコンテキストスイッチが駄目です

16:37:23 @lo48576@mastodon.cardina1.red
2018-05-03 16:36:28 緋仙カエデ🎨の投稿 hisenkaede@pawoo.net
icon

このアカウントは、notestockで公開設定になっていません。

16:38:03 @lo48576@mastodon.cardina1.red
icon

たとえば教習所の道路を走ってて「次に左右のどちらに曲がるか」を、直線を走っている間に忘れたなどのエピソードがあります

16:38:18 @lo48576@mastodon.cardina1.red
icon

次どちらに曲がるかは頻繁に切り替わるので記憶できない

16:38:43 @lo48576@mastodon.cardina1.red
2018-05-03 16:37:23 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジは短期記憶がものすごく弱いかも>< だからこそトップダウン的な面もあるかも><(最終目的だけあってればいいので覚える事少ないかも><)

16:39:04 @lo48576@mastodon.cardina1.red
icon

ボトムアップだと「光に向かって進む」だけでなんとかなるので脳に優しい

16:39:30 @lo48576@mastodon.cardina1.red
icon

木を展開しなくて済むし、完成した部分のルートノードだけ覚えておけばどうとでもなるので

16:44:51 @lo48576@mastodon.cardina1.red
icon

図です

Attach image
16:45:28 @lo48576@mastodon.cardina1.red
2018-05-03 16:44:03 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

だいたいどっちの方に進めば着くのか?><とかはトップダウンかも>< じゃないと無意味にランダムに進んでるのと変わらないことに・・・><

16:46:04 @lo48576@mastodon.cardina1.red
2018-05-03 16:45:53 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

オレンジは、大きな目的(目標)から小さい目的(目標)に分けていく発想を指して、なんて言っていいのかわかんないのでトップダウンって言ってた><;

16:46:35 @lo48576@mastodon.cardina1.red
icon

私は必要そうな小さな機能を沢山用意していって、ある瞬間に「あとは組み合わせるだけやん」となって組み合わせて完成させます

16:46:58 @lo48576@mastodon.cardina1.red
icon

表現を変えるなら、必要なあらゆるコンポーネントを汎用のライブラリとして捉えている

16:48:28 @lo48576@mastodon.cardina1.red
icon

この実線部分が覚えていられないという話です

16:49:28 @lo48576@mastodon.cardina1.red
icon

目標までの具体的な経路(作業)を考えなくても大丈夫であることが私にとって重要です

16:50:00 @lo48576@mastodon.cardina1.red
icon

「どうせこれをやれば役に立つ」とか「これを作ってその上で問題を評価しなおそう」というのを繰り返していきます

16:53:19 @lo48576@mastodon.cardina1.red
2018-05-03 16:52:46 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

16:53:57 @lo48576@mastodon.cardina1.red
icon

深さ優先でやると、今のタスクが完了したときに親ノードを、親ノードが完了したときその親を、という風に思い出す必要があるじゃないですか

16:54:19 @lo48576@mastodon.cardina1.red
icon

つまり厳しいのは深さ優先で辿っているときの経路スタックです

16:54:59 @lo48576@mastodon.cardina1.red
icon

そもそも私は問題を分割した木の全体を見ない方法を求めています

16:56:25 @lo48576@mastodon.cardina1.red
icon

とりあえず葉ノードを作っといて、いけそうならそれらを抽象化してひとつの親ノードにまとめる、という風にすると、コンテキストを完全に消失したとき、それぞれの部分木のルートだけ見ればすぐにコンテキストを再構築できるので、その性質が欲しい

16:57:04 @lo48576@mastodon.cardina1.red
icon

別の言い方をすれば、いかに記憶に頼らず resume できるか、みたいな感じです

16:57:55 @lo48576@mastodon.cardina1.red
icon

べつにトップダウンで考えても、問題をもう一度解けば記憶に頼らずいけるかもしれないけど、そのためには全ての選択が必然である必要があるので、もし「どっちでもいいけどこうしよう」という選択が途中にあったら再現は困難になる

16:58:34 @lo48576@mastodon.cardina1.red
2018-05-03 16:58:24 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

16:59:08 @lo48576@mastodon.cardina1.red
icon

もう一方の木を作ったら、過去実装した部分が微妙に役に立たないかもしれないので(つまり「要らんコンポーネント」が唐突に発生する)

16:59:48 @lo48576@mastodon.cardina1.red
icon

まあそれはボトムアップでも同じようなものなんですけど、だからこそアプリケーションの一部ではなく汎用のライブラリとして独立させようとするわけです

16:59:54 @lo48576@mastodon.cardina1.red
2018-05-03 16:59:27 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

「あとは組み合わせるだけやん」ってつまり一番上の目標までの経路が見えてる状況じゃん・・・?>< ていうか組み合わせるってそれ設計だしその組み合わせはどう考えるの?><;(よく考えるとトップダウン的に考えてない?><;って言いたい><)

17:00:54 @lo48576@mastodon.cardina1.red
icon

べつにその経路は特定の記号的思考に基いて見極めているわけではないので(経験的に雑にやってます)(その程度でどうにかなる問題しか解いていない)

17:02:03 @lo48576@mastodon.cardina1.red
icon

というかこれは思考プロセスの問題なんですが、「できそうなことしか思い付かない」ので、逆に言えば「よし実装するか」となった時点でなんとなく思った通りにやっていけばできます

17:02:06 @lo48576@mastodon.cardina1.red
2018-05-03 17:01:22 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

すごく不思議に思ってるのは、らりおさんってなんかゲームつくるのにその為のライブラリ・・・を作るためのライブラリを作っ(って飽き(?))たって話書いてたじゃん?>< それものすごくトップダウン的な設計じゃん?><

17:02:51 @lo48576@mastodon.cardina1.red
icon

3D モデルデータを読むライブラリを作っていたとき、ゲームをどう作るというのは全く考えていなくて、「とにかく読む」「読んだデータには型が付くので、それを表示するのはまた別の話」という風にやっていましたね

17:03:30 @lo48576@mastodon.cardina1.red
icon

まあなんとなくフラフラ光のある方向へ歩いていけばどうにかなるようにはしていますが、途中でどこに寄る必要があるという中間目標を設定していないということです

17:04:07 @lo48576@mastodon.cardina1.red
2018-05-03 17:02:01 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

17:04:18 @lo48576@mastodon.cardina1.red
icon

私がやっているのはボトムアップですらないかもしれないw

17:04:42 @lo48576@mastodon.cardina1.red
icon

私は何を考えてコードを書いてるんだ……?

17:04:58 @lo48576@mastodon.cardina1.red
icon

記号化するとすぐ溢れるのであまり記号化したことがない

17:05:19 @lo48576@mastodon.cardina1.red
icon

何もわからんになった

17:05:46 @lo48576@mastodon.cardina1.red
icon

行き当たりばったりプヨグヤミン?

17:06:12 @lo48576@mastodon.cardina1.red
2018-05-03 17:06:06 えじょねこの投稿 ejo090@mstdn.nere9.help
icon

なんに使うかわからんけどとりあえず汎用的ななにかを作っとけば深さ優先探索のときの手間が省けるとかそういうのはちゃうんやろか

17:06:15 @lo48576@mastodon.cardina1.red
icon

それだ

17:06:20 @lo48576@mastodon.cardina1.red
icon

それです

17:06:32 @lo48576@mastodon.cardina1.red
icon

とにかく手持ちの leaf node を増やしていく感じ

17:08:08 @lo48576@mastodon.cardina1.red
icon

で、それっぽい leaf node を沢山用意していけば、そのうち「ではここに材料があります、混ぜます、完成です」みたいな滅茶苦茶浅い木になるので、組み合わせておしまい、みたいな

17:08:21 @lo48576@mastodon.cardina1.red
2018-05-03 17:08:12 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

それはそれで便利だけど設計ではないじゃん・・・><(ていうかスコープの大きさを変えるとそのそれぞれの行き当たりばったりに作った便利な物はどう設計してるのか?><という謎が・・・><)

17:08:24 @lo48576@mastodon.cardina1.red
icon

不思議ですよね

17:08:38 @lo48576@mastodon.cardina1.red
icon

自分でもどう設計しているのかよくわからない

17:09:31 @lo48576@mastodon.cardina1.red
icon

ミクロな視点では、型を沢山作り、メソッドを作り、組み合わせるときロジックを書く、という風な作業の再帰的な繰り返しになるんですけど

17:09:50 @lo48576@mastodon.cardina1.red
icon

問題をコンポーネント単位に分割するとき何を考えているのかさっぱり……

17:10:51 @lo48576@mastodon.cardina1.red
icon

たとえばいま ActivityPub の実装しようとしてますけど、 data types しか見てませんからね

17:11:09 @lo48576@mastodon.cardina1.red
icon

だいたい型が付けば勝利みたいな雑な考えがある

17:11:27 @lo48576@mastodon.cardina1.red
icon

アルゴリズムが苦手なのはそのせいだろ……

17:16:42 @lo48576@mastodon.cardina1.red
icon

@babukaru むしろデフォルトの PORTAGE_TMPDIR を /var/tmp/portage_tmpfs とかにしておいて、重いパッケージだけ個別に package.env とかで PORTAGE_TMPDIR="/var/tmp" などのようにするといいです

17:17:41 @lo48576@mastodon.cardina1.red
2018-05-03 17:12:38 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

「なんもわからんが適当にパーツを作ってみる」
は、実は
「おおまかな見通しだけ立ててとりあえず必要そうなものを実装しはじめてしまう」
では無ければ目標に対する部品じゃない気が><
つまりある目標に対する設計の外かも><

17:18:01 @lo48576@mastodon.cardina1.red
icon

「これどうせ必要やろ」の直観が実は問題の分割によって得られている可能性は否定できない

17:18:30 @lo48576@mastodon.cardina1.red
icon

まあ意識してやってないので直観としか言えないんですが

17:19:14 @lo48576@mastodon.cardina1.red
2018-05-03 17:19:05 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

17:19:50 @lo48576@mastodon.cardina1.red
icon

私の場合、作ったパーツが特定の目標専用にならないように作ることで、ライブラリとして独立させて価値を守るというようなことをやっていますね

17:21:10 @lo48576@mastodon.cardina1.red
icon

まあライブラリといっても公開するほどの規模にはならなかったりしますが、自分で全然関係ないコードを書くとき流用したりとか

17:21:37 @lo48576@mastodon.cardina1.red
icon

そもそも汎用的なコードを書いているときの方が“気持ちいい”ので……

17:24:43 @lo48576@mastodon.cardina1.red
2018-05-03 17:23:44 unaristの投稿 unarist@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

17:24:48 @lo48576@mastodon.cardina1.red
icon

わかる……

17:25:19 @lo48576@mastodon.cardina1.red
icon

「今回使うとも限らないんだけど、この型には絶対あるべきインターフェース」とかは実装してしまう

17:26:00 @lo48576@mastodon.cardina1.red
icon

「今そこにある完成品は、私があるべきだと思っている姿で存在している」という部品への信頼を持つために必要な過程だと思っている

17:26:41 @lo48576@mastodon.cardina1.red
icon

中身を忘れたとして、「どうせ私が思ったとおりのものがあるでしょ」で済ませられれば中身を見直す必要がないので

17:30:28 @lo48576@mastodon.cardina1.red
2018-05-03 17:25:24 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

・・・という事は、ボトムアップ設計する為に必要な部品を洗い出すって作業にはおそらくトップダウン的に考える必要があるはずかも><(じゃないと本当に暗闇で、何が必要なのかのヒントすらないという事になっちゃう><)

17:30:31 @lo48576@mastodon.cardina1.red
2018-05-03 17:29:22 orangeの投稿 orange_in_space@mstdn.nere9.help
icon

・・・なので、そういう言葉とは別に、設計というものは本質的にトップダウン的である(気がする><;) みたいな事が言いたい・・・><

17:30:46 @lo48576@mastodon.cardina1.red
icon

本質的にトップダウンであるというの、わからなくもないかもしれない

17:31:03 @lo48576@mastodon.cardina1.red
icon

そもそも私何かを作るとき洗い出しをしないので、設計をしているか怪しい

17:31:18 @lo48576@mastodon.cardina1.red
icon

なにせ金がかかりませんからね

17:37:33 @lo48576@mastodon.cardina1.red
2018-05-03 17:33:40 かるばぶの投稿 babukaru@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

17:37:38 @lo48576@mastodon.cardina1.red
icon

エヌベベアが悪そう……?

17:38:51 @lo48576@mastodon.cardina1.red
icon

あと logind seats あたりは systemd-logind と dbus あたりの話な気がします

17:42:04 @lo48576@mastodon.cardina1.red
icon

下流工程のコーディングができれば上流工程なんて勝手にやるようになるじゃん?という雑な考えをしていたので、最初から食い違っていた感はある

17:44:18 @lo48576@mastodon.cardina1.red
icon

小さな設計、「こう在るべき」という謎の経験的直観や「こうなると美しい」という雑な感想で書いているので全くアルゴリズミックでない

17:44:38 @lo48576@mastodon.cardina1.red
icon

日頃からなんも考えず書いていることが露呈してしまった

17:46:34 @lo48576@mastodon.cardina1.red
icon

「コードを眺めてると……ほら……見えてきただろ?」みたいなことやってるからなぁ……

17:46:42 @lo48576@mastodon.cardina1.red
icon

産業レベルに達していない……

17:58:47 @lo48576@mastodon.cardina1.red
icon

そろそろ master 追従するかなぁ

18:10:04 @lo48576@mastodon.cardina1.red
icon

@babukaru df コマンドで使用量見られます

18:10:50 @lo48576@mastodon.cardina1.red
icon

大きなビルド前は
sudo mount -o remount,size=8500M /var/tmp/portage_tmpfs
などして容量大きくしてます

18:14:45 @lo48576@mastodon.cardina1.red
icon

@babukaru
\df | awk '/^tmpfs/ { sum += $3 } END { print sum }'
などするとキビバイト単位で容量とれますね

18:17:31 @lo48576@mastodon.cardina1.red
icon

\df | awk '$1 == "tmpfs" { sum += $3 } END { print sum }'
の方がよかったかも(まあどっちでもいいや)

18:18:59 @lo48576@mastodon.cardina1.red
icon

@babukaru tmpfs は使った分しかメモリを消費しないはずで、サイズとは最大量のことだったはずなので、それぞれのサイズを占有しているというわけではないはずです

18:20:44 @lo48576@mastodon.cardina1.red
icon

tmpfs は本当に容量が動的なのか - naoyaのはてなダイアリー
d.hatena.ne.jp/naoya/20060217/

18:23:00 @lo48576@mastodon.cardina1.red
2018-05-03 18:22:12 かるばぶの投稿 babukaru@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

18:24:30 @lo48576@mastodon.cardina1.red
icon

portage について言えばその通りで、最終的にビルドにどれくらい必要なのかは事前には不明なことが多いので、おおよそ4〜5GB くらいはデフォで割り当てておくといいです (それより大きな容量が必要だと、だいたい事前にディスク容量チェックをしてくれるので ビルド前にエラーが出る)

18:25:19 @lo48576@mastodon.cardina1.red
icon

ビルド時にメモリが厳しくなるくらいクソデカになるやつらだけ package.env で PORTAGE_TMPDIR を変えると楽です

18:25:32 @lo48576@mastodon.cardina1.red
icon

あと df は df -h すると幸せになれます

18:25:51 @lo48576@mastodon.cardina1.red
icon

-h は --human-readable の -h です

18:26:22 @lo48576@mastodon.cardina1.red
icon

human-readable な -h が使えるコマンド、他には du や ls -l などがそうです

18:28:03 @lo48576@mastodon.cardina1.red
icon

--block-size のデフォルトは 1024 バイトなので、 -k は単体では無意味ですね

18:28:58 @lo48576@mastodon.cardina1.red
icon

これはオプション上書き用で、
alias df='df -h --block-size=4K'
などしている場合に df -k すると block-size を 1K に戻せる、という風に使うものかと

18:29:32 @lo48576@mastodon.cardina1.red
icon

gcc は tmpfs でビルドすると SEGV とかで死ぬことがあります(経験談)

18:29:48 @lo48576@mastodon.cardina1.red
icon

SEU を疑っている(が、メモリ故障の可能性もあるにはある)

18:43:25 @lo48576@mastodon.cardina1.red
2018-05-03 02:03:30 bute🎨🔞の投稿 bute@pawoo.net
icon

このアカウントは、notestockで公開設定になっていません。

19:10:15 @lo48576@mastodon.cardina1.red
2018-05-03 19:08:18 二次元美少女画の投稿 CuteGirl_2D@wxw.moe
icon

このアカウントは、notestockで公開設定になっていません。

19:14:43 @lo48576@mastodon.cardina1.red
2018-05-03 19:10:58 まさらっきの投稿 masarakki@friends.nico
icon

このアカウントは、notestockで公開設定になっていません。

19:14:44 @lo48576@mastodon.cardina1.red
2018-05-03 19:12:15 ヒポポタマスジの投稿 Otakyuline@mstdn.maud.io
icon

このアカウントは、notestockで公開設定になっていません。

19:14:58 @lo48576@mastodon.cardina1.red
icon

ボールを二つ持って serve するんですねわかります

19:15:02 @lo48576@mastodon.cardina1.red
icon

???

19:17:45 @lo48576@mastodon.cardina1.red
2018-05-02 10:07:05 れおのらっ!の投稿 leonora@otogamer.me
icon

このアカウントは、notestockで公開設定になっていません。

19:49:23 @lo48576@mastodon.cardina1.red
icon

本の虫: LLVMで5番目に貢献の多い開発者、LLVMの最近のSJW運動に反対して開発をやめると表明 - cpplover.blogspot.jp/2018/05/l

うわ

LLVMで5番目に貢献の多い開発者、LLVMの最近のSJW運動に反対して開発をやめると表明
19:52:28 @lo48576@mastodon.cardina1.red
23:42:04 @lo48576@mastodon.cardina1.red
icon

原理主義者なので、音楽の定額ストリーミングサービス(ダウンロード不可)は DRM の部分的な復権であると捉えているし、絶対に使いたくない