コーディングを支える技術 〜成り立ちから学ぶプログラミング作法の表紙

コーディングを支える技術 〜成り立ちから学ぶプログラミング作法(コーディングヲササエルギジュツ ナリタチカラマナブプログラミングサホウ)

プログラミング
著者:
西尾泰和(ニシオ,ヒロカズ)
出版社:
技術評論社
出版日:
2013年05月
ISBN:
9784774156545
シリーズ:
WEB+DB press plusシリーズ
在庫:
在庫あり
4.06(56 件 / 楽天ブックス)
中級者向け
プログラミング言語設計コンパイラプログラミング言語コンピュータサイエンスソフトウェアエンジニアリングアルゴリズムデータ構造プログラミング理論ソフトウェア開発

なぜ注目されているか

総合76 8 ランクダウン 13 件の言及
言及数
274
01220222023202420252026

書籍紹介

なぜ言語設計者はこの文法を作ったのか。言語に共通の知識を身に付ける。

技書の森解説

関数、型、スコープ、クラス、継承。プログラミング言語の教科書はこれらを「使い方」として教えますが、そもそもなぜその概念が存在するのかまで説明する本は多くありません。『コーディングを支える技術』 (西尾泰和 著、技術評論社、 2013 年刊、 WEB+DB PRESS plus シリーズ) は、副題「成り立ちから学ぶプログラミング作法」のとおり、言語設計者の視点に立って複数の言語を比較し、言語がどう変化してきたかを追うことで、概念が生まれた理由を解き明かす本です。特定の言語の解説書ではなく、言語をまたいで通用する共通知識を身につけるための一冊です。

全 12 章の構成、文法の誕生から継承による再利用まで

構成は全 12 章です。第 1 章と第 2 章で、比較と歴史から学ぶという本書の学習法と、プログラミング言語が生まれた目的を俯瞰します。第 3 章「文法の誕生」ではスタックマシンと FORTH 、構文木と LISP 、中置記法という三つの道筋から文法そのものの成り立ちを扱い、第 4 章は構造化プログラミングの誕生と、 if や while 、 for が生まれる前の世界から制御構造を説明します。第 5 章「関数」と第 6 章「エラー処理」は、戻る命令や再帰呼び出し、失敗をどう伝えるか、いつ例外を投げるかといった設計判断を掘り下げます。第 7 章「名前とスコープ」、第 8 章「型」、第 9 章「コンテナと文字列」は、変数名・型・データ構造という日々触れる要素の由来を、第 10 章「並行処理」は競合状態とロックの問題点を、第 11 章「オブジェクトとクラス」と第 12 章「継承によるコードの再利用」は、変数と関数を束ねる複数の方法と多重継承の衝突問題を、それぞれ言語横断で比較します。

言語設計者の「なぜ」を追う読みどころ

本書の効き目は、既に使っている機能に対する理解の解像度が変わることにあります。たとえばスコープは、名前の衝突を避けるために動的スコープから静的スコープへと進化してきた歴史を知ると、なぜ関数の外側の変数が見えたり見えなかったりするのか、なぜクロージャが定義時の環境を記憶できるのかが一本の線でつながります。エラー処理も同様で、戻り値でエラーコードを返す方式と例外を投げる方式には、それぞれ「失敗を見落としにくいか」「出口を一つに保てるか」という設計上の得失があり、本書はその選択の理由を歴史的な順序で説明します。並行処理の章では、処理を細かく区切って切り替える二通りの方法と、競合状態を防ぐためのロックが抱える問題点までを扱うため、スレッドやロックを「おまじない」として使っている人ほど得るものが大きい部分です。オブジェクト指向についても、クラスは変数と関数を束ねる複数の方法の一つに過ぎないという整理がされており、モジュール・ハッシュ・クロージャ・クラスを並べて比較する視点は、言語ごとに異なるオブジェクトの実装を相対化してくれます。

前提知識と、 2013 年刊であることの読み方

前提として必要なのは、何か一つの言語で一通りコードを書ける経験です。版元が対象読者に挙げるのは、一通りコードは書けるが、きれいなコードを書けている自信は持てない社会人 1 年目から 2 年目の新人プログラマと学生で、実際にその段階で読むと最も効率よく吸収できます。逆に、これからプログラミング言語の入門書で最初の言語を学ぶ段階の人には抽象度が高く、比較の材料となる経験がまだ無いため、先に一つの言語で手を動かすことを勧めます。刊行は 2013 年ですが、扱う主題が概念の成り立ちであるため、個別の言語仕様を追う本に比べて古さが弱点になりにくい構造です。掲載されている各言語の記述は刊行時点のものとして読む必要はありますが、スコープや型、例外や継承の設計上の得失は 2020 年代の言語でも同じ原理の上にあります。

一方で、特定の言語の文法やライブラリを網羅的に調べたい人、すぐに動くコードの書き方だけを求める人には、本書は遠回りに感じられるでしょう。本書が元を取れるのは、二つ目の言語を学ぶ予定がある人、コードレビューで「なぜこの書き方が良いのか」を説明する立場になった人、言語選定の議論に根拠を持って参加したい人です。一つの言語をひととおり書けるようになった段階で本書を挟んでおくと、その後に出会う新しい言語や新しい概念の理解速度が変わります。射程の長い基礎を一度で固めたいプログラマにとって、確かな投資になる一冊です。

言及 Qiita 記事 (10 件)

この本に興味がある方におすすめ

この本に関連

西尾泰和 の他の書籍

関連記事

関連用語

共有:Xはてブ