Lispが読みにくいのは括弧のせいだけじゃない

What makes Lisp difficult to read?

Lispの括弧過多な構文が読みにくい理由を、認知科学の知見から考察。人間の知覚には「ハードウェアアクセラレーション」があり、近接性や閉合性のゲシュタルト法則がコードの視覚的グループ化を左右する。Cスタイルでは括弧やカンマの配置がこれらの法則に従い、周辺視でも構造を把握しやすい。一方Lispは関数名が開き括弧の後ろに来るため、対応する括弧が離れ、ワーキングメモリへの負担が大きい。著者はこの理論を、より読みやすい構文設計の指針として提案する。

Lispの表記法はCの表記法よりも一般的でないため、プログラマーはそれに慣れていないだけだという主張がある。しかし、私はそれだけではないと信じている。
  1. pfdietz

    Lispは読みにくくないので、この質問の意味が理解できない。

    これはフランス語を知らない人が「フランス語の何が読みにくくしているのか?」と尋ねているようなものだ。

  2. tombert

    ここで他の人たちが言っていることを繰り返すよ。Lispは実際には、客観的に見て「読みにくい」とは思わない。

    他の言語とは違うから「難しい」と感じるだけで、その違いのいくつかは、言語を理解すればむしろ可読性を向上させると思う。例えば、どこでも括弧を強制的に使うことで、優先順位が決して曖昧にならないことが保証される。

  3. lukaszkorecki

    Swiftのコードを一度も触ったことがない人にとって、Swiftのコードを読むのが難しいのと同じことだ。つまり、慣れ親しんでいないだけだ。

  4. groundzeros2015

    不慣れさだよ。

  5. whartung

    括弧は大きくて目をそらす字形であり、(訓練を受けていない目には)区切り文字として目立たない。

    考えてみてほしい:

    (defun split-line (line)

    (remove-if #'(lambda (word) (string= word ""))

    (split-sequence:split-sequence #\Space line)))

    ここで、括弧以外にもっと「軽い」字形があったと想像してみよう。

    .defun split-line .line,

    .remove-if #'.lambda .word, .string= word "",,

    .split-sequence:split-sequence #\Space line,,,

    明らかにこれは()を.に置き換えた作為的な例だが、括弧がどれほど「重く」、目に映るものをどれほど支配しうるかがわかるだろう。

    経験を積めば、括弧は消え去る。括弧が大きくて一般的であることが、本来以上に会話を支配してしまうのだ。

この日のほかの記事

2026-09-28