蛭子能収先生、それは違いますだ

 ⇒東大の「産業総論」で露呈 日本人の知力崩壊が始まった - ビジネススタイル - nikkei BPnet

コンピュータはかけ算すら足し算の繰り返しとして計算する。そういう数学の基礎中の基礎をちゃんと理解しているかどうかが最も重要なのだ。いいかえれば小中学校時代に算数・数学の基礎をしっかりやらせるかどうかが決定的に重要なのだ。

 蛭子能収先生、それは違いますだ。
 これを大学の一、二年生の教科書に使える先生が少ねーからですだ。

cover
計算機プログラムの構造と解釈: ジェラルド・ジェイ サスマン,ジュリー サスマン,ハロルド エイブルソン,Gerald Jay Sussman,Julie Sussman,Harold Abelson,和田 英一
 素人評に「翻訳がひどい」が多いけど、大丈夫です。
 英語が読めれば無料で読めます⇒Structure and Interpretation of Computer Programs
 ついでに。
 参考⇒Javaスクールの危険 - The Joel on Software Translation Project

1900年には、ラテン語ギリシア語は大学で必須科目だった。それが何かの役に立つからではなく、教養のある人間に必須なものだと考えられていたためだ。ある意味で私の議論は(あの4人のような)ラテン語支持者の議論と違わない。スコット・ベイカーが書いている (http://www.promotelatin.org/whylatin.htm)。「ラテン語は精神を鍛える。記憶力を鍛える。ラテン語の文章を解読することは、思考の訓練であり、とても知的なパズルであり、論理的思考のためのよい入門になるのだ」。しかし今ではラテン語を必須科目としている大学は1つもない。ポインタや再帰コンピュータサイエンスにおけるラテン語ギリシア語になるのだろうか?
 
ポインタを使うプログラミングは今日書かれるコードの90%には必要とならず、製品コードにおいてははなはだ危険なものであるということは素直に認める。その通りだ。そして関数プログラミングは実務ではほとんど使われていない。それも認める。
 
しかしそれでも、最もエキサイティングなプログラミング仕事ではこれらは重要なものなのだ。たとえばポインタなしにLinuxカーネルで作業することはできない。Linuxのコードを1行も理解することはできず、実際ポインタの理解なしにはどんなオペレーティングシステムのコードも理解できない。
 
関数プログラミングを理解していなければ、GoogleをあれほどスケーラブルにしているアルゴリズムであるMapReduce (http://labs.google.com/papers/mapreduce.html)は発明できない。

 しかしポインタと再帰の明らかな重要性以上に重要なのは、これらの学習から得られる精神的な柔軟さと、これらを教えている授業からふるい落とされないために必要な精神的態度が、大きなシステムを構築する上で欠かせないということだ。ポインタと再帰には、ある種の推論力、抽象的思考力、そして何よりも問題を同時に複数の抽象レベルで見るという能力が要求される。そしてポインタと再帰を理解できる能力は、優れたプログラマになるための能力と直接的に相関している。