プログラミングの基礎 ((Computer Science Library))
- サイエンス社 (2007年3月1日発売)
- Amazon.co.jp ・本 (270ページ)
- / ISBN・EAN: 9784781911601
感想・レビュー・書評
-
とても面白い本だ。読んでいてワクワクするような本を久々に読んだ。タイトルは『プログラミングの基礎』だが、これはプログラミングについて多少とも学問的に学んでみたいという学生向けの本。仕事でプログラミングをすることになった人が基礎を知りたくて読むものではない。何と言っても扱われているプログラミング言語はOCaml。むしろ、「関数型プログラミング入門」のようなタイトルが良いかもしれない。
とはいえ、OCamlが採用されているのは関数型プログラミング言語の入門を目指しているからではない。プログラムを動かすための決まり事が少なくて、プログラミングそのものにすぐ入り集中できるからだ。確かにJavaでやろうとすると、importもいるしmain関数の扱いがあるし、さらには型についても学ばないと動かすことができない。OCamlの対話型インタプリタならすぐに動かせる(この点だけなら例えばRubyでもよいかと思う)。またOCamlは型チェックがかなり厳密で、多少の記述ミスがすぐに分かる。加法演算子+でさえ、int型を引数に取る通常の+と、float型を引数に取る+.(ドット付き)の二つがある。
本書は、OCamlを使って関数型プログラミングの基礎を学んでいく。しかも最短経路問題をダイクストラ法で解くプログラムを作りながら進む。ダイクストラのアルゴリズムも解説されていて、これはこれで興味を持つ人も多いだろう。こうした実際のプログラムを作りながら、本書はOCamlの高度な部分まで解説している。再帰や高階関数は当たり前のこと、再帰処理でもその停止性の問題、OCamlのオブジェクト指向の考えとモジュール、例外処理、参照透過性、副作用を使ったプログラミング、などなど。データ型でもリスト、二分木、赤黒木(バランス木)、ヒープなどが出てくる。確かにこれらをきちんと学べば、著者の言うようにすでに上級者(p.264)だろう。情報処理専攻の大学2年生向けの授業を基にした本なのだが、ここまで学んでいるのに少し驚いた。
おそらく知識がついた後に読み直すとそういうことだったのかと思うような箇所も多く、示唆が散りばめられている。発展した話題がその名を出さずに触れられている。例えば関数のカリー化と部分適用(p.132)があるし、関数型プログラミング言語で最高に面白いモナドにつながるオプション型を用いたところ、さらには大域ジャンプ(p.208)の話まで出てきている。
また、関数型プログラミング言語の話を離れたところでは、まずデザインレシピを作れと書かれている(p.26-31)。これは関数の中身を書く前に、まずその戻り値として仮の値を書いておき、そしてテスト(assert文のようなもの)を書いておく。つまりテストドリブンの開発となっている。テストを最終的に消すのは出荷前だ(p.164f)。
関数型プログラミング言語をしっかり学びたいなら、この一冊。実に楽しい。詳細をみるコメント0件をすべて表示 -
請求記号 007.64/A 83
-
OCamlを使用したプログラミング入門書。メトロネットワーク最短路問題を解く。関数型言語の入門書としてとても良くできている。
再帰的に定義されているリストの構造は今までよく分からなかったが本書でばっちり分かった。
fold,map,filterの説明はこれ以上無いほど分かり易かった。
丁寧に書かれた良書だと思う。
唯一の欠点はWinsowsだとOCamlを扱うのに難点があるところ。日本語を表示するのにすら苦労する。なので私はF#で勉強した。本書の範囲なら少し変えるだけで動く。 -
本書は、元ネタが大学の講義で使われていた内容で、それをプログラミング初学者が独学で勉強できるように編纂したもの。
プログラミングしたことのない人が独学で学べるようにとは謳っているけど、やはり疑問に答えてくれる人がそばにいないと、投げ出したくなっちゃうかも?
本書の最終目標は、地下鉄の最短経路を求めるアルゴリズム(ダイクストラ法)を組むことで、そこに至るまでにデータ構造やいくつかのアルゴリズムを学んでいく。節や章を復習するような問題が随所に載せてあり、これらをがんばって解いていけば、本書で説明されている内容を理解していくことはできるし、プログラミングすることがどんなもんなのかはわかると思う。
この本のいいところは、ちゃんと要件を整理して設計し、テストプログラムを作ってから実装を行うところ。あらかじめ、テストプログラムで最終的な期待値がわかっていれば、何を実装すれば正しい答えにたどり着けるかわかりやすいと思う。
惜しむらくは、変数や関数などのネーミングや、コーディングスタイル。初学者が変な癖をつけそう・・・。付録とかで、そのあたりを触れてくれれば、初学者にとっては教えてくれる人が周りにいなかったとしても、良いコーディングスタイルを身につけてくれそうだなあと思った。
本書は、OCamlという関数型言語を使用して話を進めているが、決してOCamlを解説している本ではないので、そのあたりは誤解なきよう。プログラミング経験者で、OCamlに興味があるけど触れたことがないなら、OCamlという言語を知るうえでは読んでみても損はない。でも、OCaml意外の内容はだんだん退屈に感じてくるかも。
プログラミング初学者におすすめできるかと言われると、OCaml自体を使う場面があまりないような気がするので一押しできないけど、CやJavaに比べてコード記述量がとても少なくて明快なので、プログラミングに触れるという点ではおすすめできるかも。
まあでも、この本をプログラミングの入り口として購入する人は少ないんだろうなあ・・・。なお、読むだけではだめで、手を動かさないと本書は理解できないです。 -
ざっくり読了。
最短路問題を解くプログラムの作成を通して、Ocamlを用いた関数型プログラミングへ入門が出来る。
デザインレシピという形で、プログラムの設計方針をまとめてくれているので、あとで見返す時にも便利。 -
プログラミング初心者を前提として, OCaml によるプログラミングを, とても丁寧に解説しています.
分割コンパイルの方法とか, 初心者には何のために必要なのか分からないような話題を後回しにして, それぞれのステップで何のために何をするのか明解になるようにストーリーができていて, とても読み易い.
ストーリーがよく出来ているので, プログラミング初心者ではない者が OCaml を, MLを, 関数型言語を, 学ぶ場合でもサラッと読んで基礎を学べると思います. -
Ocamlの入門書。テストから書くのが良いね
-
基礎から懇切丁寧な解説でわかりやすい。
これなら最後まで勉強できそうです。 -
Ocamlの本、関数型言語の入門に最適