作者: 機械伯爵
日時: 2007/10/11(17:44)
 機械す。

『ソースコードの読み方、教えます。』
> → http://www.itarchitect.jp/beginners/-/39361.html
> -----
> 従来のプログラミングの教育では、「プログラムを書くこと」は教えますが、
> 「プログラムを読むこと」はほとんど教えてきませんでした。

 それは理由があるからで……

> 英語に例えれば、英語の本はまったく読まずに、英作文ばかり行っている
> ような状況です。英語を読む練習をすることなく、英作文ができるように
> なるでしょうか。おそらく無理ですよね。従来のプログラミング教育では、
> その無理なことをやっていたわけです。 

 英文に例えてどーする(汗)

 プログラミング言語に自然言語を比喩として使うのは、とんでもなく危険を
伴うような気が……

 この文書のさらに前の部分を引用しますと……

<引用>
プログラミング言語も1つの言語です。自然言語とまったく同じではないにしても、
それをマスターするためには、かなりの量のインプットが必要でしょう。プログラ
ミング言語の場合のインプットは、プログラム(コード)を読むこと、すなわち
コード・リーディング(Code Reading)となります。
</引用>

 このあたりが怪しいのですが、もちろんインプット無しにアウトプットしよう
というのは無茶ですが、少ないインプットで大量のアウトプットが可能なのも
プログラミング言語の特徴ではないでしょうか。

 これは、プログラミング言語を「数式や法則」と見るか、「言語」と見るか
でえらく違います。

 Perlのラリー・ウォールは多分言語学者だから言語派でしょうし(違うかも)
Forthのチャック・ムーアはコードを読む/読ませるのが大っキライでしたね。

 私はPythonistaなので、コードを読むことについての意義はもちろん否定
しませんが、この言語が「後で読める」を強く意識して設計された言語であ
ることを考えるに、「そもそも読めない/読みにくい」ものである、という
逆説的な説明が通用するのではないかと思うのです。

 Smalltalk のようなイディオム集を習得したり、アルゴリズム教本や
デザインパターン本(ああ、私は一番古い訳のしか持ってない)を読む
のはもちろんためになりますが、他人様のコードを読むのは、必要に駆
られて、コードの原野を文字通りハックしていく時くらいじゃないでし
ょうか。

 ですから、いろんな意味でコード解析する必要性がある人がコードを読む
のはもちろん必要ですが……入門者には不要ではないかと私は思うのですが。

 人間が読むためのものは読むことに意味があるでしょうが、所詮機械に食わせる
だけのエサを人間が食せば、食中毒になるかも(笑)

> んで、紹介されている翻訳本もある本の本家(英語ですw)にpdfがあるのですが、
> → http://www.spinellis.gr/codereading/
> ・Chapter 2: Basic Programming Elements
> 
> ...本当に"読み方"について書いてある(^o^)すてき
> 
> この路線がいいのかな?と思いますた。

 もちろん、コードを読むことも必要ですが、中〜上級者向けですね。

 英語の学習に例えるなら、良書を選んだり、学習用のコードを選んだりする必要
があるかもしれませんね。

※野のコードを読むのは、英語の勉強用に、Monty Pythonのスケッチを読むよーな
 モンです。いっぺん通り書けてからで十分、と私は思うんです。

※ちなみに学習用に読むなら、Pythonのライブラリのコードがお勧め。

 /機械伯爵/