ちょっと古いが、黒須教授のUser Engineering Lectureより。 CGIのためにPerlを使おうとしたら複雑スギ、Lispの方がよっぽどユーザビリティが高い、というような話。
CGIプログラムを自分で書く必要がでてきたので、Perlの解説書を読み始めたら、プログラミング言語の使いやすさについて改めて考えさせられた。これまで10種類近くの言語を使ってきたことがあるが、新しい言語に接するたびに、なんでここをこういう仕様に設定したのだろう、という疑問を抱いたものだった。プログラミング言語を設計する人は、ロジックの面では有能かもしれないけど、それを使う人間に対する配慮に欠けているんではないか、という思いを強く持ったわけだ。
基本的には言わんとしていることは分かる。 「プログラミング言語は使う人のことを考えていない」というのはよく感じることだ。 特にLarryはそういうところには気を使わない、というか、慣れればよいと思ってるみたいだし。
元々、言語設計者はユーザインタフェースやユーザビリティの研究者ではないので、 その辺の知見が足りないというのはありそうなことだ。
では、黒須教授はどのような言語が良いと思っているかというと、Lispなんだそうだ。
これまで使ってきたプログラミング言語のうち、私が一番気に入っている言語はLISPである。ある意味で大変原始的な言語であるだけに、とても自由度が高く、強力で、魅力的な言語だと思う。
(中略)
こうした単純さは、プログラムの理解を容易にすることに役だっていると思われる。
ここでLispとはなんと通な。
その後、Perlの仕様に対する文句とかが並ぶのだが、 Perlの仕様の話をしている最中にいきなりContent-Typeのフォーマットの話が出てきちゃうことは論外としても、 全体を通して読み終わった後、奇妙な違和感が残る。なんだろうか。
まず第一に「Lispはプログラムの理解を容易にしない」という点だ。
Lispは確かに単純だ。自由度も高い。強力で魅力的だ。「美しい言語」と呼んでもいいだろう。 しかし、だからといってLispで書かれたプログラムが他の言語以上に理解しやすいかというと そんなことはない。むしろはっきりいって読みにくい。美しいと使いやすいはかならずしも一致しない。 このことは根っからのLispファンであるPaul Grahamも認めている。
なぜLispのプログラムが読みやすくないかというと、理由はいくつかあって
などがあるだろう。ここ数十年積み上げられてきたプログラミング言語の伝統に沿っていないというのもあるかもしれない。もちろん、Lispはそんな伝統ができる前から存在していたのだが。
第二に、プログラミング言語は確かにインタフェースであるが、他のインタフェースとは少々違うかもしれない点だ。
インタフェースである以上、ユーザビリティの良し悪しがあるのは当然のことだ。 最初にいったようにユーザビリティにあまり配慮していない部分を持つ言語があまりにも多いのも事実だ。
しかし、他のツールのインタフェースが、ボタンを押す、メニューから選ぶ、というような非常に限られた 選択肢しか提供しないのに比較して、プログラミング言語は条件判断や繰り返しを含む異常に柔軟な指定ができる。 また、その表現すべき「仕事」も他と比べると圧倒的に複雑だ。 その結果、プログラミング言語自身も、大規模で、複雑で、習熟に時間のかかるツールである。 そういうツールのユーザビリティは、 「誰にでも使いやすい」を目指すいわゆる普通のユーザビリティとは違うかもしれない。
なにより違和感があるのは、プログラミング言語デザイナーの数を考えると、 本来この文章の対象になるべき人物(で日本語が読める)のは指折り数えるほどではないかと。
とはいうものの、ユーザビリティの専門家によるアドバイスを受けて設計されたプログラミング言語ってのも 見てみたい気がするなあ。