Готовый перевод Let Over Lambda - 50 Years of Lisp / Let Over Lambda - 50 лет Lisp-у: Приложение B - Языки, которые следует избегать
B.1 Мнение
Есть только две индустрии, которые называют своих клиентов "пользователями".
-- Эдвард Тафти
Все в этом приложении, а на самом деле во всей книге, должно рассматриваться как мое частное мнение. Тем не менее, я лично не рассматриваю это приложение как мнение, а скорее как краткое исследование некоторых философий нелисповых языков и их проблем с точки зрения лиспа. Я не считаю, что писать хороший код невозможно на любом из этих языков, и не считаю неумными тех, кто их разрабатывает и пишет на этих языках. Пожалуйста, выслушайте меня и постарайтесь не обижаться. Для абсолютного большинства из вас это не относится к вам персонально.
Блаб Централ
Блаб языки существуют даже дольше чем лисп. Перед тем как лисп языки были стандартизованы и написан приличный лисп компилятор часто были действительно нужны простые для реализации, но бедные для серьезного програмирования блаб языки. Но сейчас, когда возможности программной разработки так широки, почему большинство программистов использует небольшое количество языков, которые по своим целям и назначению неотличимы друг от друга? Я думаю, что это может быть объяснено из теории игр.
Порой для магазинов автомобилей, кофеен и унверситетов часто наблюдается эффект кластеризации, когда учреждения построены нерационально близко друг к другу. Если бы эти учреждения были равномерно распределены, а не кластеризованы, то скорее всего они могли бы обслужить большее количество рынка и таким образом каждое получило бы больше прибыли. Но, так как учреждения не способны к кооперации, и, если одно учреждение переедет ,то окажется в более затруднительном положении, чем если останется на месте, никто не двигается и кластеризация остается.
Похожий феномен наблюдается в языках программирования- я называю его Блаб Централом. Большинство доминирующих языков не способны или не хотят предлагать новые свойства и даже улучшать свой основной дизайн, потому что очень озабочены, пытаясь быть похожими на другие доминирующие языки. Если бы дизайнеры и разработчики языков программирования могли бы скооперироваться, результатом было бы намного более разнообразное многосвойственное семейство языков, и ваши шансы найти язык наиболее подходящий для вашей задачи увеличились бы1. Конечно большинство производителей языков программирования либо большие компании либо академические комитеты редко кооперируются, так что имеем то что имеем: большинство программистов втиснуты в Блаб Централ. Так как почти все программисты изучают эти языки Блаб Централа, удаление языка от Блаб Централа означает потерю доли рынка.
1 Хотя, используя макросы, вы можете создать такой идеальный язык.
Как ни странно это звучит для лисп программистов, это выглядит вполне достоверным экономическим объяснением для Блаб Централизованных языков. Ужасает и разочаровывает тот факт, что мировые программистские ресурсы растрачиваются на использование одинаково плохих инструментов для любой задачи. Но к счастью для программистов повсюду есть возможность быстрого, безостановочного путешествия в один конец от Блаб Централа: экспресс COMMON LISP.
B.3 Блаб ниша.
Существует без малого тысячи языков программирования и не все из них могут соперничать с Блаб Централом. Есть, конечно, Нишевые Блабы. Некоторые из них очень близки к лиспу, предлагая набор свойств в лисповском стиле, хотя ни один не имеет лисповскую систему макросов, что определяет их Блабовское отличие.
Многие из этих языков страдают от нехватки надежного стабильного стандарта, а также от ошибочной философии. Часто они были спроектированы для достижения смутной, плохо определенной цели - хорошего стиля. Никто никогда не был действительно уверен, куда этим языкам следует идти или как они должны развиваться. Архитекторы языка могут и, зачастую, решают изменить язык для достижения того, что считается улучшенным языком, после чего все начинают суетиться, подгоняя свой код под новые требования2. Следует избегать языков, которые не уважают пользователей, навязывая единый правильный стиль программирования.
2 И у них нет макросов, чтобы облегчить боль.
В лиспе есть, почти всегда, объективно правильный путь развития: если что-то делает язык более мощным, его следует добавить. Если что-то делает язык менее мощным, его следует убрать. Стабильный стандарт COMMON LISP не является результатом прекращения развития языка, а скорее отсутствием идей как сделать ядро языка лучше чем есть3. Нельзя сказать, что все так и останется, но COMMON LISP на данный момент представляет собой вершину нашего знания о языках программирования. Вместе с тем Нишевые Блабы имеют право на существование. Иногда они даже вносят ценные идеи в лисп. Но почему бы не оказать вам услугу и не реализовать ваш Нишевый Блаб как предметно ориентированный язык (domain specific language) на COMMON LISP?
3 В лиспе вам не нужно обновлять стандарт для расширения всего языка.
Переведено на Нотабеноиде
http://notabenoid.org/book/40014/286434
Переводчики: Charlz_Klug, alex_fff
Настройки
Готово:
