Зал Трудовой Славы JavaScript

    С появлением библиотек JavaScript, которые разрабатываются большими коллективами, таких как Angular, React, Vue, — безвозвратно ушли с арены гении-одиночки, которые разрабатывали всю или, по крайней мере, основную часть библиотеки самостоятельно. Предлагаю вместе вспомнить названия этих библиотек, и, наконец, узнать имена их разработчиков.

    2005 год — Prototype.js


    Библиотека вышла в 2005 году как часть проекта Ruby-on-Rails. Первым разработчиком библиотеки был Sam Stephenson (см. www.sergiopereira.com/articles/prototype.js.html). В лицензии Prototype.js (см. prototypejs.org/license.html) есть ссылка на его персональную страничку sstephenson.us, на которой, в свою очередь, опубликован email автора: sstephenson@gmail.com.

    Дальнейшие поиски по email приводят к его активному репозитарию github.com/sstephenson и твиттеру twitter.com/sstephenson (твиттер не публичный). Также о нем можно узнать, что он работает на позиции Programmer at Basecamp, и посмотреть видео доклада с конференции RubyConf 2016



    В библиотеке Prototype.js впервые сложился «джентельментский набор» всех последующих библиотек того времени: доступ к DOM через функцию $(...), Ajax-запросы. Но главным был мощный прорыв в сторону «функциональщины» путем реализации интерфейса Enumerable (all(), any(), collect(), detect(), each() и т.д.). Фактически, с распространением именно этой библиотеки, программирование на JavaScript приобрело современный стиль. Некоторые идеи Prototype.js вошли в стандарт языка, и были повторены в более поздних библиотеках underscore.js и lodash.js.

    Есть у библиотеки Prorotype.js и два существенных недостатка. Реализация новой функциональности базировалась на подмешивании новых свойств и методов в нативные объекты. Например, именно из-за этой строчки мы навсегда перестали пользоваться циклом for...in для перебора элементов массива:

    // Prototype.js v 1.5.0
    Object.extend(Array.prototype, Enumerable);
    

    Также проблемным является определение в библиотеке Prototype.js большого количества переменных с глобальной областью видимости:

    /*  Prototype JavaScript framework, version 1.5.0
     *  (c) 2005-2007 Sam Stephenson
     *
     *  Prototype is freely distributable under the terms of an MIT-style license.
     *  For details, see the Prototype web site: http://prototype.conio.net/
     *
    /*--------------------------------------------------------------------------*/
    
    var Prototype = {
      Version: '1.5.0',
      BrowserFeatures: {
        XPath: !!document.evaluate
      },
    
      ScriptFragment: '(?:<script.*?>)((\n|\r|.)*?)(?:<\/script>)',
      emptyFunction: function() {},
      K: function(x) { return x }
    }
    
    var Class = {
      create: function() {
        return function() {
          this.initialize.apply(this, arguments);
        }
      }
    }
    ...
    

    Как исправление этих двух просчетов позиционировалась библиотека jquery, к которой мы еще возможно вернемся.

    2010 год — requirejs


    Первые версии JavaScript не имели поддержки модулей, так как переменные и функции, определенные на вернем уровне имели глобальную область видимости (а не локальную внутри модуля, файла), и не было механизма загрузки зависимых модулей. В январе 2009 года Kevin Dangoor опубликовал блог-пост Blue Sky on Mars, с которого началась дискуссия о путях перенесения JavaScript на сервер. В какой-то момент появилась идея API wiki.commonjs.org/wiki/Modules/AsynchronousDefinition (AMD), который позволял бы асинхронно загружать зависимые модули, не выходя за рамки стандартного (на 2009 год) JavaScript. Это API впоследствии не было принято к реализации на стороне сервера, но вскоре широко распространилось на фронтенде, так как было основано на стандартном JavaScript.

    Первые реализации спецификации AMD загружали модули в виде текста, который потом выполнялся функцией eval(). Такой подход имел существенные недостатки в плане производительности, безопасности и был сложен в отладке. Перечисленные проблемы решила библиотека requirejs, которая загружает модули при помощи программно сгенерированных элементов SCRIPT.

    Попробуем разобраться, кто был автором этой идеи. В первых версиях библиотеки есть ссылка на репозитарий James Burke (сейчас в этом репозитарии нет самой библиотеки):

    /** vim: et:ts=4:sw=4:sts=4
     * @license RequireJS 0.27.1 Copyright (c) 2010-2011, The Dojo Foundation All Rights Reserved.
     * Available via the MIT or new BSD license.
     * see: http://github.com/jrburke/requirejs for details
     */
    /*jslint strict: false, plusplus: false, sub: true */
    /*global window: false, navigator: false, document: false, importScripts: false,
      jQuery: false, clearInterval: false, setInterval: false, self: false,
      setTimeout: false, opera: false */
    

    Поиск ссылок приводит нас к твиттеру автора twitter.com/jrburke, уже упомянутому репозиторию github.com/jrburke и профилю Linkedin www.linkedin.com/in/james-burke-7994a11. Также, в публичном доступе есть выстоупление автора на конференции VanJS 2013 (да были раньше не гламурные конференции):


    Разработчик библиотеки requirejs придумал остроумный способ загрузки модулей по спецификации AMD, не выходя за рамки стандартного на то время JavaScript, в чем ее несомненная заслуга. Но были и недостатки. Синтаксис использования AMD модулей довольно сложный, за что от него отказалась группа CommonJS. Загрузка большого количества мелких модулей замедляет загрузку веб-страницы. Вскоре появились компоновщики grunt, gulp, webpack и другие, которые свели на нет преимущества от использования библиотеки requirejs. В целом, можно было бы охарактеризовать эту библиотеку, как инструмент, который отвлек часть разработчиков, до последнего державшихся за vanillajs js от перехода на новый стандарт JavaScript.

    Продолжение следует

    Средняя зарплата в IT

    110 500 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 7 087 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 15

      +10

      И всё? Допиши еще сотню

        –2

        Сотни, наверное, не будет, но до 10 может быть когда-нибудь допишу.

          +3

          Это не зал, это так, столик на троих, где один из участников — автор.

            +1
            Вот да, ожидал большую статью от старых времён Mootools, jQuery, ExtJS, до современных Vue, Angular, React, и где-то ещё в промежутке могут быть разные Backbone и что там ещё было.

            P.S. кстати, последняя версия Prototype вышла в 2017.
          +3
          библиотека jquery, к которой мы еще возможно вернемся.

          так и не вернулись…
            +3

            Я никуда не уходил.

              +1
              С появлением библиотек JavaScript, которые разрабатываются большими коллективами, таких как Angular, React, Vue, — безвозвратно ушли с арены гении-одиночки, которые разрабатывали всю или, по крайней мере, основную часть библиотеки самостоятельно.
              Vue как раз и является примером проекта, который разрабатывает гений одиночка (Evan You). По крайней мере так было до недавнего времени. Этот факт иногда называют чуть ли не главным недостатком Vue.
              github.com/vuejs/vue/graphs/contributors
                +3

                Интересная мысль, хорошо расписано, но всего 2 человека/библиотеки… Продолжайте, пожалуйста.

                  0
                  Leaflet
                    +3
                    впервые сложился «джентельментский набор» всех последующих библиотек того времени: доступ к DOM через функцию $(...)

                    насколько я помню $ (в PrototypeJS это $$, а $ там аналог современного querySelector (без All), которого ещё не было в браузерах и писались собственные движки) появился в PrototypeJS уже после появления jQuery, где он был изначально.


                    именно из-за этой строчки мы навсегда перестали пользоваться циклом for...in для перебора элементов массива

                    не из-за, а благодаря.


                    Вообще PrototypeJS хоть и сейчас никому не известная библиотека, но я считаю он дал фронтенду куда больше чем jQuery, он показал как надо более правильно писать код — с классами, неймспейсами, минимумом глобальных переменных и тп. Моментов вроде "не перебирать массив через for-in" там было вагон и тележка. Это был большой шаг вперёд, тот код, что писался до этого, от него сегодня кровь из глаз идти начинает. А jQuery в первую очередь показал как можно работать с коллекциями элементов через обёртку как с единым элементом, это и сегодня в некоторых местах может быть полезно, хотя с приходом биндингов во многом потеряло свою необходимость. Следующим большим шагом был, наверно, BackboneJS. Жаль, что про него в статье ни слова.

                      –2

                      Раньше телефоны шили бинарниками и любые модификации прошивки делались в hex-редакторе после продолжительного реверс-инжиниринга. Поскольку не было альтернатив бинарному формату, многие так наловчились, что сделали удобные программы, которые могли применять текстовые патчи. Когда у меня была моторола, пользовался такой прогой для самсунгов. А теперь прошивки в zip-архивах и о бинарниках, как о неудобном пережитке, все с облегчением забыли. Распаковал, заменил/отредактировал, запаковал, прошил.


                      JS естественно кому-то зашёл, любой язык имеет своих поклонников, даже какой-нибудь brainfuck. Но это не тот случай, когда надо петь ему диферамбы. Я жду тот день, когда в браузере можно будет пользоваться любым или, по крайней мере, многими языками программирования. Сейчас же у нас нет выбора. Зал славы мог быть например у C, но никак не у языка, пользоваться которым мы вынуждены безальтернативно.

                        +1
                          0
                          Это хорошо, но я имел в виду что-то скрипто-подобное, которое можно писать ручками и как js внедрять в html, либо выносить в отдельные файлы.
                        +1

                        Sam Stephenson сейчас, если не ошибаюсь, занимается stimulus.js мне для pet project зашло

                          0

                          Да, довольно неожиданно.

                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                        Самое читаемое