Средства разработки приложений



              

Специализированные языки


Майк Шапиро
Перевод Сергея Кузнецова

Оригинал: Mike Shapiro. Purpose-Built Languages, ACM Queue, Vol. 7, No. 1, January 2009

В компьютерной лаборатории моего колледжа в перерывах еженощных бдений над кодированием и отладкой обсуждались две вечные темы: «что лучше, emacs или vi?» и «какой язык программирования самый хороший?». Позже, когда я начал работать в индустрии, я заметил, что споры вокруг языков программирования продолжались и в кампусах Кремниевой Долины. Это было в 1990-е гг., и многие в Sun ожидали, что Java завоюет значительную популярность среди разработчиков, особенно тех, которые до этого использовали C или C++.

Я всегда считал, что понятие наилучшего языка является слишком субъективным и слишком зависимым от природы текущей программистской задачи. Однако в течение своей карьеры я потратил много времени на обдумывание двух связанных с этим вопросов, которые кажутся мне более принципиальными. Во-первых, не сокращается ли со временем число языков, используемых при разработке программного обеспечения в целом? Другими словами, не сужается ли множество компьютерных языков? Во-вторых, из-за чего некоторый конкретный язык оказывается более пригодным, или более полезным, или быстрее осваиваемым при решении некоторой частной задачи?

При размышлении над этими вопросами я пришел к заключению, что интереснее наблюдать не за битвой тяжеловесов, а за их менее изученными отпрысками – специализированными (purpose-built) языками. Эти языки вырастают как сорняки на обочине основного пути развития языков, и их свойства и история заставляют пересмотреть интуитивные ответы на принципиальные вопросы относительно языков программирования. С учетом специализированных языков оказывается, что разработка языков программирования вовсе не сокращается, а их полезность определяется вовсе не улучшенной структурой или более развитыми свойствами с традиционных позиций конструирования языков. В специализированных языках даже игнорируется строгое определение, являющееся нормой для разработчиков компиляторов:




Содержание    Вперед