Common Lisp - это как пример на этом! : -)
В некотором смысле, они поняли это в значительной степени правильно: есть некоторые вещи, которые кажутся странными с теоретической точки зрения, но позволяют современным неспециализированным процессорам быстро их реализовать. Например, есть несколько бессмысленных арифметических выражений, которым разрешено возвращать мусор, а не сигнализировать об ошибке, так как это может быть намного эффективнее.
Другими словами, они пытались быть независимыми от платформы, и это только увеличивало сложность практически без выгоды. Одним классическим примером является подсистема имени пути; подпись функции make-pathname
выглядит следующим образом:
make-pathname &key host device directory name type version defaults case
В 1980-х годах, когда он был стандартизирован, могло показаться разумным включить встроенную поддержку очень богатых файловых систем, но я не видел VAX (или любой другой системы с файловой системой с версиями) более 10 лет. Сегодня сложность в том, что большинству людей наплевать на . (Я знаю, что имена путей и логические пути являются технически отдельными функциями, но они не так уж далеки от того, что они пытаются сделать.)
Как программист, вы никогда не сможете угадать, в какой области вам понадобится гибкость в будущем, или даже по какой оси вы захотите гибкости - программисты это хорошо знают, вот почему такие глупые слова, как «agile», имеют стать общим. При разработке независимого от платформы языка вы имеете дело с худшим из обоих миров: языки предназначены для абстракции, а платформы очень конкретны. Конечно же, каждый независимый от платформы язык полон приличного количества отстой, от C до.