アウトライナーは C言語のコード構造を理解するエディタから生まれた
Guy Kawasaki さんのポッドカストに、Dave Winer さんが出ている回をたまたまみつけ、大喜びで聴きました。2021年7月14日収録のポッドカストです。
Remarkable People: David Winer, the father of blogging and RSS
最初に Podcast.app の音声で聴いたのですが、Guy Kawasaki さんのウェブサイトでは、それを文字起こしした記事も公開しています。
2人のファンとしては、彼らの声を聞けるだけでも幸せなので、ぜひポッドカストを聴くことをオススメしたいですが、文字でよむのも、またいいものでした。
*
Guy さんは Dave さんを「プログラマであり、起業家、作家、そして一部の人からは "gadfly" と呼ばれている」と紹介しています。彼によると gadfly とは、批判によって人々を刺激して行動させるようなうるさい人、を指すことばだとか。
Guy さんが話しているように、何十年来の友人どうしの会話ですが、馴れ合いとはちがう、Dave さんらしい、きびしくも刺激的な内容のポッドカストだと思います。
*
おもしろい話題がいくつもあったのですが、ここでお話ししたいのは、アウトライナーが生まれる頃のエピソード。以下の部分です。ちょっと長いですが、引用します。
エイヤと要約すると..
1970年代半ば、Dave さんがウィスコンシン大学の院生だった頃に、友人から「プログラミング言語の Lisp のエディタは、そのプログラムの構造を理解している」という話しを聞いた。
Lisp 言語はシンプルな構造をしており、言語を開発している人が Lisp のエディタもつくっていた。Dave さんは、これが Lisp 用エディタが Lisp コードを理解できる理由だと考えた。
Dave さんは C 言語でプログラミングしていた。C はすばらしい言語だけれど、C でかかれたプログラムの構造を理解できるエディタはひとつもなかった。
そこで、Dave さんは C のコードの構造を理解するエディタをつくった。
そのエディタを友人にみせたら、英語を専門にしている友人が、ぜひつかいたいと言ってきた。
その希望に沿うよう、プログラミング言語の部分をとり除いたエディタをつくったら、それがホントにすごくよかった。
つまり、アウトライナーの出発点は、Lisp のコードの構造を理解する Lisp 用エディタの機能と同じような機能を、C 言語のエディタで実現することからはじまったようです。
以前、Dave さんがかいた記事にも、アウトライナーのはじまりがごく短く触れられていました (Tak.さんのかっこいい日本語訳もありますよ)。
この以前の記事にある「着想を得たのは、プログラムの階層構造を扱えるエディタを備えたLISPシステムからだった」が、今ひとつよく分っていなかったのですが、このポッドカストで、より具体的なイメージもできた気がします。
今回のお話しにある「Lisp のエディタが Lisp のコードを理解する」ということばは、必ずしもインデントによる階層構造を指していないと、ぼくは考えています。要は、コードを評価したエディタが、Lisp コードのもつ論理的な階層構造を理解していたことだと思います。
C 言語ではコードの構造が、Lisp ほどシンプルではないので、Dave さんのつくった C 言語エディタには、インデントによる階層構造の表示機能があったのだと思います。たとえば、コードの構造を理解し、階層構造をみやすくするためのインデントを自動で入れる機能があったのかもしれません。
そして、そのエディタから C のコードを理解する部品をとり除いたエディタとして、アウトライナーが誕生したのかもしれません。
先の記事で Dave さんは、C 言語ではなく Pascal という教育用言語の名前をあげています。ぼくの勝手な予想ですが、アウトライナーの出発点になったエディタは、たぶん C 言語を理解するエディタと Pascal を理解するエディタの両方だったのかもしれません。
どちらかのコードを評価できるエディタをつくれば、残りのひとつ用のエディタをつくるのもすぐにできたのではないかと、予想しています。
*
上に引用した文章の最後に、こんなセンテンスがあります。
これを日本語にすると、こんなメッセージでしょうか。
「それはほんとうに良いものだった。(でも) ほとんどの人は、アウトライナーが何か、理解していない。これも事実」
このことばは、WorkFlowy にはじまる今のアウトライナー復活(?) より前のことを話しているのでしょうか。それとも今のことを話しているのでしょうか。
Dave Winer さんの頭の中が、ちょっと気になっています。
この記事が気に入ったらサポートをしてみませんか?