ちょっと古いが、黒須教授の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はそんな伝統ができる前から存在していたのだが。
第二に、プログラミング言語は確かにインタフェースであるが、他のインタフェースとは少々違うかもしれない点だ。
インタフェースである以上、ユーザビリティの良し悪しがあるのは当然のことだ。 最初にいったようにユーザビリティにあまり配慮していない部分を持つ言語があまりにも多いのも事実だ。
しかし、他のツールのインタフェースが、ボタンを押す、メニューから選ぶ、というような非常に限られた 選択肢しか提供しないのに比較して、プログラミング言語は条件判断や繰り返しを含む異常に柔軟な指定ができる。 また、その表現すべき「仕事」も他と比べると圧倒的に複雑だ。 その結果、プログラミング言語自身も、大規模で、複雑で、習熟に時間のかかるツールである。 そういうツールのユーザビリティは、 「誰にでも使いやすい」を目指すいわゆる普通のユーザビリティとは違うかもしれない。
なにより違和感があるのは、プログラミング言語デザイナーの数を考えると、 本来この文章の対象になるべき人物(で日本語が読める)のは指折り数えるほどではないかと。
とはいうものの、ユーザビリティの専門家によるアドバイスを受けて設計されたプログラミング言語ってのも 見てみたい気がするなあ。
私: なぞなぞだよ。朝は四本足、昼は二本足、夜は...
子: あ、知ってる。「人間」でしょ。
私: 「スフィンクスのなぞ」だね。でも、最後まで聞こうね。
私: 朝は四本足、昼は二本足、夜は八本足はなんだ。
子: え〜。本当に答えがあるのぉ。
<...しばらく考える...>
子: わかんない。降参。
私: 答えはある日の食事。朝は豚肉を食べ、昼はチキン、夜はお寿司でタコを食べた。
子: うーん。そんなのありぃ?
私: スフィンクスに喰われた人もそう思ったろうねえ。
今日は司会だから早く、と思っていたにもかかわらず、 なんだかんだと時間がかかってしまって 遅刻してしまった。出ようと思った時間よりも出発が10分以上遅くなってしまったのだ。 集会15分前には着いてようと思ったのになあ。 結局、監督に司会をお願いしてしまった。あ〜ぁ。
来週はさらに15分早く出るようにしよう。
「軽量言語(LL)」っていうけど、「アジャイル言語」の方がよくね、という話(か?)
アジャイル宣言を言語に適用すると
だそうだ。 うむ、確かに。
最近のnil.to_sの挙動変化に関連して、Smalltalkではどうなってるか、という話。
いやあ、Smalltalkは概論しか知らないから為になるなあ。
そういえば、PythonのNoneは、
から、「なんでもない」を積極的に実践してるなあ。 ある意味、素晴らしい。
(株)ネットワーク応用通信研究所によるRuby on Railsトレーニングプログラム(有料)、 その三回目。
米子の第一便で東京へ移動。朝が早いよ。
で、毎回のことだが、初日の午前中は私による「RubyとRuby on Railsの概要」。 今回は今までよりもirbを使ってコードを動かす例題が少し多かった。 いや、でも、私が動かすんでなくて、受講者に自ら動かしてもらった方が良かったか。
次回は、スライドをちょっと手直しして、手を動かす時間を加えようか。
午後はゆぞさんによる実践コース。ただ座学で聞くだけでなく、 TA付きで自分でプログラムを組むから(初心者には向かないが)、 学習効果は高いのではないかと思う。
これがこのまま3日目まで続く。 見ていると、前回、前々回よりもスムーズに教えられているようだ。 講師が慣れてきたのか、受講生が優秀なのか。前者...だといいなあ。
その後、懇親会。 懇親会を行うととたんにコミュニケーションがスムーズになる。 過去の経験からも二日目以降の方が質問が活発に出たりする。 学習効果を考えるなら、できるもんなら講習会前日の夜とかに懇親会をしたいよ。
決してTOP500に載ったりすることはないし、 LINPACKの実行に最適化されてたりもしないけれど、 世界でもっとも強力な「スーパーコンピュータ」がまさに存在している。
その名はStorm。ワームなどで乗っ取られたコンピュータで構成される ボットネットである。
こわい、こわい。
(EPNを含む)DRMが存在すると、ユーザは特定のPCやハードディスクに縛られてしまう。 それらが壊れるといっきにデータを失うことになる。 これは買い替え需要を減らす結果にもなり、結果として経済に悪い影響を与えかねない。
どうしてもDRMが必要だというのなら、やはりFairPlayやEPNのような方式にならざるを得ないだろう。この場合、一定期間を経ると暗号が解除される仕組みを組み込んで欲しい。5〜10年で暗号が自動的に解除されるのであれば、それまでの5〜10年間くらいは我慢できるかもしれない。
補償金とDRM、どちらか二択と言われれば、やっぱ補償金かなあ。 DRMは筋が悪すぎる。
法を尊重しない人なら、DRMを選択してクラックするんだろうけど。
取材を二件も受ける。 主に地域振興とかそういうテーマ。
確かに話題にはなってるんだけど、本当にお役に立ってるんだろうかと 不安にならないでもない。まあ、松江市の露出という意味ではそんなに悪くないか。
今日はチュートリアルの日。
午前中は講師控え室を借りてスライドを書いていた。 今回の発表はEuruko'08のモノをベースに、Meta-DSLについて書き加えたもの。 Meta-DSLについてはRubyConf'08で中心的テーマにするつもり。
午後はJames Edward Gray II(初代RubyQuizの中の人)と、 Gregory Brown(PDF::Writeの中の人)による「The Ins and Outs of Ruby I/O」。RubyのI/Oにまつわるいろいろについて。
大変面白かった。
教える方は、私が目の前にいたのでやりにくかったのではないだろうか。 資料はこちら。
今日はチュートリアルの日で人が少ないはずだが、 大変活気があった。人狼やってる人も居なかったしね。
ちょっとくたびれたので、早めにホテルに送ってもらう。 が、結局ネットを眺めてて寝るのが遅くなってしまうという。