竹内 郁雄氏からのコメント

 竹内郁雄@東京大学情報理工学系研究科創造情報学専攻です.少し前にBinary Dayを記念する祝賀コメントを書くよう,お誘いを受けました.これはやはりかの有名なSlashdotですので,〆切を守れない人達の巣窟だと勝手に思っています.なのでというわけではないのですが,仕事や遊ぶのに忙しくて,結局〆切直前の投稿となりました.でも,〆切直前なので,編集の方の胃に穴が開くことがあっても読者の皆様にはご迷惑がかからないものと信じております.

 前置きが長くなってしまいました.とりあえずBinary Dayおめでとうございます.といっても実は私,今回初めてそのような日があることを知りました.でも,Binaryとは二進法なので,やはり0も含まれるべきだと思います.つまり,10月10日が本当に祝うべきBinary Dayではなからふか.ちなみに一進法は0の一文字ではなく,1を並べるのが基本です.チューリングマシンでは十進の0を1,1を11,2を111,3を1111,…,というふうに表現するのが自然です.つまり,今日は言ってみれば,一進法での単なる3,Binary Dayの旧盆みたいなもので,新盆は十進法に直しても10となる見事に調和の取れた10月10日なのです.せめて日本の正しいハッカーだけでも,これからは10月10日を二進法記念日として祝うことにしませふ.11月11日は本来11人対11人で行なうサッカーの日とすべきなのです.もっとも10月10日も体育の日であったのぅ.

 二進法では,1と0の調和が大きな意味をもちます.すべてのバグはそこから生まれます.陰と陽と言ってもいいでしょう.きわめて稀ではありますが,正しいプログラムも1と0の調和から生まれます.このことを説いたのが老子であります.私は以前TAO (道) というLispの変種 (PrologもSmalltalkも内包する) を設計・実装したこともあって,ちっとだけTaoismの勉強をしました.(なお,道教というのは,老子の死後,勝手に宗教化されたものなので,いわゆる『老子』とは異なるものです.) 〆切中毒の快感にひたりながら,ここまで書いてきたら,先を書くのが面倒になりました.私が電通大にいたころにプログラミングとTaoismについて書いた文章があります (情報処理学会 夏のプログラミングシンポジウム,1998年夏,所属・肩書はすべて当時のまま).あとはこちらをお読みください.これを読むと,欧米のソフトウェア技術者・研究者がいかにTaoismに傾倒,あるいはTaoismを楽しんでパロディしているかがよくわかります.

 こんな堅苦しい文章なんか読む気がしないという人のために,1と0の対比を明快に表す写真をプレゼントしましょう.どちらを1とし,どちらを0とするかは,読者次第であり,性格占いでもあります.それとは関係ないのですが,ま,この祝賀コメントはあきらかに写真Bのほうでしょう.

写真A
写真B

(以下は竹内氏らが1998年に発表した、プログラミングとTaoismについて書いた文章です。PDF版もダウンロードできます。)

プログラミングとTaoism

竹内郁雄(電気通信大学情報工学科)、天海良治、山崎憲一、吉田雅治(日本電信電話株式会社 NTT電気通信研究所

1 はじめに

成立ちに2000年以上の時代差がある老子のTaoism※1とプログラミング※2に直接の関係があるというのは,強引にすぎるというものだが,それにしても,多くのコンピュータ科学者や技術者 (実は我々も含まれるのだが) が老子のTaoismの引きつけられて,それをなんらかの形で明言しているのは単なる偶然の一致ではあるまい.西欧文化の根源であるギリシャ哲学を除いて,このような古来の (非西欧的) 哲学がコンピュータの分野で,比較的多く論じられたり,引用されたりすることはまれであろう.

 本稿では,我々自身とTaoismの (主に偶然による) 関わりと,我々に目についたTaoismとコンピュータ科学との関わりの事例についていくつか紹介するとともに,こういった一見不思議なリンクが一体なにに根ざしているか,若干の考察を加えたい.

 これからプログラミングは産業的にも技術的にもある意味で不透明な時代を迎えることが予想される.そういった時代環境で,なにかとんでもない連想リンクをたぐってみることは,あながち無益ではないだろうし,新しいヒントを与えるきっかけにもなるかもしれないというのが,我々の期待である.

※1 Taoismに道教という日本語を単純に充てるのは少々問題がある.老子が『道徳経』で述べた (これ自身も歴史考証的にはいろいろ問題があるらしい) Taoismは,宗教的な教義とは別種のものである.

※2 これの元祖は1980年代前半にCharles Babbageのよき理解者であったByron卿の娘,Ada Augustaとされている.

2 我々の研究とTaoism

 手始めに,我々がTaoismとどこで出会い,それ以来我々の研究にどう関わってきたかについて記述する.

 筆者の一人,竹内が同僚の奥乃博とLisp系の言語の研究・開発に関わり始めたのは1973年ごろである.以来,1970年代は大里延康も含めて,16ビットミニコンの上で,3種類のLispをつくった.1970年代は,このような小さなコンピュータ上でとにかくLispを動かし,第2次といわれた人工知能研究のブームの中で,実験に使えるプラットフォームを用意する.これが小規模の研究室レベルでできるおそらく最善の方策であった.

  • LIPQ (1974ごろ) PDP-11/20 (竹内 & 奥乃) --- 8Kcell
  • LIPX (1976ごろ) PDP-11/55 (竹内 & 奥乃) --- 10Kcell
  • TAO (1980ごろ) microprogrammable PDP-11/60 (竹内 & 大里) --- 32Kcell

 どれも今日のパソコンに比べて圧倒的に少ないメモリ容量しかなかった.我々が独自にLispの開発を始めるきっかけとなったのは,1970年ごろにMITのTerry Winogradが博士論文として発表した積木世界での自然言語対話システムSHRDLUの成功である.使われたハードウェアはPDP-10,言語はその上のMacLispである.論文を調べた結果,MacLispの128Kセルのうち80~90パーセントはほとんど中身や構造の変化しない静的なデータであり,作業領域として使われる,動的な変化の激しい領域は予想外に少なかった.

 初期のLIPQやLIPXは,PDP-10など (金額的にも,当時の計算機業界の状況を反映した通産省の政策の上でも) 絶対に買えない我々が,予想外に小さな作業領域 (仮説) に飛びついた結果の産物である.※3LIPQ (リップク) やLIPX (リッペケ) というちょっと怪しい名前のLispは,ハードウェア規模の割には国内で非常によい成績をおさめ,小さな日本語会話システムのデモに使われた.

 そして,同じPDP-11シリーズの,もう最後に近い製品であったPDP-11/60で,さらに新しいLispを開発する機会を,竹内は新入社員の大里とともに得ることができた.16ビットマシンであるが,小さなMMU (Memory Management Unit) を備え,かつMMUのおかげでアドレス空間も18ビット幅まで拡張されていた.PDP-11/60は小さいながらも16ビット幅で1K語程度の (垂直型) マイクロプログラムを書くことが可能であった.基盤上のMMU関係のMSIにちょっとしたゲートを加えることによって,それまで16ビットミニコンでは不可能だった32Kセル空間を実装することができた.一世代前に比べて2倍以上の増加である.※4

 さて,この第3作目は,リップク,リッペケとは異なる系統の名前にしたかった.PDP-11のRT-11という軽量OSのファイル名のファイル種別表示用の拡張子 (.src,.obj,.binなど) が3文字に限定されていたので,命名に課せられた条件は,ほかのファイル種と弁別しやすいように3文字であることが望ましいというものである.そこで竹内が小学館のランダムハウス大英和辞典 (第1版) をあてどもなく探すことにした.しかし,なんと,一発でTaoという単語に遭遇したのであった.これが我々とTaoとの出会いであった.

 ランダムハウス第1版によれば,Taoの語義は次のとおりである.※5

  1. 万物が生起または存在,変化する宇宙の原理.
  2. 道理,法則.人間行動の合理的基盤.
  3. 道: 老子,荘子に始まる中国道教の中心概念: この道を守れば不老長寿が得られるという

 このうち,(3)は老子の時代よりあとに,一種の新興宗教として生まれてきた「道教」の教えであり,老子の思想と直接の関係はない.(1)と(2)はおよそ,プログラミング言語を設計して世に問おうとしている人間にとってはこの上ないバックアップとなる語義である.しかもピタリ3文字である.要するに,これから取り組もうとする新設計の言語にこれほど相応しい名称はあろうはずがない.こうして第3作目のLispの名称は驚くほど簡単に決定した.

 我々は,自分たちの仕事に,まずよい名前がつけることがとても重要だと考えている.名前負けしない研究のインセンティブも湧く.実は,プログラミングとTaoismの関係をここで論じようというくらいであるから,以降TAOという名称は今日開発中の第3代TAOに至るまで,3世代にわたって採用された.その都度異なる言語であるにもかかわらずである.そういったことから,初代TAOはPDP-11/60の上に実装されたこともあって,現在はTAO/60と呼ぶことにしている.もちろん,動くコンピュータはすでに存在しない.ちなみにTAO/60は当時研究が盛んであった構造化プログラミングの技術要素を多く採り入れたLispである.

 このような話を学会の研究会などで話しているうちに,当時東京大学教授 (現在富士通研究所) の和田英一先生から手紙をいただいた.いわく,Algol 68の公式仕様書の中にTaoが引用されている.調べてみると,老子の唯一の著作とされている『道徳経』※6の第42章の冒頭部分の翻訳であった.

Tao produces one.
One produces two,
Two produces three, and
Three produces ten thousand things. ...

日本語にすると,

道は一を生ず.一は二を生じ,二は三を生じ,
三は万物を生ず....

である.困難な応用研究のベースにある基礎言語という理念を表すのにこれほど嬉しい言い方は滅多にない.ランダムハウスの一発での出会いと奇妙に符牒したこの発見は我々に励ましを与えてくれた.それにしても,万物が生真面目にten thousand thingsと訳されているのは興味深い.こういったところも,「研究はどこかで楽しんでやらなければならない」という我々の信念にピッタリであった.

 Algol 68という前代未聞・空前絶後的に巨大な機能の厳格な言語の仕様書なのに,このような,遊びが仕組まれていたことは,大きな発見であり,刺激的であった.少なくとも日本的なセンスでは考えられない.

 この仕様書の英露対訳にクマのプーサンの漫画が挿入されていることも発見された.クマのプーサンというのは,その生き方自身が,まさに老子の言う自然体であり,Taoismそのものである.実際,Benjamin Hoffの“The Tao of Pooh” (A Penguin book,1982) は,今日でも欧米ではTaoismへの最良の入門書の一つとされている.

 なぜAlgol 68にこのようなTaoismがちらついているか.これは最後でちょっと触れる.

 竹内と大里は,それまで知らなかったTaoが予想外に奥深いことに気づき,書店で若干の本を漁った.そこで見つけたのが,バグワン・シュリ・ラジネーシというインドの聖者の言説をまとめた『TAO』という本である (大陸書房,手元になく出版年は不明だが1970年代半ば).一言でいうと,インドに集まった世界中のヒッピーに対する彼の説教集である.彼の発する“Are you enough?”という言葉がTaoismのいう無為自然の一つの表現形であった.

 しかし,我々は彼の教義というか,語りかけではなく,その名前バグ (虫),ワン (1),シュリ (修理,処理?),といった妙にコンピュータ屋に引っかかる駄洒落の面白さに引かれてしまった.この本のタイトルにあったTAOのロゴはいたるところで活用させてもらったものである.

 ユーモアを伴った研究というのが我々のモットーであったから,Algol 68仕様書に引用されていた第42章は,早速次のようにパロディさせてもらった.パロディではあるが,LispのS式の本質をうまく表現していることに満悦であった.

Tao produces nil.
Nil produces atom,
atom produces S-expression, and
S-expression produces ten thousand things. ...

 しかし,ミニコンの限界はすでに明らかだった.米国では1970年代半ばにすでにメガセル級のLispマシンが開発されていたのである.1970年代末期,日比野靖が新人の渡邊和文とともにLispマシンELISの開発を計画した.それにソフトウェア担当として参加することになったのが,竹内,奥乃,大里の3名である.

 このELISの上に載せる言語の名称もTAOとすることにした.あまりにもいい名前だったので一代で捨てるには惜しすぎた.幸い,『道徳経』の第1章の最初の文が,道可道 非常道,すなわち,道と言うべきは常の道にあらず,であった.これは道 (Tao) と名付けられたものがあったら,それは常,つまり絶対あるいは永遠の道 (Tao) ではないということである (翻訳はいろいろあるが例えば,“What is said to be the Tao is not the true Tao.”が代表的である).それほどTaoは名状しがたいものであるという意味なのであるが,これは同じTAOという名前を,次々と開発していく言語につけていくのに恰好の「理論的(?)基盤」を与えている.つまり,TAOという言語は変転するものであるというお墨付が得られたわけである.

 結果的にELISは米国のLispマシンと競うほどのものとして完成した.Lisp,Prolog,Smalltalkといった1980年代当初に話題が沸騰した,いわば人工知能御三家言語を融合したマルチパラダイム言語TAOも,人々の注目を集めるところとなった.TAO/ELISは1986年,沖電気工業の協力を得て,NTTの子会社NTT-ITから市販されるに至った.

 TAO/ELISシステムの当初の開発者,日比野,奥乃,渡邊,竹内,大里の頭文字を並べると,How toとなる.これを使って,How to Lisp? などといって人々をケムにまいたものである.また,ちょっと見には融け込みそうにないものを融合させようとしたということで,和製のキメラである鵺 (頭は猿,胴は狸,手足は虎,尻尾は蛇) をシンボルマークにして,NUE (New UnifiedEnvironment) というプロジェクト名を名乗ったのもユーモアの精神であった.

 TAO/ELISは予想通りというか,ビジネスとしては成功しなかった.しかし,我々は,ELISの上に市販品とは異なる形のソフトウェア体系を組み上げ,手に馴染んだ日常のツールとして,システム寿命がとっくに切れたつい最近まで研究の現場で使ってきた.

 現在は,1991年ごろに開始,いまだに開発進行中のTAO/SILENTというシステムを本稿の著者たちが手掛けている.ハードウェアはELISを拡大して改良したSILENTで,言語は徹底的に再設計したTAOである.マルチパラダイムは踏襲するが,むしろ,実時間記号処理を最も強く意識している.ロボット,マルチメディア,ネットワークなど,これから知的処理がさらに必要になる実時間応用分野を標的にしているからである.

 こうして,3代にわたってTAOという言語を開発しているが,最初のTAOと2作目のTAOは現在のTAOと区別するために,それぞれTAO/60,TAO/86 (またはDAO) と呼ぶことにしている.

※3 我々の使ったPDP-11というミニコンはちょうど1970年ごろに登場した16ビットミニコンで,16ビットミニコンの中では最良のアーキテクチャをもっているといって過言ではなかったが,1970年代初期,それを当時の電々公社というお役所で買うことは,それこそイバラの道であった.

※4 これでも,上の表にもあるように,これでも結局32Kセルしかない.1970年代半ばにはMITで,1Mセルに近い規模のLisp専用マシンがすでに開発されていた. 実は,これとて1978年に出たVAX-11/780を開発機械に使うことができれば,セル数はもっと増やせるはずだったが,やはりお金が足りなかった!

※5 第2版では,Taoismという単語の記述が随分簡単になった.

※6 これ自身を『老子』と呼ぶことも多い.

3 Taoism

 Taoism,というより,本来のTaoに関しては多くの解説書が存在する.ここではプログラミングとの関わりを考察するのに必要最小限の紹介を行なう.以下の紹介は小川環樹責任編集の『老子 荘子』(中公バックス 世界の名著4,中央公論社,1978) などを参考にした.

 Tao (道) の概念の創始者は,中国思想史において謎の人物とされる老子こと老タン (タンはJISにない字) である.老子が実際にどのような人物であったかについては三つの説があり,その生きていた年代に200年ほどの差がある.まさに伝説の人物である.彼は荘子と並んで道家の宇宙的人間論を創始した.

 老子の唯一の著作が,約5,000文字からなる『道徳経』である (これ自身が『老子』の別名と説明されることがある).上下編に分かれており,上編の最初の文字が道,下編の2番目の文字が徳ということで,道徳経と呼ばれたという.ただし,道と徳は別々の概念であって,今日の道徳 (moral) という言葉から連想されるものとは異なる.Raymond Smullyanによれば,むしろ,通常の(教条的な,あるいは人倫を説く)「道徳主義」とは正反対の思想が述べられている.

 『老子』の文章は,とつとつとして短く,詩のような韻が多用され,警句に満ち,逆説的で,晦渋である.相当に練り上げらた文章らしい.それゆえに,言葉の意味が取りにくいところが多く,解釈が分かれやすい.固有名詞が1回も現れないというのも象徴的である.そもそも,これが単独の著者に手になるものかどうかの論争すらある.現在のところ,単独の著者に発し,後生の改訂などが少し加わっているのではないかというのが通説である.

 『老子』の最も基本的な概念は「道」である.道は以下のように,万物の母,すべてのものをあらしめる原理であるが,名状しがたいので,仮につけた名前である.

 物有り混成し,天地に先だって生ず.寂兮 (せっけい) たり,寥兮 (りょうけい) たり,独り立って改 (か) わらず,周行して而も殆 (つか) れず,以て天下の母為る可し.吾其の名を知らず.之に字して道と曰う.[25章]

 論理学者Smullyanによる“The Tao is Silent” (Harper & Row, Publishers,1977.邦訳 『タオは笑っている』桜内篤子,工作舎,1981,1996に改訂新版) には,次のように紹介されている.すぐあとで述べる「無為」もここで言及されている.この詩が道をもっとも簡明直截に記述しているかもしれない.

There is something blurred and indistinct
Antedating Heaven and Earth.
How indistinct! How blurred!
Yet within it are forms.
How dim! How confused!
Quiet, though ever functioning.
It does nothing,yet through it all things are done.
To its accomplishment it lays no credit.
It loves and nourishes all things,but does not lord it over them.
I do not know its name,
I call it the Tao.
[Smullyan, composite verse including Chapter 25]

 道はおぼろげでとらえがたいもので,無定形ではあるが,まったくの抽象概念ではなく,やはり物とされる.これは神秘主義である.しかし,原理である以上,道自身は永久不変である (しかし,万物は流転する).このようなことを知ることが英知であり,人はそれによって心の安定を得ることができる.これと似た神秘主義はほかにあったが『老子』は,柔弱と静を強調し,嬰児,赤子,水といったものを道の象徴として多用する.

 道は天や地に (論理的に) 先んずるものであり,それ自身は自らそうであったという意味で自然 (what-is-so-of-itself) である.それは,為さざるをして (すべてを) 為す.これを無為という.これを人の行動指針とすると,『老子』は政治論になる.すなわち,君主が臣民に干渉せずして国がまとまることが理想になる.

 道は他者に動かされない自然であるから絶対者であり,すべてに超越するが,すべてのものに内在するという意味で万物の母である.だから,その無為は万物に浸透している.しかし,無為自然をもって,人は運命を甘受すべきということではない.むしろ,静かな無為をもって他人の「自然」を侵すなと説いているようである.すなわち,社会における他者との調和である.ここでいわゆる人倫の道徳を教条主義的に説くということを一切していないことが重要である.

 以下の二つの詩もSmullyanの前掲書から取ったものであるが,道の発想をうまく表現している.西洋的ロゴスの記号論理学の専門家が,このようなものを書くこと自体にTaoの深みがあるのかもしれない.

The sage falls asleep not because he ought to
Nor even because he wants to
But because he is sleepy.

これは「自然」を表現しているが,次は「無為」に重点がある.

The Tao has no purpose,
And for this reason fulfills
All its purposes admirably.

 徳は道の下位概念である.それについては省略する.なお,禅は老荘思想に仏教が合体したものである.そこで悟り (enlightenment) といった概念が生まれた.本来の『老子』には,悟りという概念はないようであるが,Taoを語るとき,悟りはつい出てきてしまう.

4 プログラミングとどう関係するか?

 いよいよ本題に入る.ただし,もともと本稿は,研究の合間にエピソード的に蓄積してきたもののみをベースにしているので,もっと本格的なサーベイが必要だとは思いつつ,その域には遠く達していないことを予めお断りしておく.

 今世紀半ばをすぎて,西欧近代科学のいろいろな分野で,東洋思想の影響が見られるようになった.たとえば,ニューサイエンスがある (『現代思想』 Vol.12-1,1884年,「ニューサイエンス」特集を参照).Taoという言葉が出てくるものとして,英国の物理学者Fritjof Capraが1975に出版した『タオ自然学 (Tao of Physics)』という有名な著作がある.これは,量子力学と相対論によってデカルト的な思想から外れつつあった西欧的自然科学が,実は古来の東洋思想と驚くべきほど共通点があると指摘したものである.たとえば,すべての物質を構成する素粒子とミクロの世界を支配する「絶えず変化する流動性 (ever-changing fluidity)」と「相互依存 (interdependency)」が東洋思想の「無常」や「相依相関」と共通しているという.さらに,素粒子は他のすべての素粒子の影響を受け,そしてその素粒子自身も他のすべての素粒子に「浸透」としているとする「相互浸透 (interpenetration)」は仏教の「一念三千」と同じともいう.こうして,個々の単位よりも,それらの間の関わりが世界の有り様であるとする.これは,まさに非還元主義的な全体論である.

 ただし,ニューサイエンスの思潮には老子だけでなく,仏教を含めた東洋神秘思想全体が影響していることに注意しておく必要がある.Tao (道) はwayに通じ,最も引用のしやすい言葉であったと思われる.

 プログラミングの分野で,我々に目についたものを以下に挙げる.

  • [1] Algol 68 report (1968?,多分もっと後)

 これについては,1章ですでに述べた.ニューサイエンスとの関わりはないはずである.

  • [2] Taoを偶然に発見 (1977年ごろ)

 我々の記号処理言語の名前の発見のことである.まさに無為自然だったのかもしれない.

  • [3] Geoffrey James: The Tao of Programming,InfoBooks,1986
  • [4] Geoffrey James: The ZEN of Programming,InfoBooks,1988

 この2冊の小さな本 (岩波新書サイズのペーパーバックで,どちらも120ページ前後) は,我々が2作目のTAO/ELISをほぼ完成させたころにちょうど出た.著者のGeoffrey Jamesは,ある会社のソフトウェアの保守部門で長く仕事をしてきた人らしい.基本的にはTaoismを足掛かりにして,ソフトウェアプロジェクトの有り様についての短い警句を集めたものである.いわゆるパロディ作品で,全体がひとまとまりでジョークになっている.たとえば,(明らかに架空の) 古文書をでっちあげ,それを解読した結果,このような神秘の警句集が得られた,とか.実際,[3]にはその古文書の文章 (中国語のつもり?) とされるものがすべての左ページに掲載されているが,日本人が見ても無意味とわかる文字列である.

 著者が,ソフトウェア保守の現場で仕事をしてきた人であるだけに,警句の題材は,主にソフトウェアプロジェクトの中から拾っている.二つの警句をピックアップしておく.ここでYinとYangは陰と陽である.

[1.3] In the beginning was the Tao. The Tao gave the birth to Space and Time. Therefore Space and Time are the Yin and Yang of Programming. Programmers that do not comprehend Tao are always running out of time and space for their programs. Programmers that comprehend Tao alway shave enough time and space to accomplish their goals.

 How could it be otherwise?

[3.4] A manager went to the master programmer and showed him the requirements document for a new application. The manager asked the master: “How long will it take to design this system if I assign five programmers to it?”

 “It will take one year,” said the master promptly.

 “But we need this system immediately or even sooner! How long will it take if I assign ten programmers to it?”

 The master frowned.“In that case,it will take two years.”

 “And what if I assign a hundred programmers to it?”

 The master programmer shrugged.“Then the design will never be completed,” he said.

 ZENと題した[4]のほうは,[3]が好評だったゆえの第2作であり,こちらは日本語が飾りとしてあしらわれている.老子というより,禅問答的なものが多いが,短いものを一つ引用しよう.

[4.8] A novice asked the master: “Is there Buddha-nature in an ADA compiler?”

 The master replied: “Have you ever noticed that the NUL character is 000 in both octal, hex, and decimal?”

 Suddenly the novice was enlightened.

 次の本は,ジョークではなくて真面目なオブジェクト指向プログラミングの入門書である.

  • [5] Gary Entsminger: The Tao of Objects, M&T Publishing, 1991

 前書きには,東洋の古典思想を援用してオブジェクト指向プログラミングの入門を書けたら本望と書かれているが,Tao自身についてはあまり多く語られていない.前書きにはこうある.Taoでは目的 (destination) よりもそこに至る道 (path) を重んずる.プログラミングでも目的に短絡した発想をすると,応用や修正の効かない一発かぎりのプログラムができてしまう.オブジェクト指向の発想であれば,設計が自然に再利用性の高いプログラムを生み出すような道に沿う.

 本文中では第1章の冒頭に次のような言及がある.

 Ancient Chinese philosophers believed in a unifying reality called the Tao. These philosophers of the Tao, or Way, emphasized that the world is not a static entity, but a dynamic process. The objects that compose the world are reflections of that process - in flux and ever-changing. Thus, the ability to model or capture an object's essence is illusory; we really only capture a bit of it for a short while.

 A computer program is a process, a tool, a way to model, capture, or simulate part of the world. In traditional programming, static concepts impose themselves on a dynamic world. It becomes difficult to model the world or modify the model. Object-oriented programming is a major step toward making programming and the programs themselves dynamic. Using objectoriented programming techniques, your can design programs that are better suited for modeling a dynamic world, create and destroy complex processes at both compile time and run time, and design programs as if they evolved (which they do).

 これは動的プログラミングの必要性をオブジェクト指向という枠組で的確に表現していると言えよう.実際,第5章は“Dynamic Styles”と題されており,全体としてオブジェクト指向の動的な側面が強調されるようなプログラミング例に重点がおかれている.

 次のホームページは,WWWをTaoで検索して見つかったものである.比較的真面目な哲学・芸術・宗教関係のページであるが,そのなかに,プログラミングに関係したリンクも収録されている.今年になってできた,まだ新しいページのようである.

  • [6] www.edepot.com/taoism.html

 プログラミングに関係するのは,Enjoy Dao related humorのリンクである.『道徳経』のパロディと禅問答からなる.前者は原典によく即しており,佳作が多い.著者に関してははsorensen@ecse.rpi.eduという情報しかない.一部だけを引用しよう.暇なときに覗いてみられることをお奨めする.

Tao Te Chip (表題自身がTao Te Ching『道徳経』のパロディ)

01 (この数字は『道徳経』の第1章に対応する)

The tao that can be tar(1)ed
is not the entire Tao.
The path that can be specified
is not the Full Path.
We declare the names
of all variables and functions.
Yet the Tao has no type specifier.
Dynamically binding, you realize the magic.
Statically binding, you see only the hierarchy.
Yet magic and hierarchy
arise from the same source,
and this source has a null pointer.
Reference the NULL within NULL,
it is the gateway to all wizardry.

12 (もちろん第12章)

Graphics blind the eyes.
Audio files deafen the ear.
Mouse clicks numb the fingers.
Heuristics weaken the mind.
Options wither the heart.
The Guru observes the net
but trusts his inner vision.
He allows things to come and go.
His heart is as open as the ether.

5 むすびに代えて

 前節までとりとめなくいろいろなものを引用してきた.これだけからプログラミングとTaoismの関係についてなにか結論めいたものを引き出すことは無理である.しかし,いろいろな文脈でプログラミングの世界にTaoismに関心をもっている人々がいることは事実である.やや早まっているが,多少強引に,その背景や意味について考察しよう.

 Entsmingerのオブジェクト指向の教科書,SorensenやJamesのパロディにも現れているが,万物が流転する,世界は動的である,それゆえに捉えにくく,形を決めにくいというTaoの思想は,動的言語の精神的支柱となり得るものである.すなわち,対象世界をモデル化するときに,すべてを静的に割り切って捉えてしまうことは困難である.そのような流転や捉えにくさを反映したモデル化が必要なのである.オブジェクト指向にも静的な捉えかたを強調する向きがあるが,本来のオブジェクト指向はもっと自由で動的であったほうが強力であろう.我々のようなLisp系言語の研究者には嬉しい主張である.

 非還元的で全体論的な発想が要求されるマルチエージェントプログラミングや大規模分散プログラミングは,Capraのタオ自然学の発想に対応した東洋思想的なものが要求されてくる.筆者らが以前「コネクティクス」という名前で発表した複雑系としてのプログラミングの構想は,実はこの延長線上にあったものだとも言える (竹内郁雄,後藤滋樹,尾内理紀夫,斎藤康己,奥乃 博: コネクティクス構想,日本ソフトウェア科学会第8回大会論文集,B3-1 (1991)).人工生命もしかりであるが,なにも為さずして,創発現象を導くというのは,まさにTaoの無為自然の発想であろう.

 Algol 68に『道徳経』の第42章が引用されたのは,その文章が暗示するように,一番深い原理から順にものが生成してくるという様子が,Algol 68という巨大な言語の真の設計理念をうまく表していると考えた人がいたからであろう.

 プログラミングは難しい.しかし,中にはサラサラと素晴らしいプログラムを書く人がいる.それにかぎらず,コンピュータの世界にはGuruと呼ばれるような才能をもった人がいる.これは「悟りをひらいた聖人 (sage)」のごとく,余人の追従を許さないような自然体でプログラミングをしてしまう.このような人々に対する畏敬の念は自然にTaoismのsageを連想させる.これも,Taoがプログラミングの文脈で引用される一因であろう.このようなことがあるのであれば,自然体のプログラミングとはなにかについての議論が,これまた自然に興る.当然のことながら,なかなか言説として顕在化しないが….

 自然体ということから,TaoismはCHI (Computer Human Interaction) 設計の指針・哲学ともなり得る.「上善は水の若し」とあるように水のように相手や環境に合ってしまう柔軟な道具とかコンピュータはCHIの究極の目標の一つであろう.ただし,我々の知るかぎりでは,TaoとCHIの関係が明言された例はないようである (あったら,ご教示願いたい).

 それにしても,Taoがこういうふうに引用されるのは,老子の難解さと曖昧さが多種多様の解釈を呼ぶ余地をもたらしているからだという気もする.捉えどころのなさのゆえに,とりあえず拠り所にしやすいのである.聖人とプログラミングにおけるGuruとをダブラせることが容易なのは,そのあたりから来ているのかもしれない.Entsmingerの“The Tao of Objects”のように,TaoとWayが意味的にダブらされていることも,Taoが出てくるのに寄与していると思われる.

 また,Taoに内在する本質的なユーモアも大いに作用している.パロディにしたくなるような難解さと曖昧さとでもいうのだろうか.我々の開発したTAOも結局ここに行き着くように思う.そういえば,Hoffの“The Tao of Pooh”はPenguin bookのHumorの分類に入っている.Smullyanの“The Tao is Silent”の訳書のタイトルは『タオは笑っている』である.もちろん,この笑いは静かな微笑みである.世の中を,赤ん坊のように悩まず,微笑んで受け止める.これ自体が立派な自然体であり,ユーモアである.

 Capraは,科学も芸術のような領域であると言ったらしいが,プログラミングも芸術のような領域とすれば,そこでユーモアが重要になってくることは間違いない.すなわち,実はプログラミングにいつもユーモアがあることこそが,プログラミングを楽しみ,よいプログラムを生み出すための秘訣かもしれない.その点で日本のプログラミング界の状況は米国にくらべて劣っていると思うのは,単に「隣の芝はよく見える」現象なのだろうか? 残念ながら我々にはそう思えない.

 日本のプログラミングには,(Taoismでなくてもいいが) もっとユーモアが欲しいと提言して,本稿を締めくくりたい.

[文献] 本文中に埋め込んだ.

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

処理中...