Три новых языка программирования глазами их создателей

Не желая мириться с ограничениями уже существующих инструментов программирования, разработчики решают стоящие перед ними задачи путем изобретения... нет, не велосипеда, а собственного языка


09:47 31.10.2016   |   4168 |  Пол Крил |  InfoWorld, США

Рубрика Технологии



Разработчики развивающихся языков объясняют, чем обусловлена тяга к созданию новых инструментов разработки программ.

Сегодня в мире существуют уже сотни языков программирования, так зачем же прикладывать серьезные усилия к созданию еще одного нового? Разработчики трех новомодных языков с открытым исходным кодом – Coconut, Crystal и Oden – отвечают на этот вопрос очень просто: все дело в особенностях программирования. Регулярно появляются новые ниши, требующие заполнения, и новые потребности, которые нужно удовлетворять.

Не желая мириться с ограничениями уже существующих инструментов и преследуя вполне конкретные цели, разработчики создают собственные языки. Язык Coconut, компилируемый в код Python, привносит в него средства функционального программирования. Crystal объединяет в себе преимущества сразу нескольких языков. А причиной разработки Oden стало отсутствие некоторых возможностей в популярном языке Go, продвигаемом Google.

Побеседовав с разработчиками и командами, стоящими за каждым из этих языков, мы попытались получить более подробную информацию об их происхождении и целесообразности, а также о том, что побудило разработчиков решать стоящие перед ними задачи путем изобретения... нет, не велосипеда, а нового языка программирования.

Coconut: расширение функционала Python

«Лично мне функциональное программирование нравится, – заявил создатель Coconut Эван Хубингер. – Думаю, что функциональная парадигма открывает гораздо более естественный путь к размышлению о существующих проблемах и позволяет создавать более элегантный, лаконичный и читабельный код. Между тем среди 20 наиболее популярных языков программирования нет ни одного, ориентированного на функциональное программирование. Но у большинства из них есть функциональная альтернатива, следующая функциональной парадигме. У Java – это Scala, у C# – F#, а у Python нет ничего».

(В 2014 году у Java появились возможности, отвечающие функциональному программированию, но изначально этот язык не разрабатывался в качестве чисто процедурного языка. — П. К.)

Python стал первым языком, который начал использовать Хубингер. Но при всей элегантности решения задач императивного программирования Python совершенно не подходит для функционального программирования. Применять его в этом качестве слишком сложно и неэффективно. Coconut – уже вторая попытка расширения возможностей Python средствами функционального программирования. Ранее Хубингер, заканчивающий обучение в университете и принимающий участие в реализации проекта Yelp в качестве разработчика, предлагал язык Rabbit, в котором впоследствии разочаровался.

Crystal: объединение достоинств существующих языков

Главный разработчик Crystal Ари Боренсцвейг не только признает богатство уже существующих языков программирования, но и создает новое на основе их лучших черт.

«Да, в мире есть много разных языков, – согласился он. – Но Crystal предлагает совершенно уникальную комбинацию имеющихся языков. В нем предусмотрен статический контроль типов без явного описания типов локальных переменных и аргументов методов. Это позволяет ускорить создание прототипов и сделать язык более лаконичным и универсальным».

В Crystal реализованы автоматическое управление памятью и компиляция в машинный код без использования виртуальной машины.

«Для упрощения кодирования можно задействовать макросы, – добавил Боренсцвейг, работающий в компании Manas, которая занимается проектированием технического и научного программного обеспечения. – Использование уже существующих библиотек Си также не вызывает никаких сложностей».

Oden: на волне успеха Go

Oden был разработан любителем языка Go, у которого возникали трудности с этим амбициозным проектом Google.

«Мне всегда нравились в Go инструменты и процесс развертывания, – признался разработчик Oden Оскар Викстрем. – Обучаться этому языку можно без напряжения, постепенно, а инструменты для работы с ним по-настоящему эффективны. Вместе с тем у Go имеется ряд характеристик, которые я считаю проблемными».

Имеются в виду, в частности, отсутствие универсальных шаблонов и сложности с абстракциями потоков управления, обработкой ошибок и проверкой пустых указателей.

«Идея Oden состоит в том, чтобы ослабить все эти ограничения и создать более гибкую систему типов, сделав при этом акцент на функциональное программирование», – указал Викстрем, работающий программистом с 2011 года и одновременно занимающийся музыкой. В настоящее время он трудится в стартапе Empear, который специализируется на инструментах для анализа проектов.

Также было важно повысить интероперабельность инструментов Go и позволить обращаться к стандартным библиотекам Go без предварительного написания связующих компонентов.

Рост популярности развивающихся языков

Одно дело – создать язык и совсем другое – сделать его полезным для других людей, испытывающих аналогичные трудности. Каждый из разработчиков трех новых языков уже видит для себя конкретные сценарии их использования.

Oden, по словам Викстрема, хорош при решении задач «на территории» Go. В качестве примера здесь можно привести веб-серверы, различные сервисы и инструменты командной строки. Он подходит для создания библиотек с обобщенными структурами данных, которые определяются пользователями, типовых алгоритмов и абстракций управления потоками.

Язык Crystal благодаря неблокируемому вводу-выводу и облегченным процессам подходит для веб-сервисов. На нем уже написан ряд приложений командной строки, эмуляторов, веб-сайтов и ботов IRC.

«Crystal можно использовать также при создании конкурентных программ, когда вам нужно быстро получить рабочий прототип, обладающий приемлемой производительностью, – добавил Боренсцвейг. – И наконец, он может быть задействован для проектирования компиляторов, в том числе и компиляторов самого Crystal».

Язык Coconut подходит для написания тех же приложений, что и Python. Весьма обширный спектр этих приложений и обеспечил Python его сегодняшнюю популярность. Поскольку программы на Coconut компилируются в код Python, новый язык обладает всеми возможностями Python.

В то время как Crystal и Oden находятся еще на начальной стадии разработки, у Coconut в июне уже была выпущена версия 1.0, а в июле появилась и версия 1.1.

Первоначально Crystal был написан на Ruby, но затем его компилятор переписали непосредственно на Crystal. Компилятор Coconut написан на Python. Первый компилятор Oden был создан на Racket, а процедура приведения типов – на MiniKanren, реляционном языке программирования, встроенном в Scheme. Впоследствии компилятор переписали на Haskell.


Теги: Разработка ПО