Краткая История Javascript. Часть 3

Третья и заключительная часть перевода статьи из блога сервиса Auth0 Краткая история JavaScript .

Ключевые моменты: транспиляторы и ECMAScript 2015, немного о новом процессе подготовки обновлений, чего ожидать в будущем и как на это повлияют Asm.js и WebAssembly. Перевод подготовлен отделом фронтенд-разработки компании.

Живой ввод текста .

Краткая история JavaScript. Часть 1 Краткая история JavaScript. Часть 2

Краткая история JavaScript. Часть 3



ECMAScript 6 (2015 г.

) и 7 (2016 г.

): язык программирования общего назначения.

План ECMAScript Harmony стал основой для последующих улучшений JavaScript. Многие идеи ECMAScript 4 канули в Лету ради всеобщего блага, но некоторые были пересмотрены.

ECMAScript 6, позже переименованный в ECMAScript 2015, должен был принести большие изменения.

Практически все обновления, так или иначе затронувшие синтаксис, были перенесены на эту версию.

К 2015 году комитет наконец смог преодолеть все внутренние разногласия, и был выпущен ECMAScript 6. Большинство производителей браузеров уже поработали над поддержкой этой версии, но до сих пор не все браузеры полностью совместимы с ECMAScript 2015. Выпуск ECMAScript 2015 вызвал резкий рост популярности транспилеров, таких как Babel или Traceur. Благодаря тому, что производители этих транспиляторов следили за работой технического комитета, многие люди получили возможность ощутить преимущества ECMAScript 2015 задолго до его выхода.

Некоторые основные функции ECMAScript 4 были реализованы в этой версии с несколько иным подходом.

Например, классы в ECMAScript 2015 — это больше, чем просто синтаксический сахар поверх прототипов.

Такой подход упрощает разработку и внедрение новых функций.

Мы (редактор блога Auth0 – прим.

) Подробный обзор новых возможностей ECMAScript 2015 мы сделали в нашей статье.

«Краткий обзор возможностей JavaScript» .

Вы также можете проверить Таблица совместимости ECMAScript чтобы получить представление о том, как работает процесс внедрения.

Краткий список новых функций включает в себя:

  • Let (лексические) и const (неизменяемые) привязки
  • Стрелочные функции (короткие анонимные функции) и лексическое this.
  • Классы (синтаксический сахар над прототипами)
  • Улучшения в литералах объектов (вычисленные ключи, сокращенные определения методов и т. д.)
  • Строки шаблона
  • Обещания
  • Генераторы, итерации, итераторы и for.of
  • Параметры функции по умолчанию и оператор отдыха
  • Синтаксис распространения
  • Деструктуризация
  • Модульный синтаксис
  • Новые коллекции (Set, Map, WeakSet, WeakMap)
  • Прокси и отражение
  • Тип данных символов
  • Типизированные массивы
  • Наследование классов
  • Оптимизация хвостовой рекурсии
  • Упрощенная поддержка Unicode
  • Двоичные и восьмеричные литералы
Все эти функции открыли JavaScript для еще большего числа программистов и внесли значительный вклад в великий мир программирования.

Некоторые могут задаться вопросом, как так много новых функций могло ускользнуть от процесса стандартизации, который убил ECMAScript 4. Следует отметить, что большинство наиболее агрессивных нововведений ECMAScript 4, таких как пространства имен или необязательная типизация, были забыты, а другие не были возвращены.

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

Работа над ECMAScript 2015 была очень тяжелой и заняла почти шесть лет (и даже дольше, учитывая время, необходимое для реализации).

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

В 2016 году было выпущено небольшое обновление ECMAScript. Эта версия стала результатом нового процесса обучения, принятого в ТК-39. Все новые предложения должны пройти четыре этапа.

Предложение, достигшее стадии 4, имеет хорошие шансы быть включенным в следующую версию ECMAScript (однако комитет имеет право отложить его до более поздней версии).

Таким образом, каждое предложение разрабатывается индивидуально (разумеется, с учетом его взаимодействия с другими предложениями), не замедляя развитие ECMAScript. Если предложение готово для включения в стандарт и достаточное количество других предложений достигло четвертой стадии, выпускается новая версия ECMAScript. Версия, выпущенная в 2016 году, была очень маленькой.

В него вошли:

  • Оператор возведения в степень (**)
  • Массив.

    prototype.includes

  • Несколько мелких исправлений (генераторы нельзя использовать с новыми и т.д.)
Тем не менее, несколько интересных предложений уже дошли до четвертого этапа в 2016 году.

Что готовит нам ECMAScript?

Будущее близко и не так близко: ECMAScript 2017 и последующие версии

Наиболее важным предложением для достижения четвертого этапа является async/await. Это расширение синтаксиса JavaScript, которое делает работу с обещаниями более приятной.

Например, рассмотрим код ECMAScript 2015:

  
   

function apiDoSomethingMoreComplex(withThis) { const urlA = '.

'; const urlB = '.

'; httpLib.request(urlA, withThis).

then(result => { const parsed = parseResult(result); return new Promise((resolve, reject) => { database.update(updateStatement, parsed).

then(() => { resolve(parsed); }, error => { reject(error); }); }); }).

then(result => { return httpLib.request(urlB, result); }).

then(result => { return worker.processData(result); }).

then(result => { logger.info(`apiDoSomethingMoreComplex success (${result})`); }, error => { logger.error(error); }); }

И сравните его с кодом, использующим async/await:

async function apiDoSomethingMoreComplex(withThis) { const urlA = '.

'; const urlB = '.

'; try { let result = await httpLib.request(urlA, withThis); const parsed = parseResult(result); await database.update(updateStatement, parsed); result = await httpLib.request(urlB, parsed); result = await worker.processData(result); logger.info(`apiDoSomethingMoreComplex success (${result})`); } catch(e) { logger.error(e); } }

Другие предложения, дошедшие до четвертой стадии, весьма невелики:

  • Object.values и Object.entries
  • Выравнивание линий
  • Object.getOwnPropertyDescriptors
  • Разделители-запятые в параметрах функции
Все эти предложения предназначены для релиза 2017 года, но комитет имеет право отложить их до следующего релиза.

Но даже простое добавление async/await будет потрясающим.

Будущее здесь не заканчивается.

Давайте посмотрим на некоторые другие предложения чтобы получить представление о том, что ждет впереди.

Вот несколько наиболее интересных:

  • SIMD-API
  • Асинхронные итераторы (async/await + итерация)
  • Импульсные генераторы
  • Операции с 64-битными целыми числами
  • Регионы (государственная изоляция)
  • Общая память и атомика
JavaScript становится все более похожим на язык общего назначения.

Но есть еще одна большая деталь в будущем JavaScript, которая внесет свои коррективы.



Веб-сборка

Если вы еще не слышали о WebAssembly, вам следует это сделать.

почитай о нем .

Огромное количество библиотек и фреймворков, появившихся с момента выпуска ECMAScript 5, а также общее развитие языка сделали JavaScript интересной мишенью для других языков.

Для больших структур кода ключевой потребностью является совместимость.

Возьмем, к примеру, игры.

Наиболее распространенным языком, на котором пишутся игры, является C++, а это означает, что их можно портировать на большое количество архитектур.

Однако портирование игры на браузер или консоль Windows считалось невыполнимой задачей.

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

Быстро осознав ситуацию, Mozilla начала работать над тем, чтобы сделать JavaScript подходящей целью для компиляторов.

Так родился Asm.js — подмножество JavaScript, идеально подходящее для такой цели.

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

Благодаря JavaScript браузеры постепенно становятся новой целью для компиляторов.

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

Чтобы сделать Интернет достойной мишенью для других языков программирования, необходимо нечто совершенно иное.

И это именно то, для чего предназначен WebAssembly, язык низкоуровневого программирования для Интернета.

Любую программу можно скомпилировать в WebAssembly с помощью подходящего компилятора и затем запустить на подходящей виртуальной машине (виртуальные машины JavaScript могут обеспечить необходимый уровень семантики).

Первые версии WebAssembly на 100% совместимы со спецификацией Web.js. WebAssembly обещает не только более быстрое время загрузки (байт-код обрабатывается быстрее, чем текст), но и возможности оптимизации, недоступные в Asm.js. Представьте себе Интернет с идеальной совместимостью JavaScript и вашего языка программирования.

На первый взгляд может показаться, что это тормозит развитие JavaScript, но на самом деле все совсем не так.

Позволив другим языкам и платформам получить возможность взаимодействия с JavaScript, он сможет продолжить свое развитие как язык общего назначения.

И WebAssembly — необходимый для этого инструмент. В настоящее время версии Chrome, Firefox и Microsoft Edge для разработчиков имеют начальную поддержку WebAssembly и способны воспроизводить демонстрационные приложения .



Использование JavaScript в Auth0

Мы находимся в Auth0 Мы очень активно используем JavaScript , который является основным языком программирования повсюду, начиная с Блокировка библиотеки к бэкэндам.

Его асинхронный характер и чрезвычайная простота для новых разработчиков являются ключом к нашему успеху.

Мы с интересом наблюдаем за развитием языка и его влиянием на всю экосистему.

Зарегистрируйтесь бесплатно с помощью Auth0 и исследуйте экосистему, полностью написанную на JavaScript. Не волнуйтесь, у нас есть клиентские библиотеки для всех популярных фреймворков и платформ .



Заключение

История JavaScript длинна и полна неожиданных поворотов.

Первоначально предложенная как «Схема для Интернета», она заимствовала свой синтаксис из Java. Его первый прототип был разработан за несколько недель.

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

После трёх успешных релизов язык почти восемь лет кипел в адских котлах.

Затем, благодаря успеху единственной технологии (AJAX), сообщество смогло преодолеть разногласия и возобновить разработку.

От версии 4 отказались, а небольшое обновление, известное как версия 3.1, было переименовано в версию 5. Версия 6 разрабатывалась много лет (снова), но на этот раз комитет успешно завершил работу, изменив цифру в названии на 2015. очень большое обновление, и его реализация заняла много времени.

В результате JavaScript обрел второе дыхание.

Сообщество было более оживленным, чем когда-либо прежде.

Благодаря Node.js, V8 и другим проектам JavaScript поднялся до высот, которые первоначальные разработчики даже не могли себе представить, а благодаря Asm.js и WebAssembly он взлетит еще выше.

Активные предложения на разных стадиях делают будущее JavaScript ярким и ясным.

Пройдя долгий путь, полный неожиданных поворотов и препятствий, JavaScript остаётся одним из самых успешных языков в истории программирования.

И это лучшее доказательство его надежности.

Всегда используйте JavaScript. Теги: #JavaScript #ecmascript #веб-разработка #стандартизация #браузеры #WebAssembly #разработка веб-сайтов #JavaScript #браузеры #WebAssembly

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.