ソースコード読みの参考書が必要なんじゃないか?
先日勉強会で、tensorflowのstatic_rnnのコードをちょっと読んでみよう、となった。 で、自分が読むと早すぎるので、他の人がプロジェクタに移しつつ自分がちょっと読み方を助言しよう、となった。
で、この辺飛ばしてこの辺だけ読んで、こういう感じになってますね、とぱっと見で説明すると、なんでそこは飛ばせるのか、とか、どうしてこの関数の場合は定義を確認するのにこっちは名前から推測するだけなのか、とか、そういう話になった。
そこで思った事だが、ソースコード読みの参考書というのはなんで無いのだろうか?
語学の読解の参考書との比較
ソースコードの読み方は、みんなソースを読んで覚える。これは語学で例えると、ネットで新聞とかブログを読め、という話に思う。
でも普通、読解って最初は参考書でやるよな。 語彙の注とかついてたり、文法の解説があったり、和訳がついていたり。 で、分量も手頃な奴。 これに相当するプログラムの本ってあんま見た事無い気がする。
プログラムで対応する本を作ろうとすれば、適度な長さのソースコードがあり、それの解説があり、さらに言語の文法やAPIなどの解説がある、というのがそういう物になる気がする。
MINIXカーネル入門などの、ソースと解説がついている本などはそれに近いと言えるが、読解の練習という訳でも無いよな。
語学の読解もソースコード読みも、読む訓練をしないと出来るようにはならない。 だからある種の問題集的な物が要るように思う。
ソースコード読み参考書に必要な物
まず言語の文法要素について、幾つか解説がいるだろう。 プログラミング言語の入門書では無いが、初心者が必要としそうな所は少し詳しく解説しておく。これは語学の読解の初級用にある語彙解説や文法解説と同じようなイメージ。
まずは短めのソースコードから始め、だんだんと長くなっていく。
最初の参考書は、一文一文読み方を指南すべきだろう。 まずどこから読むのか。それは何故か。 そして次にどこを読むのか。この行は何故最初は読まないのか。これは定義を確認すべきなのか、名前から予想すべきなのか。 先を読まずにまず予想する大切さ、などなど。
一つ一つ理由と一緒に読み方を説明し、それを読者が再現出来るようにする。
で、説明をした後には同じ方法で読めるような練習問題とそれに付随する解答をつける。
後半には長くなってきて、どのファイルから読むかをどう決めるか、いかに中を見ずに情報を得るか、といった要素が入ってくる。 こうして幾つか主要なオープンソースのコードベースを実際に読んでいく。
形態は本?サイト?アプリ?
結構良い気はするんだが、微妙に本にしづらいな。 まぁソースコードはここから落として見ながら読んでください、でも良いのだが。 アプリでも良い気はちょっとする。 ソースコード読みトレ!みたいなアプリ。 どうだろう?