著者である西尾氏の講演が非常に面白かったので、その日に購入しました。講演同様、この本もとても面白い本でした。
一点だけ不満を言わせてもらうと、タイトルがあまりよくないと思います。著者自身も"〇〇を支える技術"にするために少し分かりづらいタイトルになってしまったと言っておられました。
この本を一言で言うと、サブタイトルである「成り立ちから学ぶプログラミング作法」が相応しいと思います。
現代のプログラムではif による分岐や while, for による繰り返し処理、変数や関数、例外処理、オブジェクト,クラス といった概念は当たり前のように使われています。それを、Lisp や FORTRAN といった最初期のプログラミング言語の誕生から、どのように派生して新しい言語が誕生してきたのかという歴史を振り返ることによって、それら概念の存在意義を学ぶ、というのが本書の目的になります。存在意義を知ることによって、それらの概念を正しい文脈で使うことが出来るようになるのです。
「とにかく動く物を作りたいんだ!」という人から見るとこのアプローチはかなり遠回りに見えるかもしれません。
しかし残念なことに、その構文の存在意義を理解していない人の作るコードは得てして酷いものです。同じようなエラーハンドリングをしているのに、片方では返り値によって処理をして、もう片方では例外を投げていて、きっと検索して似たようなコードを持ってきたんだろうなぁ、等など。
また、使うことだけに学習意識を集中している人は、ある言語から新しい言語に移ったとき、以前の知識を有効に転用できていない傾向があるように思えます(約10年プログラミングをやってきて、色んな人の書いたコードを読んだり、何人ものプログラマーを見てきた個人的な感想です。勿論、そうでない人もいるとは思います)。
また、本書ではプログラミング言語の歴史に留まらず、コードがどのように計算機上で実行されているのかというアーキテクチャーの話まで突っ込んだ解説が書かれています。
特に、型やコンテナ(データ構造)がどのようにメモリ上に格納されているかという話にはかなりのページ数を割いています。C言語のようなアセンブリ言語に近い言語を触った経験のない人は、どうしてここまで詳しく解説するのか疑問に思ったかもしれませんが、個人的にはこの部分の解説がとても素晴らしく、必要な物だと感じました。
近年流行っているスクリプト言語では型を「意識する」場面は減ってきましたが、現行の計算機上でプログラムが実行される限り、型という概念から逃れることは決して出来ません。(プログラマーがビジネスロジックだけを考えられたら1番いいのですが、現実は甘くありません)。この辺りの話をきちんと分かっていないと、非常に効率が悪かったり、とんでもないバグの入ったプログラムを作ることになりかねないと思います。
また、プログラミング言語が作られる過程の膨大な一時ソースが注としてあげられており、そのための文献としてだけみても価値のある一冊だと思います。
この本を読んだからと言って、急に目覚ましくコーディング能力が上がるという訳ではありません。しかし、一つの言語をある程度分かった初学者の時点でこの本を読んでおくと、その後のプログラマーとしてのキャリアにとても良く効いてくると思います。
一点だけ不満を言わせてもらうと、タイトルがあまりよくないと思います。著者自身も"〇〇を支える技術"にするために少し分かりづらいタイトルになってしまったと言っておられました。
この本を一言で言うと、サブタイトルである「成り立ちから学ぶプログラミング作法」が相応しいと思います。
現代のプログラムではif による分岐や while, for による繰り返し処理、変数や関数、例外処理、オブジェクト,クラス といった概念は当たり前のように使われています。それを、Lisp や FORTRAN といった最初期のプログラミング言語の誕生から、どのように派生して新しい言語が誕生してきたのかという歴史を振り返ることによって、それら概念の存在意義を学ぶ、というのが本書の目的になります。存在意義を知ることによって、それらの概念を正しい文脈で使うことが出来るようになるのです。
「とにかく動く物を作りたいんだ!」という人から見るとこのアプローチはかなり遠回りに見えるかもしれません。
しかし残念なことに、その構文の存在意義を理解していない人の作るコードは得てして酷いものです。同じようなエラーハンドリングをしているのに、片方では返り値によって処理をして、もう片方では例外を投げていて、きっと検索して似たようなコードを持ってきたんだろうなぁ、等など。
また、使うことだけに学習意識を集中している人は、ある言語から新しい言語に移ったとき、以前の知識を有効に転用できていない傾向があるように思えます(約10年プログラミングをやってきて、色んな人の書いたコードを読んだり、何人ものプログラマーを見てきた個人的な感想です。勿論、そうでない人もいるとは思います)。
また、本書ではプログラミング言語の歴史に留まらず、コードがどのように計算機上で実行されているのかというアーキテクチャーの話まで突っ込んだ解説が書かれています。
特に、型やコンテナ(データ構造)がどのようにメモリ上に格納されているかという話にはかなりのページ数を割いています。C言語のようなアセンブリ言語に近い言語を触った経験のない人は、どうしてここまで詳しく解説するのか疑問に思ったかもしれませんが、個人的にはこの部分の解説がとても素晴らしく、必要な物だと感じました。
近年流行っているスクリプト言語では型を「意識する」場面は減ってきましたが、現行の計算機上でプログラムが実行される限り、型という概念から逃れることは決して出来ません。(プログラマーがビジネスロジックだけを考えられたら1番いいのですが、現実は甘くありません)。この辺りの話をきちんと分かっていないと、非常に効率が悪かったり、とんでもないバグの入ったプログラムを作ることになりかねないと思います。
また、プログラミング言語が作られる過程の膨大な一時ソースが注としてあげられており、そのための文献としてだけみても価値のある一冊だと思います。
この本を読んだからと言って、急に目覚ましくコーディング能力が上がるという訳ではありません。しかし、一つの言語をある程度分かった初学者の時点でこの本を読んでおくと、その後のプログラマーとしてのキャリアにとても良く効いてくると思います。
コメント
コメントを投稿