Skip to content

External Entity

2022/10/16: 名著を盾にするな

「計算機プログラムの構造と解釈」(以下、SICP)を読んでいる。最初は和田先生の訳を読んでいたが、計算機科学と英語の両方に堪能な真鍋氏1の訳の方が評判が良く、何よりPDFで配布されていて紙で欲しくなったらいつでも簡単に印刷出来ることからそちらに切り替えた。但し、演習問題の答えは和田訳の方にしか無いのでたまにそちらを参照している。

何故今更SICPを読んでいるかという個人的な動機はどうでも良いし、正直言って具体性を含む動機は多分無いんだと思う。「だれそれが推奨していたから読んだ」とか、「無料で読めるから読んだ」とか「そこにSICPがあったから読んだ」とかその程度の理由だ。特に2つ目の理由を採用した上で、もし金に困っていなかったり図書館にあるなら、(Schemeとは違って)現代的な言語で現代的な内容を扱っている本を読めば良いと思う。それでもSICPを選んで読んでいる理由は「言語に依存しないプログラミングの要素を学ぶ」ためだ。

パラダイムや好き嫌い2等によって、プログラミング言語間にはあらゆる差異が存在する。だが、それらの共通点を括りだして「プログラミング」という概念を再構成した時に残るものは存在するはずで、そういうものを学ぶ点では簡易な仕様3であるSchemeを扱うのは理にかなっていると思う。

簡単な例を挙げる。いつぞやの刺し身にたんぽぽを乗せる仕事がタイトルに含まれたクソ長いブログ記事において「for文をアトミックなものとして見ていて条件等の抽象化が出来ていない」という事が紹介されていたが、そういう事を防ぐには様々な便利な構文の代わりに原始的だが抽象性が保たれている文法を用いるのが良いのではないかと思ったりする。

そう言えば大学院の関数型プログラミングの講義でHaskellを扱ったが、Cライクな言語を書いている人間が尽く脱落したのを覚えている。「俺の知っているプログラミングではない」とかそういう事をほざいていた気がするが、多分そういうやつはそもそもプログラミングについて何も知らなかっただろう(そういう意味ではそもそも知っている事が空集合なのでこの発言は真になるのだが)。

なお、講義が悪かった可能性については真っ向から否定したい。個人的には別にHaskellに限らず関数型言語を書いた事が殆ど無いのに講義は楽しかったし、課題はおそらく満点だったし(ペーパーテストは微妙だったが)、プログラミング自体で詰まる事も無かった。講師は「簡単ですね」を口癖のように講義中に言っていたが本当にそう思うし、これは俺以外の人間でも同様の感想を聞いている。

よって、ただ単純に脱落した受講者が努力不足だったか、抽象という言葉を知らなかったか、プログラミングが特定の言語やパラダイムについて固定化されていたというだけな気がする。私は非常に性格が悪い(特に今日は機嫌も悪い)のでこういう事を言ってしまうが、「情報系の『大学院』にまで来てるのに抽象性が脳味噌に実装されていなかったり、プログラミングについて凝り固まった像を抱いていたり、素養や能力が無かったりするのにここまで来てしまって大丈夫なのか」とすら思えてしまう。


むしゃくしゃして書いた。割と溜飲は下がったが敵性存在の消滅までには至っていないので修了するまでここ最近のこういった事に関連する陰鬱は晴れないだろう。

1

そういえば真鍋氏の日記は毎日読んでいる(し、その度に家庭を持つ気が無くなる良い薬になる)

2

そういう場合、大抵は全く書いていない事が原因なので実際書いてみるとヘイトが薄れる事もある。もちろんヘイトが更に増す場合もある

3

勿論、簡易な仕様であることは良い言語の必要条件かもしれないが十分条件ではないし、更に書きやすい言語である事と同値でない。糖衣構文という概念が存在する以上、構文解析のコストを犠牲にしてでも書きやすくしたいという需要は存在する