コーディングを支える技術 〜成り立ちから学ぶプログラミング作法(コーディングヲササエルギジュツ ナリタチカラマナブプログラミングサホウ)
プログラミング- 著者:
- 西尾泰和(ニシオ,ヒロカズ)
- 出版社:
- 技術評論社
- 出版日:
- 2013年05月
- ISBN:
- 9784774156545
- シリーズ:
- WEB+DB press plusシリーズ
- 在庫:
- 在庫あり
なぜ注目されているか
書籍紹介
なぜ言語設計者はこの文法を作ったのか。言語に共通の知識を身に付ける。
技書の森解説
関数、型、スコープ、クラス、継承。プログラミング言語の教科書はこれらを「使い方」として教えますが、そもそもなぜその概念が存在するのかまで説明する本は多くありません。『コーディングを支える技術』 (西尾泰和 著、技術評論社、 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 件)
新人プログラマに正月休み中を使って読んでみてほしい技術書をセレクトしてみた。
♡ 3162技術書【Webエンジニアど素人から3年生ぐらいになるまでに読むと良い本】を段階的にまとめた
♡ 2567初心者, まとめ, 技術書, 勉強, 新人プログラマ応援文系ド素人が Web エンジニアとして新卒入社するまでに読んできた本をまとめた
♡ 417Python, 技術書, 新卒エンジニア, 未経験エンジニア独断と偏見で選ぶ、新人Rubyプログラマの為の技術書21選
♡ 373Ruby, Rails, 初心者, 技術書, 新人プログラマ応援SE 1年目で読んだ技術書68冊+α
♡ 276Java, 初心者, 技術書, Se検査例外再考
♡ 155例外「コーディングを支える技術」を読んだ - プログラミング言語の選び方
♡ 27読書, ポエム, 感想文「例外処理」と「バリデーション」の使い分けを自分なりに理解
♡ 3PHP, Laravel【7言語比較】if文・for文の書き方と真偽値の違いで学ぶプログラミング言語の個性
♡ 2Java, Go, C#, プログラミング言語, 制御構文書評:コーディングを支える技術
♡ 2書評, AdventCalendar2022
この本に興味がある方におすすめ
この本に関連
西尾泰和 の他の書籍
関連記事
Python 本の選び方 - 独学の最初の 1 冊から実務品質まで
Python 本の選び方を「動機」から逆算して整理。プログラミング未経験の最初の 1 冊、業務自動化に直結する本、型ヒントとコード品質で実務水準へ進む本まで、2026 年 8 月時点の定番を独学ルートに沿って解説します。
本を読むスピードは気にしなくていい
1 ページ読むのに 10 分かかっても問題ありません。プログラミングの本はゆっくり読むのが正解である理由と、焦らず読み進めるコツを紹介します。
有名プログラマの読書習慣 - 天才たちは何を読んできたのか
リーナス・トーバルズ、まつもとゆきひろ、ビル・ゲイツなど、著名なプログラマたちの読書習慣と愛読書を紹介します。天才たちの読書スタイルから学べることとは。