見出し画像

アウトライナーは 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 さんらしい、きびしくも刺激的な内容のポッドカストだと思います。

おもしろい話題がいくつもあったのですが、ここでお話ししたいのは、アウトライナーが生まれる頃のエピソード。以下の部分です。ちょっと長いですが、引用します。

It was the first thing that I worked on, and I got this idea from a friend of mine when I was in grad school at the University of Wisconsin. He told me about, editors for LISP, which is a programming language, that understood the structure of the program.

And LISP is very simple structure. The guy who wrote it, who designed both who designed the programming language also created an editor for it. I think that’s what people loved about LISP is that it’s simplicity and the fact that its editor understood the structure of the program.

And I was off writing in C, and C, a wonderful language, but the editors, that was completely up to you, and none of them understood structure. So I said, “Why don’t I just do a program editor for C that understands structure?” and I did that. And then I showed it to some of my friends who were English majors and they said they wanted–one of them said he wanted to use it!

I said, “You can’t use it. This is for programmers,” but there’s the idea, right? So then that bothers me. I go, “Why couldn’t I make it so that he can use it?” And that led me to, “Let’s take the programming language out of it. Let’s see what it’s like without the programming language in it.”

And it was nice. It was really nice. Most people don’t understand outliners. It’s a fact.

エイヤと要約すると..

  • 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 を理解するエディタの両方だったのかもしれません。

どちらかのコードを評価できるエディタをつくれば、残りのひとつ用のエディタをつくるのもすぐにできたのではないかと、予想しています。

上に引用した文章の最後に、こんなセンテンスがあります。

And it was nice. It was really nice. Most people don’t understand outliners. It’s a fact.

これを日本語にすると、こんなメッセージでしょうか。

「それはほんとうに良いものだった。(でも) ほとんどの人は、アウトライナーが何か、理解していない。これも事実」

このことばは、WorkFlowy にはじまる今のアウトライナー復活(?) より前のことを話しているのでしょうか。それとも今のことを話しているのでしょうか。

Dave Winer さんの頭の中が、ちょっと気になっています。

この記事が気に入ったらサポートをしてみませんか?