「人が読むため」という言葉の核心
アベルソンとサスマンの「プログラムは人が読むために書くべきだ」という考えは、コンピューターに命令を実行させるだけではプログラミングの役割を捉えきれない、という主張である。機械が問題なく動けばそれで十分、という見方に対し、書いた手順を他者が読み、考えを受け取り、修正できることを重視している。
ここでの「読む」は、コードを一行ずつ目で追う作業だけを指さない。なぜその処理が必要で、どんな前提のもとに組み立てられたのかを理解することまで含まれる。
この一文を「処理速度より見た目を優先する」と読み替えるのは正確ではない。実行できることと理解できることを、設計上の別々の必要条件として考える言葉だからだ。
出典はMITのプログラミング教育の序文
原典はハロルド・アベルソンとジェラルド・ジェイ・サスマンによる『Structure and Interpretation of Computer Programs』の序文である。1983年にMITの技術報告として公開された文書の概要に、対象となる原文とその前後の説明が掲載されている。
原文は「Thus, programs must be written for people to read, and only incidentally for machines to execute.」である。この記事では「プログラムは人が読むために書き、機械による実行はそれに付随する」と訳す。日本語は記事用の説明訳であり、出版社の公式訳ではない。
原典は二人の著者が共同で示した教育方針であり、どちらか一人の即興の発言として扱わない。1996年の第2版もMIT Pressから刊行されているが、ここでは確認した1983年の技術報告と序文の記述を出典とする。
何を伝えるかを先に考える
同じ序文では、プログラミング言語を単なる計算命令ではなく、方法についての考えを表現する形式的な媒体として捉えている。手続きの書き方そのものが、問題をどう分解したかを読者へ伝えるという立場である。
たとえば数値を並べ替えるプログラムは、結果だけでなく「何を比較し、どの条件で処理を繰り返すか」を記述している。実装の読みやすさが高ければ、その方針をレビューし、別の問題へ応用しやすくなる。
したがって可読性は、短い変数名を長くするだけでは実現しない。目的、命名、処理の境界、例外条件を揃えてはじめて、読み手が判断できる形になる。
抽象化は読者の負担を減らす
原典の教育方針では、大きなソフトウェアの知的な複雑さを制御する技法が中心課題とされている。新しい構文を暗記するだけでは、複雑なシステムを説明できるようにはならない。
部品の内部にある細部を適切に隠せば、読み手はまず部品の役割を理解してから必要な場所だけを掘り下げられる。一度にすべてを理解しなくてよい構造が、人の思考を支える。
ただし抽象化は情報を隠しさえすればよいものではない。副作用や前提条件まで覆い隠せば、利用者が誤った予測をする。読みやすさと説明責任は両立させなければならない。
共同作業で試される読みやすさ
自分で書いたコードは、書いたときの目的を記憶しているため理解しやすく見える。しかし数か月後の自分や、新しく参加した開発者は、その判断の経緯を共有していない。
複数の人が使う処理では、入力と出力の意味、失敗した場合の扱い、変更してよい範囲を確認できることが重要になる。コードレビューや引き継ぎは、読み手の側から設計を確かめる機会でもある。
この視点は、機械が実行できるかどうかだけを試すテストとも異なる。テストが通っても目的が読み取れない部分は残り得るし、分かりやすい説明だけで正しい動作が保証されるわけでもない。
生成AIがコードを書く時代にも
生成AIが短時間でコードの案を出せるようになると、作成にかかる手間と、その内容を理解する手間が分離しやすくなる。出力が正しく見えても、前提や変更の影響を確かめる役割は消えない。
AIが書いた処理についても、何を保証するのか、何が未検証なのか、人間が読み解けることが必要だ。これは1983年の著者たちが生成AIを予見して語ったという意味ではなく、原典の原則を現在の開発環境へ応用した編集上の考察である。
読むためのコードという考えは、開発速度を抑えるための標語ではない。後から安全に直せることを含めて、ソフトウェアが人間の仕事を支える条件を問うものだ。
原典と読み方の注意
タグ114の原典特定根拠:MITの1983年技術報告『Structure and Interpretation of Computer Programs』(AITR-735)の概要に、引用句と「プログラミング言語は方法を表現する媒体」という前後の説明が掲載されている。著者はHarold AbelsonとGerald Jay Sussmanである。
MIT Librariesはこの著作が後の計算機科学教育に与えた影響と、序文の当該箇所を紹介している。ただし教科書のすべての版や翻訳に同じ句読点があると、この記事では保証しない。
一次資料はMITの1983年技術報告書誌・概要、補助資料はMIT Librariesによる刊行史の解説。サイト内の仕事と技術の知恵も、異なる実務上の文脈として参照できる。