しゅみは人間の分析です

いらんことばかり考えます

週報 2022/07/24 プログラミングと「読みやすさ」

祇園祭

近所の鉾が片づけられて日常が戻ってきたと安堵したら後祭が始まった。
相変わらず人が多くて歩きにくい。近年復活した後祭も観光客にバレ始めている。年々人が増えているような。

鉾をみて喜ぶのは2回くらいで満足した。今年は人ごみを避けてすごしている。

感染回避

月曜日に友人と会ったところ、濃厚接触者の濃厚接触者になりかけた。運良く友人が感染していなかったので無事である。

周りをみていると、思わぬ経路で感染する事例が増えているようだ。誰とも会ってはならない状況になってきている。

トマトは煮るだけでうまい

土井善晴アプリで、ただ煮るだけのトマトソースレシピが紹介されていた。
実際にやってみると、トマトを煮ただけでおいしさレベルの高いものができた。ニンニクもアンチョビも入れてないのにパスタとして成立する。

このトマトソースはパンに塗ってもいいしパスタとも合う。応用するとレシピが増えそうだ。

トマトは缶詰ではなく生のトマトを使う。工業製品は全部同じ味でつまらない。

礼服を買った

未だにリクルートスーツしか持っていない。借りればいいかな、と思っていたがよく考えると葬式は何回も行くことになる。買ったら5万円で済むが、借りると1回1万円である。買うことにした。

syntax比較の無意味さ

プログラミング言語をsyntax(文法)だけで比較するのは意味がない。プログラミング言語というソフトウェアはどんどんリッチになっていて、標準添付ライブラリが充実しVMコンパイラが複雑な機能を持つようになっている。

goroutineもsyntaxで比較する意味はない。goroutineの真価は、スケジューラがruntimeに実装され、いい感じに実スレッドに割りつけられるところにある。goプログラマから見るとほとんどOSである。実際に言語がOS化しているものは多いと思う。

ワンピースの読みにくさ

このところワンピースを読んでいる。100巻付近をKindleで読み、最新に追いついたあと、無料公開中の40巻付近を読んでいる。比べてみると最新話の読みにくさ、漫画としてのコマ割りの悪さがよくわかった。

 

妻氏に分析してもらったら、コマ数が多く、顔のアップが少ないのが問題だとわかった。

ふつう漫画は没入させるために顔のアップを入れる。近年のワンピースには、それがなくてほとんどカメラが引いている。見開きで目を引くコマがない。

また、コマ数もかなり多い。多いと読みにくくなるし、ぱっと見て情報を読みとりづらくなる。減らしすぎるとブリーチになるけど。

 


いろいろ合理的理由はあるのだろうけど、尾田栄一郎はさっさとワンピースを畳みたいのかな、と思った。また、大御所すぎて編集が指摘できない側面もありそう。

プログラミングと「読みやすさ」

言語はただ計算機と人間のコミュニケーションをするだけでなく、人間から人間に実装内容を伝える機能も持つ。趣味の開発でも未来の自分へ伝える必要があるし、OSSはチーム開発である。実際のプログラミングでは「読みやすく」書くことが大事である。

だが「読みやすさ」の客観的基準はないようにみえる。指標を作るのも難しい。結局、主観評価を戦わせることになる。厄介なことに、人によって認知的な特性が異なり、認知特性が違うと「読みやすさ」が大きく変わる。例えばワーキングメモリの大きな人は複雑なコードでも読めてしまうだろう。また、認知特性以外に熟練度にも影響される。

所与の条件として認知特性と経験がある。この条件は人間の脳の特性、あるいは状態である。あるプログラマの脳の状態にうまくハマるプログラミング言語があり、それが「読みやすい」と言われているにすぎない。「読みやすさ」は個々人の脳状態に依存するため、「読みやすさ」の比較は不可能である。こうしてプログラミング言語の比較は神学論争になる。永久に結論は出ない。

 

現実的な解は、誰にでも読みやすいように書くこと、である。認知資源も経験も乏しい人でも読めるように書く。下に合わせたら万人に読めるものができる。狭量なベテランはこれを嫌うが、チーム開発の投資としてはこの方向が安全確実である。

認知資源がない人でも読めるシンプルさを導入しつつ、複雑な言語機能を導入するのは難しい。ここが言語設計者の腕の見せどころであろう。この問題を解決するにはアイデアが必要だ。しかも、計算機科学の内部の問題ではなく、人間にとっての読みやすさはどんな性質を持つか?という、認知心理学的な問いでもある*1。計算機にしか興味のない人にはおもしろくないかもしれないが、私はこれこそがプログラミング言語のおもしろさだと思う。

*1:matzはこの問題に真剣に取り組んでいる