読者です 読者をやめる 読者になる 読者になる

知識のブラックホール

本とかオーディオブックとか。知識収集活動全般。

『プログラミングの心理学』をコツコツと読み進める試み その12

読書メモ プログラミングの心理学

相変わらず続き。

audiobook.hatenablog.com

『第12章 プログラミング言語の設計原理』

プログラミング言語について、心理学的な面から生産性への影響と概観しようとする章。その試みは成功していると思う。

『一様性』

一様性の原則=Rubyでいうところの「驚き最小の原則」?

初期のFORTRANにおいて、配列のインデックスとしてKを符号なし整数とするときK-21は許容されるが、 21-Kは許容されないらしい。 あくまでも"初期の"言語仕様なんだけど、プログラマを臆病にさせるには十分すぎる。これがダメだとすると、他のケースもダメなのか?と、エラーメッセージを拝むくらいなら無難な記法で行こう、と考えたくなるのが人情というもの。

なるほど確かにプログラミング言語プログラマの心理に影響を与えている。

著者の言う一様性というのは「同じものは、どこにあらわれても同じことする」ということらしい。まさにRuby界隈でいうところの「驚き最小の原則」である。

言語に制限事項がいくつかあると、プログラマは他にもあるのではないか、と萎縮してしまう。

あまりにもたびたび「いけません」といわれた子どもと同様、一様性の欠けた言語を使っているプログラマは新しいことを試してみようという気を無くしがちである。

なるほど。同感。何度もコンパイラからエラーメッセージをや警告メッセージを浴びせられると、どうしていいかわからなくなる時がある。 プログラムが思い通りにいかないときもそうだし、いわゆる成功体験がないと挫折してしまうだろう。

一様性のもう一つの重要な側面は、構文上同じ形をしたものは違う文脈に現れたときにも同じ意味を持つことが望ましい、というものである。

これは重要。PL/Iというプログラミング言語のカッコの数で挙動が変わる例が紹介されているが、現代プログラマの感覚からすると狂気の沙汰である。

『簡潔性」

プログラミング言語における省略(短縮系)についての話題。いろいろと例が挙げられている。 変数名のつけ方からプログラミング言語の構文として、省略時の解釈について述べている。 要約すれば、ある程度頻繁に使えるのでないと意味がないということか。

『局所性および逐次性』

ここでいう局所性というのは、プログラミング言語における変数の有効範囲と、プログラムのソースコードの字面上の記載箇所の話がごっちゃになっている。ソースコードの一箇所に変数定義が集中していた場合にどうなるか、あれこれ思索している。 ソースコードの変数の登場箇所のそばに変数定義(初期化)があったほうが、プログラムを読む上で有益だとか云々。

正直、このあたりの話は近代プログラミング言語はとっくに解決していると思う。

『伝統と革新』

プログラミング言語の設計において、既存のプログラミング言語との類似性をどこまで保つべきか、それとも自然言語、あるいはプログラマの思考との調和をどうするかについて述べている。

プログラミング言語の構文において、ある程度のルーズさ、同じ意味を持つ複数の構文の存在が有益だとも主張している。 また、言語同士の差異と、プログラミング言語の習得の容易さへの影響を論じている。

『専用言語、多目的言語、おもちゃ言語』

この種の制約が、非利用者にとって自明な割には利用者にとって自明でない理由の一つは、紛れもなくプログラミング言語が、思考過程を型にはめるという性質を持っていることによる。

これは自然言語についても同じようなことが言えるんではないかなと思う。数字の数え方とか、単数・複数の区別とか。

『まとめ』

プログラミングは数学の一分野ではなく、人が能動的な役割を、そしてコンピュータがしばしば受動的な役割を演ずる、特異なな形式を持った情報交換なのだ。

時々プログラマおよびシステム管理者はコンピュータの下僕ではないかと思う時がある。もっと言えば、雇用主とコンピュータの二重の下僕ではないか、暗い気分になることがある。こういう文章を見ると、少なくともコンピュータの主人は(プログラミング言語を使いこなす限りは)自分たちだと再認識できる、ような気がしている。

書いてあることは至極まっとうなんだけど、どうもこの章は面白みに欠ける話に思える。 1970年代に書かれた文章であることを考えると、実はすごいことなんだけど。

例としてあげられている言語が古いというのが一番大きな理由かな。

『第12章 「プログラミング言語の設計原理」へのコメント』

著者の思い出話。意外なことにワインバーグ氏はプログラミング言語の設計に関与したこと一度や二度ではないらしい。 ITコンサルタントの草分け的な存在というイメージが強いだけにびっくりした。

1970年代に東ヨーロッパを訪れたとき、私は「プログラミング言語の帝王」である、と紹介されてショックを受けた。

よほど成功したプログラミング言語の設計者でもこんな紹介はされないだろう。

あとは13章とエピローグを残すだけ。もうしばらく続きます。

プログラミングの心理学―または、ハイテクノロジーの人間学 25周年記念版

プログラミングの心理学―または、ハイテクノロジーの人間学 25周年記念版