Выигрыш в покер позволил создать новый язык программирования, поддерживающий .NET

Скоро в области Open Source появится новый язык программирования Cobra, созданный на базе Python и поддерживающий .Net. Над ним на уже несколько лет работает Чак Эстербрук, который получил возможность посвятить все свое время любимому занятию, завоевав первое место в покерном турнире. На этот раз он не блефует: уже вышла версия Cobra 0.7.4, а на подходе — версия 1.0. Основан язык на принципах открытого кода и полностью доступен всем желающим, что, как рассчитывает Эстербрук, должно привлечь к нему интерес не только рядовых программистов, но и крупных производителей наподобие Microsoft и Novell.

Cobra представляет собой объектно-ориентированный процедурный язык, снабженный средствами тестирования модулей, поддержки контрактов и другими функциями. По словам Эстербрука, его можно использовать на платформах .Net и Mono, а также в средах Windows, Mac, Linux и Solaris.

Эстербрук распространяет свое детище в соответствии с лицензией MIT. Он представил Cobra энтузиастам языков программирования на симпозиуме Lang.Net, который организовала Microsoft в своем рендмондском кампусе.

К несомненным достоинствам языка следует отнести ряд встроенных особенностей, упрощающих разработку приложений: простой синтаксис, высокая производительность, возможность статического и динамического ввода. Как рассказал Эстербрук, своими корнями Cobra уходит в “большую четверку языков» — Python, C#, Eiffel и Objective-C, хотя определенное влияние на него оказали также Visual Basic, D, Boo и Smalltalk. “С самого начала Cobra задумывался как наследник Python и Objective-C”, — поясняет автор. Уже на нынешнем этапе язык допускает как динамический, так и статический ввод, поскольку¸ как уверен Эстербрук, выбор должен оставаться за программистами, а не навязываться создателями языков; смена подхода не должна требовать перехода на другой язык.

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

Сильные и слабые стороны Cobra

Эстербрук назвал компилятор своего языка самореализующимся и самодостаточным. Выбор в пользу C#, а не Microsoft IL (Intermediate Language — промежуточный язык Microsoft) он объяснил наличию в C# постоянно растущего числа функций супервиртуальных машин, ускоренной реализации и способность совмещать проверку ошибок с работой в режиме командной строки.

Но автор признает, что у Cobra есть слабые стороны. Сюда он относит недостаточную зрелость языка и отсутствие подключаемых модулей для работы в интегрированной среде разработки (integrated development environment, IDE).

Сравнивая свое детище с Python, Эстербрук отмечает, что у Cobra лучше реализована проверка на ошибки, тестирование модулей, математические функции, синтаксис, выше самодостаточность и быстродействие. В будущем автор планирует дополнить свой язык подключаемым модулем Visual Cobra для работы с Microsoft Visual Studio.

Он надеется, что в конце концов Cobra станет самым лучшим и производительным высокоуровневым объектно-ориентированным языком общего назначения. Для этого, в частности, в нем будет предусмотрена поддержка запросов Language Integrated Query корпорации Microsoft и интеграция с ее средой Dynamic Language Runtime. В числе других перспективных особенностей автор назвал расширенные возможности проверки модулей, использование различных единиц измерения (например, футов и метров), анализ контрактов в процессе компиляции, совместимость сразу с несколькими серверными платформами, включая виртуальную Java-машину (Java virtual machine, JVM) и Objective-C, поддержку параллельного программирования, макрокоманд, а также ряда функциональных возможностей .Net.

Идеи Эстербрука высоко оценил Джеймс Шаменски, разработчик приложений и создатель фирмы AdventureLink: “Выбирая язык программирования для своего последнего проекта, я внимательно изучил все, что предлагается сегодня. Ruby оказался слишком медленным для пользователей, разработка на C# занимает слишком много времени, Python создает множество проблем при тестировании. В то же время у каждого из них есть свои сильные стороны, и Cobra сводит их воедино. Здесь я надеюсь найти высочайшую скорость разработки и молниеносную производительность. Какой программист не мечтает об этом? При таком подходе в команду программистов можно включать специалистов с самой разной базовой подготовкой, что очень важно для меня”.

Начало презентации Cobra Шаменски, по его собственному признанию, встретил скептически, однако затем быстро сменил свое отношение: “У меня появилось сильное желание поговорить с программистами, которые уже попробовали этот язык. Я готов потратить следующий квартал, а то и два, чтобы помочь сообществу открытых кодов дополнить Cobra необходимыми функциями. На подготовку к работе с новым языком обычно уходит несколько месяцев, а за это время и Cobra будет полностью готов к применению”.

Сейчас Эстербрук занят подготовкой публикации в Wikipedia и созданием модуля Issue Tracking. С новым языком можно познакомиться по адресу cobra-language.com/downloads/source/.