nobusunからツッコミをいただいたが、ちょっと考えさせられるものがあった。
LISP が読みにくさは、慣れの問題ではないでしょうか。
うむ。しかし、「慣れ」については、いくつか気になることがある。
まず第一に、Lispを知って数日の人に「Lispわかんない」と言われた時の反応としては、 「慣れの問題」というのは適切かもしれないが、 私はLispに関して決して初心者ではない(上級者だとも言わないが)。 数千行のLispプログラムを継続的にメンテしていたこともある。 それでもなお読みやすいとは思えない人に「慣れの問題」というのは不適切ではないかと。
第二に、ユーザビリティの話をしている時に「慣れ」の話は反則ではないだろうか。 人間の適応能力はすばらしいものがあって、どんな悪いものでも、 強固な意志をもって、ある程度時間をかければたいてい慣れることができてしまう。 しかし、そんな「慣れる苦労」を少なくしようという試みがユーザビリティではないだろうか。
では、「慣れ」の問題を排除して考えると、はたしてLispは使いやすいか。
nobusunは以下のように述べておられる。
すくなくとも Scheme については以下のように思います。
- 表現の種類がすくなくても、抽象化力が強いので、「冗長」というよりは「簡潔」である。
- データ部分とコード部分を区別しないでいいのは利点。
- 閉鎖的というのは、最近の実装にはあてはまらない。
- マクロについては、たしかに別の言語を許すようなものですが、簡潔に書くためには便利。
- 本来複雑なプログラムを如何に抽象化するかが、読みやすさにつながる。抽象的な表現力がつよい言語で記述できるほど読みやすくなる。
Lispの冗長さについてはPaul Grahamの「Being Popular」(翻訳)にもある。端的には
a = b[x,y]
と
(set! a (aref b x y))
の違いだ。 この冗長さは細かいことではあるが、プログラマに与える精神的な負荷という点では無視できない。
「データ部分とコード部分を区別しなくていいのは利点」というのは、 マクロ以外の点では成立しないのではないかと思う。 そして私はユーザビリティの観点からはマクロに否定的だ。
では、言語のユーザビリティはなにによって決まるか。続きはまた明日(おいっ)。
まず、ともさんのツッコミへのお返事。
Windows に未だ慣れることができない私としては、『「慣れる苦労」を少なくしようという試みがユーザビリティ』というお言葉には同意できないかも。
えーと、論理がよく分かりませんでした。私もWindowsには慣れることができてませんが。 この文を解釈すると「Windowsはユーザビリティが高いはずだが、慣れる苦労は大きいぞ」 という意味に読めるんですが、それはfalse assumptionかも。
それはともかく、ABC 順とかあいうえお順のキーボードとかは初心者対応かもしれないけど、ユーザビリティは高くないと思います。
ええ。「初心者にも優しい」と「初心者だけに優しい」は混同してはいけませんよね。 今回はプログラミング言語のユーザビリティについて考えていますが、 プログラミングが本質的に複雑で、その結果プログラミング言語も習得にそれなりにコストがかかるものである以上、 「初心者(だけ)に優しい」ユーザビリティは不要だと考えています。
ところで、中置記法が前置記法よりも読みやすいのは数学教育のせい、即ち、慣れの問題じゃないでしょうか?
違います(きっぱり)。これは「常識(or 伝統)を活用する」という立派なテクニックです。
「慣れ」との違いは個人的かどうかですね。どんなツールでも慣れることはできますが、 その「慣れ」は個人にとどまります。しかし、数学的記法のような広く使われ受け入れられているものは、 個人の範囲を越えてユーザビリティ向上のために用いるに足る「常識」として利用できると思います。
次にshiroさんのツッコミへのお返事。
ひとつだけ、ユーザビリティの議論は、どういうユーザを対象としているかを明示しておかないと無用の混乱を引き起こすと思われますので、そこは何卒宜しく。
もっともです。
ですが、正直なところプログラミング言語のユーザビリティについては客観的に評価を行うために必要な 研究などの蓄積はないと思います。ですから、現状では「私にとってはこうするのが良い」と提示し、 それに賛同するか、反対するかで議論を深めていくしかないと思います。
あえて対象を明示するならば、「現代的なコンピュータ(と数学)の基礎知識を持っているプログラマ」でしょうか。 より具体的には「わ・た・し」です。
午前中は子供の参観日に出席する。夏休みの自由課題(うちの子の小学校では「一人一挑戦」と呼ぶらしい)を発表する、ということで、 それぞれの子供たちがいろいろなことをしているのを興味深く観察する。
毎日相当の距離を走って時間を記録する子(45分くらい、毎日数秒しかタイムが違わないのが印象的)、 父親の道具を借りたか本格的なベンチを作ってしまう女の子、 テルミット反応で砂鉄から鉄を練成しようとした子などが印象的であった。
ところで、レポートを読んでいると「失敗しました」とか「うまくいきませんでした」とかいう表現が目立つ。 そういうのを読むと心の中で「どう失敗したのか、何を期待してたとに何が起きたのかをちゃんと書かないと、レポートにならんじゃないか」と突っ込んでしまうのは職業的なサガか。理系的な性格か。
そんなことだから、理系の男はモテないなどと言われるのかもしれない。
X31はおおむね思い通りに動くようになった。無線LANはmadwifiで安定して接続できるようになったし。
ただ、Debian標準のカーネルでは、Speedstep-centrinoモジュールがACPIを参照する設定になっているので、 APMを使っている私には使えない。そこでmake-kpkgを使ってCONFIG_X86_SPEEDSTEP_CENTRINO_ACPIをoffにして、 カーネル再コンパイル。
このカーネルを使うとcpufreqdを使ってCPUクロックの調整ができるようになった。 めでたし、めでたし。
と、言いたいところだが、今度はサスペンドができなくなった。 ふたを閉じてもサスペンドが始まらないし、apm -sでサスペンドさせると、 なにをやっても復旧しない。
サスペンドができないのは、CPUクロックの調整ができないのよりも嬉しくない。だが、 なぜ両立ができないのか。違いは上記のCONFIG_X86_SPEEDSTEP_CENTRINO_ACPIの設定を変えたのと、 CPUタイプをCONFIG_M686からCONFIG_MPENTIUMMに変えただけなんだがなあ。
Python関連のpodcasting。
っていうか、podcastingってこうやって音声ファイルを用意することなんだっけ。 ふーん。
いろいろあるが聞いてみたのは以下のふたつ。
ほんとに言語にしか興味がないのね。
特に後者は面白かった。まあ、あまり喧嘩を売らない程度に比較しているのが好ましい。 特に面白かったのは「RubyがなかったらPythonはもっと広まってただろう」というのと、 彼(Ron Stephens)が私の名前を発音できないところ(27:03あたり)
Ruby was created by yashimoto... I can't say his name... matz... they call him, yoshimatsu.... matz.
やっぱり海外ではMatzというニックネームを使うことにして正解だったようだ。
DHH (David Heinemeiser Hansson) さえちゃんとミドルネーム発音してもらえないことが多いようだからなあ。
しばらくコンタクトをしてなかったので長時間はつらい。 ので、眼鏡を作成する。
今度は黒縁。外見はあまり変わらないか。
チタンのほそい弦(つる)のが軽くてかけ心地もよかったが、 以前にもフレームを折っているので今回はもうちょっと丈夫そうなのを。
教会に集合し、何人かの仲間と一緒に新見まで移動。 今回は運転してもらえるのでだいぶ楽をした。
新見ではいろいろな話を聞けて大変ためになった。 夜更かしが多い生活をしているので、こういうずっと話を聞くタイプの集会では 居眠りをしてしまうことがあるのだけど(自制心のなさよ)、 今回は一生懸命メモをとったので、(ほんの一瞬を除き)集中力を維持できた。 メモ重要。後で思い返せて役に立つしね。
印象に残ったこと
で、うちに帰った風呂の中でRubyのことをぼーっと考えていたのだが、 もしかするとM17N化しても文字列のデフォルトはbinaryのままでいいんじゃないだろうか。 大抵の文字列処理は正規表現を使えば可能なのは分かってるんだし。
今、(1.9に)存在しなくて、M17Nに絶対欲しい機能はなんだろう。
文字単位の文字列処理
欲しいこともあるだろう。いつも必要かどうかは分からないけど。
文字、文字クラスの名称による指定
「\p{KATAKANA LETTER MA}」とか。これは欲しいと思う気持ちは分かる。 なにが書いてあるかわからない「\343\203\236」という表現よりはずっと良いから。
他にあるのかな。
あと、アプリケーションデフォルトが分からないライブラリをどうやって構築すべきかは きちんとした方針を用意しないと使えないM17Nになってしまうだろうな。
今日は家族を連れて新見へ。
かねて予告されていた通り、ステーク会長会が再組織された。 新しく召された人は予想外ではあったが、納得のいくものであった。
語られることのない背景や彼らの決意を考えると 感慨深いものがある。 顧問のひとりは、私が子供のときから良く知っている人で、 なんだか時代の流れを感じたり。
親戚と若干の交流。
あと、配車で少しだけトラブルがあった。 担当としてはドキドキしたが、結局なんとかなったみたい。