Почему Lisp трудно читать: скобки не там, где нужно
What makes Lisp difficult to read?
Пол Т. М. разбирает, почему синтаксис Lisp с обилием скобок воспринимается как менее читаемый, чем C-подобный. Опираясь на когнитивные эффекты — закон близости, эффект Струпа, ограничения рабочей памяти, — он показывает: в Lisp открывающая скобка стоит до имени функции, из-за чего парные скобки далеки друг от друга и не группируются при беглом взгляде. В C-нотации аргументы и разделители расположены ближе, что снижает нагрузку на «мысленный стек».
Поскольку Lisp ставит имя функции после открывающей скобки, расстояние между скобками увеличивается. Это делает менее вероятным, что скобки окажутся достаточно близко, чтобы сканироваться как единая форма.
- pfdietz
Lisp не сложно читать, так что я не понимаю вопроса.
Это как если бы кто-то, не знающий французского, спрашивал: «Что делает французский трудным для чтения?»
- tombert
Повторю то, что здесь уже говорили другие: я не думаю, что Lisp на самом деле «труден» для чтения в каком-либо объективном смысле.
Его «трудно» читать, потому что он отличается от других языков, но я считаю, что некоторые из этих отличий на самом деле улучшают читаемость, как только вы понимаете язык. Например, принудительное использование скобок везде гарантирует, что приоритет операций никогда не бывает неоднозначным.
- lukaszkorecki
Это то же самое, что делает чтение кода на Swift сложным, если вы никогда с ним не работали: отсутствие привычки.
- groundzeros2015
Непривычность.
- 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,,,
Очевидно, это надуманный пример замены () на ., но вы можете видеть, насколько «тяжёлые» скобки и как они могут доминировать в том, что видит глаз.
С опытом скобки исчезают. Скобки, будучи крупными и распространёнными, захватывают внимание больше, чем следовало бы.