- PVSM.RU - https://www.pvsm.ru -

Еще один язык, транслируемый в JavaScript — ColaScript

Еще один язык, транслируемый в JavaScript — ColaScript

Всем привет! В этой статье я хочу вам представить свой язык — ColaScript [1]. В двух словах это язык с новым синтаксисом, транслируемый в JavaScript. Начну я с того, что расскажу о причинах появления этого языка.

Причины появления

Еще один язык, транслируемый в JavaScript — ColaScript

Зачем вообще нужны транслируемые в JavaScript языки?

Лично для меня польза в использовании таких языков это, конечно же, в первую очередь, синтаксический сахар, позволяющий сокращать количество кода. Во-вторых, это структурность ( ООП, модули, пакеты… ), которую не так просто достичь на чистом JavaScript. На данный момент существуют 3 языка, обладающие почти всеми перечисленным качествами:

CoffeeScript

Это самый первый язык такого типа, о котором я узнал. На настоящий момент в этом языке существует большое колличесвто синтаксических фишек и присутствует ООП в лице классов. Общий стиль синтаксиса в CoffeeScript'а такой же как в Ruby и Python'е, это выглядит классно, но лично мне хотелось видеть все те же фишки но с C-подобным синтаксисом. Так же в CoffeeScript отсутствует подключение исходников/модулей из кода.

TypeScript

TypeScript — язык, разрабатываемый компанией Microsoft, имеющий статическую типизацию, реализацию ООП и подключение модулей. В плане структурности все отлично, но в нем нету сахарного синтаксиса.

Еще один язык, транслируемый в JavaScript — ColaScript
Dart

Мое первое знакомство с этим языком состоялось вскоре после появления его первой версии: язык был еще сырой, да и я сам тогда еще не очень понимал, зачем он такой нужен. Летом прошлого года я решил посмотреть что же стало с этим языком — это было то что надо: ООП, пакеты ( даже со своим менеджером ), хорошая стандартная библиотека и синтаксический сахар, из которого мне особенно запал в душу каскадный оператор:

query("#myElement")
    ..innerHtml = "Hello World!"
    ..style.backgroundColor = "red";

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

В итоге

В итоге мной овладело желание создать свой язык, который заимствует лучшие стороны трех вышеперечисленных языков. Так был придуман ColaScript.

Немного о процессе создания

За основу был взят такой инструмент как UglifyJS [2]. UglifyJS создан для сжатия JavaScript кода, для этого он парсит код и работает с AST [3] деревом. Моей задачей была модификация парсера под новый синтаксис, а так же непосредственно написание транслятора ColaScript-AST в JavaScript-AST, все остальное в UglifyJS уже есть. Парсер был усовершенствован для поддержки как ColaScript, так и JavaScript одновременно, это сделано для того что бы вы могли без проблем подключать библиотеки и фреймворки написанные на JavaScript.

Что получилось

Результат моей работы вы можете посмотреть на github'е [1], поиграться с языком вживую вы можете тут [4]. На данный момент закончен только первый этап разработки и язык пока что не имеет особых преимуществ перед теми же CoffeeScript, TypeScript и Dart, но есть еще много идей для реализации, которые описаны здесь [5].

Жду ваши мнения об языке. Всем спасибо за внимание.

Автор: dangreen

Источник [6]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/javascript/61025

Ссылки в тексте:

[1] ColaScript: https://github.com/TrigenSoftware/ColaScript

[2] UglifyJS: https://github.com/mishoo/UglifyJS2

[3] AST: http://ru.wikipedia.org/wiki/Абстрактное_синтаксическое_дерево

[4] тут: http://develop.trigen.pro/cola/

[5] здесь: https://github.com/TrigenSoftware/ColaScript#future

[6] Источник: http://habrahabr.ru/post/224585/