Скука и рутина это зло

run{}

Каким должен быть современный браузерный язык

Или что меня не устраивает в JavaScript

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

Вполне возможно мною движет NIH-синдром, однако я попробую доказать что это не так:

Модульность

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

Типичный вебсайт сегодня — пачка jQuery-плагинов повязанных событиями. Модульная система должна давать возможности для расцвета зоопарка различных плагинов, а также безопасного из совмещения. (Лексическая область видимости для каждого модуля, “умное версионирование”).

Система типов

Здесь выбор за SoftTyping.

Причина та же что и в предыдущем пункте (сложность): необходимы стандартные средства для проверки типов. Конечно не стоит устраивать такую содомию как в Haskell, достаточно опциональных аннотаций. (привет Dart!)

Простая структура кода

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

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

Язык должен быть более строг что касается событий. Например будет обязывать описывать все события в одном месте (модуля).

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

Поэтому тут выбор за функциональным программированием. Ну и дебажить такое будет заметно легче. Мне представляется что-то похожее на Erlang. (Без процессов, конечно).

CoffeeScript и Dart

Два языка которые пытаются улучшить JavaScript. Coffee просто предлагает более приятный для глаз синтаксис, более читаемый. Dart пытается сделать какие-то более радикальные изменения, хотя мне кажется что всё осталось по старому. На мой поверхностный взгляд Dart таки предлагает большую структурированность. (Однако event-hell сохраняется). Короче не то что нужно. Не то что я хочу.

Само собой я не прав.

Как-то так.

Comments