世界を動かす技術を、日本語で。

リスプと執筆の技術 (2003)

2025年6月15日原文(dreamsongs.com)

概要

  • 芸術、工学、科学 の関係性とその連続性についての考察
  • 作家や地図製作者 が現実と虚構の間でどのような役割を果たすかの分析
  • 科学的知識と工学的知識 の発展の歴史的な違い
  • 地図や物語 がどのように現実を省略・歪曲しつつも真実を伝えるかの説明
  • 創造性と探究心 が人間の活動の本質であることの強調

無知・知識・創造性の連続性

  • Charles Darwin の「無知は知識よりも自信を生みやすい」という言葉の引用
  • Lisp が「美しさの言語」と称される理由、プログラマーが芸術家のように創造する過程
  • プログラミングが 創造的自己表現 であり、単なる工学活動ではないという視点
  • 芸術・工学・科学は 真理探究の連続体 であり、相互に影響し合う関係性
  • 芸術家は 自身の内面と物質世界 を同時に扱いながら作品を生み出す存在
  • 芸術活動は 可能性の地図 を作り、時に人類の知識の限界を押し広げる役割
  • 科学や技術の発展は、しばしば 芸術や物語 からインスピレーションを受ける
    • 例: Doctor Faustus の物語→飛行機の発明、 Star Trek の通信機→携帯電話
    • 海底旅行空想科学 が科学者や技術者の夢や挑戦の源泉となる

工学と科学の発展の歴史

  • 技術者(エンジニア) は実際に物を作り、経験則やパターンを記録してきた
  • 現代の工学は 計画的で線形的 なイメージが強いが、歴史的には試行錯誤の積み重ね
  • 例: Tacoma Narrows Bridge の崩壊は、最新工学でも失敗があることを示す
  • 工学知識はしばしば 科学的理論より先行 し、理論が変わっても技術が残る場合が多い
  • 古代ギリシャの 火の理論 と実際の火の利用技術の乖離

科学の役割と限界

  • 科学者は 芸術家や技術者の発見 を整理し、単純化した説明を与える役割
  • 数学 が科学の共通言語となっているが、理論は時代ごとに変化・進化
  • 量子力学や複雑系科学 などの登場で、科学理論の不確実性が増大
  • 科学はしばしば 真理の追求において敗者 となるが、その姿勢が人々に愛される理由
  • 現代社会では 科学への資金集中芸術への軽視 という傾向

作家と地図製作者の役割

  • 作家は 虚構の現実 を創造し、本質的な「真実」を伝える存在
    • 例: Hemingway の物語が現実の一部を的確に描写
  • 地図製作者は 現実を目的に応じて歪曲・省略 し、利用者にとって有用な地図を作成
    • 例: ロンドン地下鉄の路線図 は地理的現実を大きく歪めているが極めて便利
  • 小説や地図は 「嘘」を含みつつも、必要な真実を伝える手段
  • 物語や地図は 情報の取捨選択、どこまで描写しどこを省略するかが重要な技術

探索・発見と創作の本質

  • 地図製作者や作家は ガイドとしての役割探検者としての役割 を併せ持つ
  • 地図作成には 現地調査と発見 が不可欠であり、探検家たちの歴史がその証左
    • 例: Columbus, Magellan, Marco Polo, Lewis and Clark など
  • 作家もまた、 予想外の発想や発見 を求めて創作を続ける
  • 創造活動は 既知と未知の間を往復 し、新たな可能性や真実を探る営み

このように、 芸術・工学・科学 はそれぞれ異なるアプローチで世界や真実を探究し、互いに刺激し合いながら人類の知識と創造性を拡張している。作家や地図製作者の仕事も、現実をそのまま写すのではなく、本質を見極め、必要な「嘘」と「真実」を選び取りながら、人々の理解や想像力を導く重要な役割を担っている。

Hackerたちの意見

リチャード・ガブリエルの文章が大好きです。「プログラミング言語革命の構造」(https://www.dreamsongs.com/Files/Incommensurability.pdf)は、洞察に満ちていて美しいです。

シェアしてくれてありがとう。これを読みながら、フィクションに感じるような散文の雰囲気を感じるのが残念です。そんな理由はないのにね。

(2003年、後にいくつかの脚注が追加されました)

ガブリエルのサイトに行ったら、キャデラックやC++環境の基盤についても読んでみて。どうやってXEmacsになったのか、キャデラックプロトコルが現在の有名なエディタを思い起こさせること、C++のための画像のような開発環境のインフラについて、1990年代初頭のことだよ。https://dreamsongs.com/Cadillac.html

PythonはLispの芸術的な特性をたくさん受け継いでいると思う(でも残念ながら全部ではない)。だから、ある意味でLispの芸術的なダイナミックアプローチが、Pythonの人気によって勝ったと言えるね。

Pythonはかなり堅苦しくて退屈な言語だと思う。マクロもないし、構文はイライラするし、最近はほとんどOOだよ。インスペクションができて、ランタイムで変数にアクセスできる(ひどい構文を使ってね)けど、それだけ。言語やそのクリエイターに芸術的な志向はあまり感じないな。Rubyはすでにもっと良いメタプログラミングの話があって、コードももっとエレガントに見える。

最初のPythonのバージョンはLispで実装されてたと思うよ。だから、docstringが両方で同じなのはそのせいだと思う。

これは素晴らしい読み物でした。最後に言及されている本が2003年に出版されたもので、これが前書きだというのがちょっと悲しいです。Lispは、私が今まで使ったどの言語とも違う、書いたり実験したりするのが素晴らしい体験です。それでも、現場には「仕様を提供するだけ」やお金を稼ぐことにしか興味がない人たちが多いと思います。ソフトウェアの背後にあるアートにあまり関心を持たない実利主義者たちで、これはずっと変わらない気がします。技術とアート、そして熟練が結びつくのはニッチだけど、熱心な人たちのためのスペースでは繁栄していると思います。

... でも熱心な人たちのためのスペースでは繁栄しているってことだよね。Arcで書かれてSBCLで書き直されたサイトに投稿している熱心な人が賛成してるよ ; )

Lispは、今まで触ったどの言語とも違って、書いたり実験したりするのが本当に素晴らしい体験だよ。Smalltalkの経験も、いくつかの点で似ていると思うけど、言語自体は全然違うよね。結局のところ、Lispの方が好きだな。自分のシステムとよりうまく連携できる気がするから(間違ってるかもしれないけど、きっと熟練のSmalltalkerたちは、昔の自分がイライラした問題の解決策を見つけてるだろうね)。どちらも選ばれなかった道だよ。悲しいけど、Cの罠に何十年も無駄にしなければ、業界はもっと良い状況になってたと思う。でも、歴史はこうなったんだよね。そうなる運命だったのかも。

皮肉なことに、この著者はLispとプログラミングの関係を完全に誤解してるね。Lispは確かにアート的な側面が強いけど、Javaみたいな言語でプログラミングする方が、Lispよりも書くことに近いと思う。書かれた言語には確立された語彙や文法があって、作り手がそれを変えたり再定義したりすることはできない。著者が言う通り、Lispは「プログラミング言語」よりも「プログラミングメディア」としての側面が強い。プログラマーが自分の表現方法で言語を形作ったり変えたりできるからね。でも、彼はこの観察を続けて、Lispのこの特徴が人間の言語とは根本的に違うことを示す明らかな結論には至ってない。

それはちょっと違う見解だと思う。詩は一般的な文法ルールを操りつつ、作り手から読み手に意味を伝える。むしろその操作によって、より深いコミュニケーションが生まれることもあるよね。もちろん、Javaや他の多くのプログラミング言語では、文法エラーがあるとコンパイルすらできないけど。LISPは、プログラムごとに文法が変わる数少ない言語の一つで、詩と同じような感じだね。

Hacker Newsで議論の続きを見る