コード。ラテン語で codex。codex とはもともとローマ法大全のことを指し示す言葉だそうです。コードは読みとくべきであり、書き下されるべきものである。そしてそれができたとき、喜びが生まれる。弾さんのまえがきにある言葉ですが、コーディング好きなプログラマのみなさんはこの言葉がよくわかると思います。

本書は、プログラミングに関わるいろいろな事柄が短文のエッセイの形でまとめられています。もともと Software Design の連載だったものをまとめたもののようですが、まとめて読むことに価値があると思います。

弾さんのコンピュータの捉え方、プログラミングの姿勢、豊富な知識や知見がまとめられています。スイスイと読んでいける日本版の『Joel on Software』です。

はじめに

コードな世界へ、ようこそ!

コード?コードって何でしょう?

元をたどると、この言葉はラテン語 codex に行き着きます。

ORIGIN Middle English: via Old French from Latin codex, codic- (see codex). The term originally denoted a systematic collection of statutes made by one of the later Roman emperors, particularly that of Justinian…

Oxford American Dictionary

ここに出てくるJustinianとはユスティニアヌス1世のこと。「ローマ法大全」(Corpus Iuris Civilis)を編纂させた人。codexとは、元々はこのローマ法大全のことを指し示す言葉だったのです。固有名詞から生じた一般名詞。

このことはBibleという言葉の対局にあります。こちらは元々は「本」という一般名詞でした。そのことは bibliomania (本の虫–どこの私だ?)、 bibliography (本の目録)といった英単語からも伺うことができます。Bibleとは”The Book”という意味だったのですね。一般名詞から生じた固有名詞。

コードに話を戻しましょう。本来のコードであったローマ法に関して、塩野七生はこう述べています。

人間の行動原則の正し手を、 宗教に求めたユダヤ人。 哲学に求めたギリシア人。 法律に求めたローマ人。

ローマ人の物語

この意味において、日本を含め、およそ法治国家を標榜する国々の市民はローマ人の末裔ということになります。

ところが、このローマ人、法を作成し、改訂し、施行することには熱心でも、編纂することには少しも熱心ではなかったのです。前述のユスティニアヌス1世の527年から565年。ローマの全盛期はとっくに過ぎて、東西に分裂した後だったのです。

おそらく、それに熱心に取り組んでいる人にとって、それはあまりに当然で必然なことで、わざわざ「外から」編纂するという気持ちにはなりにくかったのでしょう。

ローマ人にとってそうであったように、コードという言葉は現代人にとってそういう存在になりつつあります。ただし現代人にあってローマ人になかったものが一つあります。

それが、電脳(computer)。これはローマ人に奴隷がいて現代人にはいないこと(になっている)ことと対をなしています。ローマ法はあくまでローマ市民に適用されるものであって非市民たる奴隷や異邦人(barbarian)に適用されるものではなかったのですが、現代人は、その電脳で実行されるプログラムのことも、コードと呼んでいます。

本書の「コード」は、その双方を指しています。電脳に適用するコードと、人脳に適用するコード、その双方を。いや、もしかしてもう一つあるかも知れません。この世界自体に適用されている、コード。

最後のそれは、「法則」とも呼ばれます。残念ながらこれは我々が書き下したものではなく、この世界自身に書かれているものです。それを読み解く人が、科学者。そして人電両脳のコードを読み書きする人が、技術者。これは、科学者と技術者の違いでもあります。扱うコードがリードオンリなのかライタブルなのか。

本書の想定読者は、一応後者たる技術者ということになっています。しかしこの両者が深く繋がっていることを、私は「『中卒』でもわかる科学入門」に書いています。

およそどんな人でも、幸せな瞬間というのは次の二つしかないのかも知れません。

1. できなかったことができるようになった瞬間
2. わからなかったことがわかった瞬間

コードは読み解くべきものでもあり、書き下されるべきものでもある。そしてそれが出来た時、よろこびが生まれる。

それが私にとってのコードであり、本書で扱うコードの範囲(scope)です。

では改めて。コードな世界へ、ようこそ!

もくじ

  • #0 堂々とevaろう。でもevaりすぎにご用心
  • #1 Y談。
  • #2 I/O止めないで
  • #3 メモレカス、ナマケモノドモ
  • #4 殺速と複殺
  • #5 OS、SOS
  • #6 自縄自縛のススメ
  • #7 Body and Soul
  • #8 Mathコミュニケーション
  • #9 コードと法律の共通点
  • #10 バカと電脳は使いよう
  • #11 データは人のためならず
  • #12 Connect
  • #13 いまそこにある夢
  • #14 最後のファイルシステム
  • #15 ファイルシステムの終わり
  • #16 From Jobs’ Apple to Apple’s jobs
  • #17 Too Beautiful to be Windows
  • #18 点と線
  • #19 1%のコードと99%のコンフィギュレーション
  • #20 言語のチュウス[ウイ]
  • #21 並べ方と並べ替え方
  • #22 参照にしか値しない
  • #23 働いたら負けなら、働いてもらえばいいじゃない
  • #24 安物買いの安全失い
  • #25 Not Even Odd
  • #26 安増税の税失い
  • #27 たまには( )つけてみよう
  • #28 ニシキヘビに呑み込めないもの
  • #29 三位
  • #30 Where do(es) you(r heart) want to go today
  • #31 The Round Lens Square Hole
  • #32 Can we still stay hungry?
  • #33 Where has all the foolish gone?
  • Ex.0 美しいプログラムの美しくないソース
  • Ex.1 アマグラマのすすめ美徳その1:怠慢
  • Ex.2 アマグラマのすすめ美徳その2:短気
  • Ex.3 アマグラマのすすめ美徳その3:傲慢
  • Ex.4 プログラマでなくても名前ぐらい覚えておきたいアルゴリズム×11
  • Ex.5 プログラミングいつまでに学ぶ? なぜ学ぶ?