Без сомнения, BabelJS, самый известный из компиляторов языков будущего и настоящего, помогает сообществу разработчиков спецификаций JS выполнять итерации — выражаясь языком JS — асинхронно в блоке try/catch с выходом на этом языке. авторы спецификаций могут увидеть, как их спецификация реализована, прежде чем они закончат ее писать. Разработка языка, когда дело доходит до Javascript, была превращена в неблокирующий процесс, поэтому она может выполняться одновременно с основным потоком разработки Javascript, а не как изолированный процесс. Это дало пользователям и разработчикам Javascript огромное преимущество, которое, как мне кажется, дает преимущество перед другими языками.

Хотя сегодня мы можем смотреть на языки, о которых мы говорим с любовью, такие как Clojure/Script и ReasonML, мы можем видеть, что скорость инноваций в разработке языка Javascript неудержима и намного быстрее, чем для любого другого языка, включая те, которые я упомянул. .

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

Как видите, нам удалось оценить в нескольких разных направлениях сразу несколько стратегий обработки асинхронности. У нас были обещания ES6, генераторы, async/await, затем асинхронные генераторы. У нас по-прежнему нет core.async в ClojureScript (смоделированного по образцу каналов/csp в Go) или конструкций параллелизма на уровне планировщика, таких как продолжения с несколькими подсказками в OCaml (https://github.com/strmpnk/hansei/tree/master/caml- shift), но у нас есть несколько предложений, как это (см. https://esdiscuss.org/topic/one-shot-delimited-continuations-with-effect-handlers), которые на данный момент мы можем видеть на более высоком уровне в форме абстракции Fiber в React 16. Если кто-то захочет написать плагин Babel, который сделает однократные продолжения с разделителями, продолжения с несколькими подсказками или любую другую конструкцию параллелизма, доступную в пользовательской среде и на на общем основании они, безусловно, могли бы это сделать. Ничто их не останавливает (http://shuheikagawa.com/blog/2015/09/13/lets-create-a-babel-plugin/). . BabelJS определенно ускоряет развитие Javascript как языка, и каждому языку нужен свой BableJS.

Другими словами, Javascript продвигает вперед не только BabelJS, но и дальновидное мышление команды React.

Поэтому трудно представить себе будущее, в котором любой язык компиляции в JS или компиляцию в WASM будет развиваться быстрее, чем сам JS.

Вывод, который здесь делается, заключается в том, что каждый язык должен иметь свой собственный BabelJS, чтобы не отставать от JS с точки зрения скорости эволюции дизайна языка.