プログラム初心者がGWに読むとよいんじゃないかなぁという書籍5冊

2012-04-26 技術書

相当久しぶりになってしまいました。
気づけばWebエンジニアの端くれです。とはいえ研修中の身ですが。
ケヴィン・ケリー氏の書評まとめも続き書かないとですね……

さて、もうすぐGWということできしださんの「4月にプログラム始めた人がゴールデンウィークに積んでおく本」に乗っかって、過去に読んだ技術書の中で「これは!」ってのも挙げておきたいと思います。
ま、まだ仕事でプログラムを書いたことがあるわけではないので実務に即した本ではないでしょうが、自分が初心者の頃に読んだ本を振り返って、最近プログラミングを始めた人の参考になれば、程度に。
とはいえもともとWeb系はそこまで詳しくやってなかったので、プログラムとかオブジェクト指向とかの本中心です。

そもそもプログラムって何?

プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識
プログラムはなぜ動くのか 第2版 知っておきたいプログラムの基礎知識 矢沢久雄

日経ソフトウエア 2007-04
売り上げランキング : 2050

定番ですが、「プログラム書けって言われたけど結局プログラムって何? どうして動くの?」という人にオススメする本。
プログラムがどうして動くのかを、基礎の基礎からしっかり解説しています。
これを読んでおけば「C言語のポインタがわからない! 詰んだ!」ということはないはず。
最近だとPHPだのJava Scriptだのでローレベル(よりコンピュータに近いレベル、別に低レベルという意味ではない)なことを考えなくてもプログラミングできてしまいますが、やっぱりプログラムする人は知っておいたほうがいいだろう知識が満載です。
ちなみに同シリーズで「コンピュータはなぜ動くのか」「ネットワークはなぜ繋がるのか」なども良書。
特に後者はネットワークに携わるならぜひ読んでおくべきだと思います。

アルゴリズムなんて難しくてつまんない!

マッチ箱の脳(AI)―使える人工知能のお話
マッチ箱の脳(AI)―使える人工知能のお話 森川 幸人

新紀元社 2000-12
売り上げランキング : 38807

人工知能のアルゴリズムを、マッチ箱など身近なものでシミュレーションしながら体感できる本。
実務で役立つアルゴリズムではないですが、「こんな面白いことができるのか!」という興味を持てるんではと思います。
ちなみに著者は「アストロノーカ」「ウゴウゴルーガ」などに関わったゲームクリエイターの森川幸人氏。
アストロノーカは遺伝的アルゴリズムがバリバリに使われているので、興味を持ったらこちらをプレイしてみては(笑)

オブジェクト指向の入門に

憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門 (DDJ Selection)
憂鬱なプログラマのためのオブジェクト指向開発講座―C++による実践的ソフトウェア構築入門 (DDJ Selection) Tucker

翔泳社 1998-05
売り上げランキング : 101511

かなり古い本の上、C++というWebエンジニアには縁遠い言語ですが……オブジェクト指向に関して、大変わかりやすくまとまっています。
特に、なんでオブジェクト指向で作るのか、どういう点で嬉しいのか、そのためにどういうことをするのか、といったふうに、押し付けではなく理論的に説明を進めてくれるのでとても読みやすいです。
全くの初心者より、ある程度開発してきたけどオブジェクト指向に慣れないわ―、って人向け。

オブジェクト指向はなんとなくわかるけど、どう設計すればいいのさ……

はじめて学ぶUML 第2版
はじめて学ぶUML 第2版 竹政 昭利

ナツメ社 2007-04-24
売り上げランキング : 53676

オブジェクト指向設計言語UMLの入門書。
ぶっちゃけ最近使われているのかわかりませんが、流し読みする程度でも「こういう点に着目して設計するのか」というのはなんとなく感じれるかと思います。
あと、クラス図とかユースケース図とかシーケンス図とかはちょっとした説明でもよく使われるので、「こういうものがある」と知っておくだけでも有用です。
使わないとなかなか覚えられないので、ある程度慣れたらUMLを使った設計入門とかに進むと良いかと思います。

最近流行りの関数型言語に触れてみたいなー。

プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~
プログラミング in OCaml ~関数型プログラミングの基礎からGUI構築まで~ 五十嵐 淳

技術評論社 2007-11-29
売り上げランキング : 192238

まぁ、OCamlプログラマとしては入れざるを得ない。
定番のOCaml入門書です。
「普通の」プログラミング言語とは大分勝手が違うので、初めて関数型言語に触る人は戸惑うんじゃないかと思います。
が、慣れると型推論機構は非常に強力ですし、関数を引数として渡す手法は手続き型言語でも便利に使えます。
あと割と真面目な話、PHPやJava Scriptからプログラミングに入ってきた人はあまり型を意識せずにプログラムを書いてると思うので、OCamlに限らず片付けが厳しい言語を触って、型を意識する習慣をつけるとよいんじゃないかと思います。

というわけで5冊紹介しました。
最後に、具体的な書籍ではないですが、「幅広くコンピュータの知識を学びたい」「過去の知識を復習したい」という方は、IPAの基本情報技術者試験の参考書を古本屋で買ってくると幸せになれると思います。
十分スキルがある人は応用情報でもいいんですが、とりあえずこの手の参考書というのは幅広い情報がわかりやすくまとまってますし、載ってることがそんなに大きく変わるわけじゃないのに数年経つと激安になったりするので、コストパフォーマンスは相当高いです。

さて、次の記事では自分がGWに読みたい本をまとめたいと思います。
そちらは自分の仕事に関するWeb系の書籍を中心にする予定です。