Или что меня не устраивает в JavaScript
На самом деле в JavaScript много разных мелких неприятностей которые немного мешают жить, но в целом это не является весомым поводом для того чтобы его отринуть. И тем не менее я хочу кое-что пересмотреть. Выпилить нахер eval, сделать код более строгим, всячески облагородить.
Вполне возможно мною движет NIH-синдром, однако я попробую доказать что это не так:
Модульность
Браузерный код усложнился достаточно для того чтобы потребовалась модульная система. Вообще-то кое-что уже появилось, так что этот пункт засчитывается как плюс-минус.
Типичный вебсайт сегодня — пачка jQuery-плагинов повязанных событиями. Модульная система должна давать возможности для расцвета зоопарка различных плагинов, а также безопасного из совмещения. (Лексическая область видимости для каждого модуля, “умное версионирование”).
Система типов
Здесь выбор за SoftTyping.
Причина та же что и в предыдущем пункте (сложность): необходимы стандартные средства для проверки типов. Конечно не стоит устраивать такую содомию как в Haskell, достаточно опциональных аннотаций. (привет Dart!)
Простая структура кода
Неоднозначная фраза, под ней я имел ввиду возможность легко отследить зависимости в коде. Куча асинхронного кода динамически повязанного с событиями — дикая лапша. Отлаживать такое — то ещё удовольствие.
Предыдущие два пункта были довольно косвенными, их можно решить без смены языка. Этот нет.
Язык должен быть более строг что касается событий. Например будет обязывать описывать все события в одном месте (модуля).
Кроме того желательно код писать чистым и изолированным, чтобы можно было легко выделить только необходимые части кода, ужать размер.
Поэтому тут выбор за функциональным программированием. Ну и дебажить такое будет заметно легче. Мне представляется что-то похожее на Erlang. (Без процессов, конечно).
CoffeeScript и Dart
Два языка которые пытаются улучшить JavaScript. Coffee просто предлагает более приятный для глаз синтаксис, более читаемый. Dart пытается сделать какие-то более радикальные изменения, хотя мне кажется что всё осталось по старому. На мой поверхностный взгляд Dart таки предлагает большую структурированность. (Однако event-hell сохраняется). Короче не то что нужно. Не то что я хочу.
Само собой я не прав.
Как-то так.