Я танцую от Питмана
http://www.nhplace.com/kent/PS/Lambda.htmlДля меня Лисп это идея, что между компьютером и его юзером не должно быть препятствий. Гомоиконность, мощные макросы, интерактивность, мультипарадигменность по-моему вытекают из этого. Из этого вытекает и что лица, принимающие решения, не должны ставить препятствий между юзерами и их компьютерами, типа «надо запретить мутабельность» или «мощные макросы это проблема, требующая решения».
Гомоиконность, пожалуй, не вытекает непосредственно из идеи. Но она вытекает из требования мощных макросов, которое вытекает из идеи.
Прозрачные основания Лиспа, т.е. возможность легко определить Лисп в своих терминах, вытекают из необходимости понимать *произвольные* алгоритмы, описывать их и манипулировать ими. Думаю, тут существенна вся совокупность этих трех требований. Каждое из них по отдельности вытекает из исходной идеи. Макросы тоже вытекают из совокупности этих трех требований, но на месте макросов теоретически могли бы быть и fexpr'ы. Но если вывод, к которому пришло Лисп-сообщество «fexpr'ы невозможно эффективно компилировать», правильный, то макросы лучше соответствуют идее.
cons с этой точки зрения выглядит довольно случайным аспектом Лиспа. Но я не знаю фундаментальной абстракции для описания алгоритмов лучше чем cons, во всяком случае пока речь о тех компьютерах, до которых люди пока додумались.
cons это по сути просто «упорядоченная пара». В математике это понятие вводится и начинает активно использоваться очень быстро, но оно все же не фундаментальное. Фундаментальное это «множество»; множества не упорядочены, имеют много (в т.ч. бесконечно много) элементов. Короче, множества не очень хорошая фундаментальная абстракция для описания алгоритмов; «упорядоченная пара», очевидно, отличная абстракция. Я использовал гомоиконный язык, который пошел скорее по стопам APL, так что там не было cons, а были только (многомерные, вообще говоря) массивы, и идиомы строились вокруг них. Это было неплохо, но нехватку cons я ощутил довольно быстро. В итоге я думаю, cons это не случайность, но все-таки cons, наверное, не вытекает из идеи «между компьютером и его юзером не должно быть препятствий», просто мы пока не используем (не можем себе представить?) компьютеры, где cons было бы субоптимальным вариантом. В принципе, это же относится и к макросам, в сравнении с fexpr'ами.