「プログラミングの基礎」

前回書いた通り、「最新コンパイラ構成技法」を読む途中で ML 習得の必要性を感じて OCaml を始めたわけだけど、今やすっかりハマっている。
「最新コンパイラ構成技法」については第二部をある程度読み終えて(いやこの二部は実際すごくイカしてる)、Ocaml をある程度使いこなせるようになったらまた第一部の続きから自分でもコンパイラの実装に挑戦しようと思っているところだ。

ということで、「プログラミングの基礎」という本を購入し、Ocaml の単純な記法とアルゴリズムの組み合わせの素晴らしさや難しさに一喜一憂しているのが現状。
ところでこの「プログラミングの基礎」という本はホントに非の付け所がないほど素晴らしい。プログラムを組む際の指針として必要なことはだいたいこの本から学べるんじゃないだろうか。

プログラミングの基礎 ((Computer Science Library))

プログラミングの基礎 ((Computer Science Library))

いわゆる文系プログラマにもオススメ。
今まで必要性を感じずにすっ飛ばしてきたアルゴリズムという部分がこの本のテーマの一つ。一般企業向けのSIをやっていると高度なアルゴリズムが重要になる局面って少ないんだよね。もちろんBIなんかが絡んでくると途端にその重要性はアップするんだけど、どっちかというとデータを入力し、集計してどっかに出力するっていう単純なロジックを組み上げていくほうが多い。もちろん技術的に難しいところもあるけど、たいていは余裕をもってクリアできる範疇だったりする。だからSI企業の募集要項ではどの言語、どのDBを扱えるか、フレームワーク使ってWEBアプリ作れるかっていう程度しか指標にならない・・・。

でもホントはそういう、きっとどこかで誰かが全く同じものを作ってるんだろうなっていうような部分を超えて、新しい価値を生み出していくっていうのが重要なんじゃないか。例えば Google の検索技術みたいなね。確かに最初はアイデア勝負というのは認めるし、アイデアって実際ものすごく大切なんだけどそれが高度な技術の延長上にないのであればそれは実は資本勝負にすぎず、後発の資金力のある企業に飲み込まれてしまうだろう。

その高度な技術を伴った新しい価値を生み出す重要な基礎力の一つがコンピューターサイエンス。
コンピューターサイエンスとはプログラミングと様々な「学」が合流する部分にあると自分では捉えている。その「学」とプログラミングをくっつける糊の役割をしてくれるのが数学(これも学なわけだけど)で、だからこそ自分は数学を今必死にやっている。
数学を学んでいくためにはかなりの労力を要する。小説と違って数学の本を読んでいくのにはかなりの時間がかかって、たとえばたった半ページを理解するのに丸一日、もしくはそれ以上かかったりというのがザラだ。
たびたび、自分の頭の悪さに思いっきり辟易しながらもゆっくりとその歩を進めている途中である。