10 May

Зал Трудовой Славы JavaScript, часть 2

JavaScript
Первая часть обзора была посвящена библиотекам Prototype.js и requirejs. Уже в процессе написания, возникла необходимость рассматривать не только библиотеки, которые существенно повлияли на современное состояние JavaScript, но и идеи, которые публиковались в статьях, прорабатывались в спецификациях, например: ajax, commonjs, универсальные/изоморфные веб-приложения.

1998 — BigInt.js, RSA.js


Нативная работа с большими целыми числами сравнительно новая возможность (о которой даже не все подозревают — да уже есть — и на вопрос сколько типов данных в JavaScript на собеседованиях опять нужно переучиваться). До этого наиболее ранней и удачной реализацией больших целых чисел была библиотека ohdave.com/rsa/BigInt.js. Удачной — потому что быстрой. Поиски информации по email автора библиотеки Dave Shapiro dave@ohdave.com, кроме имени и фамилии не дал новой информации. Также на сайте выложены записи гитарных композиций выдающихся исполнителей, сделанные автором библиотеки на слух — еще одна полезная информация для поиска. Далее, нашелся твиттер автора twitter.com/daveohdave с ссылкой на сайт ohdave.com. У твиттера вместе со мной 52 подписчика и на него не подписан John Resig. В твиттере опубликовано видео, где автор библиотеки исполняет на рояле первые такты симфонической поэмы Рихарда Штрауса «Так говорил Заратустра» (известной советскому зрителю по телепередаче «Что? Где? Когда?»)


И теперь мы можем с уверенностью сказать, что это то самый www.linkedin.com/in/dshapiro, который работает в компании Four Winds Interactive на позиции Founding Software Developer, чтобы это не значило, во всяком случае его фото присутствует на страничке Leadership:



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

2002 — Cross-Browser, она же x.js


Библиотека x.js предназначена для кросс-браузерной разработки JavaScript. Не уверен, что ее использовали широко при разработке приложений, но сама идея спрятать работу с DOM в вызовы методов библиотеки — та идея, на которой построены более поздние и широко применяемые библиотеки Prototype.js и jquery, — была новаторской. Наверное, именно поэтому библиотекой не торопились пользоваться в реальных проектах. В то время казалось, что спецификация DOM Level 1 и CSS 2 сделала любой код кросс-браузерным, по крайнем мере по сравнению с тем, что было в лихие 90-е годы.

В копирайте библиотеки x.js указан автор Michael Foster mike@cross-browser.com. Также, на сайте библиотеки есть информация, что Mike (Michael Foster) сейчас работает в компании 33Across. Зная это, можно найти Linkedin автора.

На корпоративе, который в честь автора назвали День Фостера (крайний слева), автор немного рассказал о себе: «Я играю на ударных, флейте и ​​немного на саксофоне. Чтение NT Greek — одно из моих нынешних увлечений. Я всегда любил астрономию, поэтому у меня огромный телескоп.»



18 февраля 2005 года — Ajax


История со статьей Jesse James Garrett «Ajax: A New Approach to Web Applications» была многократно описана, и есть соответствующие статьи о технологии и о ее авторе в Википедии. Поэтому нет необходимости в дополнительном поиске информации. Все доступно.

Может вызвать недоумение тот факт, что все средства, необходимые для работы Ajax, присутствовали в веб-браузерах с конца лихих 90-х. Тем более значимым является влияние Jesse James Garrett на развитие современного веба. Уже потом вышла статья «Tim O’Reilly — What Is Web 2.0» от 30 сентября 2005 года, которая добавила философии, в кавычках и без, к определению Web 2.0. Но чем бы была эта философия без идей Jesse James Garrett. Кстати кто-нибудь знает что есть Web 3.0?

Автора можно читать на твиттере twitter.com/jjg. Его профиль на Linkedin www.linkedin.com/in/jesse-james-garrett-1341. Последнее место работы Capital One Sr. Director, Dgital Design.



Jeremy Ashkenas


Jeremy Ashkenas дал нам сразу несколько продуктов, которые существенно повлияли на развитие программирования JavaScript:

2009 год — CoffeeScript
2009 год — Underscore.js
2010 год — Backbone.js

CoffeeScript — первая успешная попытка модернизировать JavaScript, при этом обеспечив выполнение скриптов в текущей версии веб-браузера, путем преобразования исходных текстов скриптов CoffeeScript в текст скриптов стандартного JavaScript. Сейчас так же работают babel и typescript. Но на момент 2009 года такого опыта не было ни у кого. Было даже неясно, достаточно ли мощным языком является JavaScript, чтобы реализовать на нем компилятор.

CoffeeScript повлиял на тот набор новшеств, который бы введен в ES6/ES2015 и более поздние спецификации языка, в частности: стрелочные функции, функции с переменным количеством аргументов, оператор доступа к свойству с проверкой существования?.. и другие.

Underscore.js в целом продолжает линию работы с коллекциями в Prototype.js, но использует для этого не дополнение объекта Array новыми свойствами, а передачу массива в функцию, что может сначала показаться не совсем лаконичным, но зная что путь Prototype.js может приводить к трудно выявляемым багам (например если другой разработчик дополнит объект Array одноименными свойствами) — к этому можно привыкнуть. Сейчас практически все используют форк Undescore.js — lodash.js.

Backbone.js — ее значение очень противоречиво и оценки полярны. Во всяком случае, сейчас ее используют гораздо реже чем 10 лет назад.

Jeremy Ashkenas работет в Нью-Йорк Таймс. Его статьи можно прочитать по ссылке www.nytimes.com/by/jeremy-ashkenas. Его твиттер twitter.com/jashkenas из которого можно узнать, что он байкер, всегда обедает одном и том же кафе, всегда припарковывает мотоцикл в одном и том же месте когда обедает в этом кафе. И у него уже три раза его именно в этом месте украли. Очень сложно найти фотографию Jeremy Ashkenas без мотоциклетного шлема. Одно из последних обнаруженных видео с конференции в 2015 году:


2010 год — step.js


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

Модель конкурентного (асинхронного) программирования в node.js в первых версиях была основана на Callback Hell. Этот способ сейчас используется все реже, так как очень сложно управлять вложенными вызовами Callback Hell. Для упрощения ситуации были реализованы Promise, которые стали существенно более удобными, по сравнению с Callback Hell, но были по прежнему сложны, особенно до появления стрелочных функций. И, наконец, вместо Promise был предложен оператор await, который можно использовать внутри async функции. За первоначальной эйфорией пришло и некоторое разочарование. Функциональный стиль вызова цепи функций then().catch() все еще не уступает по лаконичности оператору await, который «внезапно» оказалось необходимым заключать в блоки try/catch. Кто-то даже начинает говорить о Promise Hell, Try Catch Hell.

Выход из этого порочного круга был предложен еще в 2010 году Tim Caswell в библиотеке step.js. Посмотрите как можно было с этим всем работать:

Step(
  function readSelf() {
    fs.readFile(__filename, this);
  },
  function capitalize(err, text) {
    if (err) throw err;
    return text.toUpperCase();
  },
  function showIt(err, newText) {
    if (err) throw err;
    console.log(newText);
  }
);

Но, увы, мэйнстрим разработки ушел в другое русло. Тем не менее, сейчас продолжают пользоваться другой разработкой Tim Caswell: node version manager — nvm. Сейчас автор работает на позиции Principal Architect at Magic Leap. Его твиттер twitter.com/creationix.

Также автор портировал node.js на Lua, о чем рассказывает в своем докладе:

Tags:javascriptajaxuniversalisomorphicbackbone.jsstep.js
Hubs: JavaScript
+13
2.7k 28
Comments 1