アルゴリズムとデータ構造

アルゴリズム本の定石といえばNikulaus Wirth著(片山卓也 訳)「アルゴリズム+データ構造=プログラム」だと思う自分は、この本と同じようにこの業界では古典の部類なんだろうな。Pascal*1で書かれたこの本で、みっちりと勉強させられました。特にアルゴリズムの効率、という考え方は今も役だっています。だからみんなに読んでもらいたいけど、絶版。その第二版として出版されたのが次の本。

アルゴリズムとデータ構造

アルゴリズムとデータ構造

第一版との違いは

  • 使用されている言語がPascalからModula-2*2になった。
  • 第一版の第五章「言語構造とコンパイラ」が削除されている
  • 出版元が日本コンピュータ協会から近代科学社になった。

といったところかな。しかし日本でMudula-2使ったことある人ってどのくらいいるんだろう。PascalはTurbo Pascalとか一時期それなりのシェアがあったし、その後Delphiでに受け継がれていった。今でもDelphi経験者は探せば見つかる。「どうせ書き直すならC言語にしてくれればよかったのに」と思うけど、C言語開発者の一人であるBrian W. Kernighanは”Why Pascal is Not My Favorite Programming Language”という論文で PASCALを批判していたからWirthには無理な相談だろう。そんなわけで、今勧めるとしたらこれかな。やっぱ古典の部類だけど。

アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)

アルゴリズムとデータ構造 (岩波講座 ソフトウェア科学 3)

今どきのオブジェクト指向ではクラス設計とかデザインパターンとかを論じる本が多いけど、ぶっちゃけ最後はメソッドをどう実装するか?アルゴリズムの中核が書かれるのはメソッドの中。それがヘタレな出来だと、もうどうしようない*3。だからボトムアップ的だけど、こういう本でアルゴリズムについてちゃんと勉強する機会があってもいいと思う。しかし現実は新卒にこの辺を叩き込む時間的な余裕はなく*4、通り一遍の導入教育後、最前線に配置されてしまう。そうなると「アルゴリズムってなんですか?今流行のスイーツですか?」と言いかねない人が出てくるわけだ。うつだね~。

*1:この言語はNikulaus Wirth自身が設計したもの

*2:これもNikulaus Wirth自身が設計した

*3:それでもカプセル化されていれば、少ないコストで差し替え出来るというのはオブジェクト指向のメリッだったりするw

*4情報工学系の学部卒ならそれなりに理解してるだろうけど...