В начале был Netscape. И возжелал Netscape выполнять Scheme-код в браузере Netscape Navigator. И наняли они Брендана Айка (Brendan Eich), чтобы он в поте лица своего работал над этим. Но потом они передумали и решили, что Java хотят они. И вот, рождён был JavaScript. И было это (достаточно) хорошо.
Безумная идея овладела Райаном Далом (Ryan Dahl) годы спустя: подружить движок V8 с библиотекой libev, дабы могли программисты выполнять свой JavaScript-код за пределами браузера. И возник Node.js. И npm. И люди возрадовались.
И стали люди писать веб-сервера на JavaScript, и запускать вертолёты с JavaScript на борту, и водружать его на планшеты и смартфоны, и встраивать его в термостаты и холодильники, да и во всё, во что их душа желала. И распространился JavaScript весьма и весьма широко. И презирали Нормальные Программисты™ (Serious Developers) простых людей, пишущих на JavaScript, но простые люди продолжали писать на JavaScript всё больше и больше.
И ждали люди Слово, способное вместить в себя всю широту проникновения JavaScript, ибо слово «JavaScript», как оно есть, более не вмещало той широты. И изрёк Чарли Роббинс (Charlie Robbins) мысль, что термином «Isomorphic JavaScript» можно назвать JavaScript-код, выполняющийся и в браузере, и на сервере. И никто нафиг не понимал значения сего, но, вместо просто программирования на JavaScript, люди стали программировать на изоморфном JavaScript.
Вводя термин «Isomorphic JavaScript», Роббинс поясняет, что он имеет в виду (почти) любую строку кода, способную выполниться и в браузере, и на сервере. Но, если мы внимательно посмотрим на значение слова «изоморфный», мы увидим, что это есть «сходный по форме и структуре». Другими словами, две разные сущности, выглядящие одинаково. Хорошие примеры изоморфных сущностей есть у нас: jQuery
и jZepto
, или Underscore
и lodash
. Библиотеки эти сходны по форме (одинаковый API), но различны в плане лежащих в их основе идей и философии.
Короче, нам нужно Слово для одного и того же кода, способного выполняться в различных окружениях. Ибо в настоящее время мы выполняем JavaScript-код не только на серверах и в браузерах, но и на мобильных/встраиваемых устройствах. На Raspberry Pi, Wii U и айФонах. Однако, это сугубо инженероориентированные аргументы. Ясное понимание Слова — вот что более значимо.
Всё весьма субъективно в этом мире, конечно же. Недавно Райан Флоренс (Ryan Florence) и я (Michael Jackson, автор) начали вести курсы по React.js. Мы уже обучили несколько сотен программистов, и многие из них не понимали значение Слова и спрашивали, что значит «изоморфный». Как показала практика, когда мы говорили «универсальный» вместо «изоморфный», подобных вопросов не возникало. Это типа как Apple говорил «universal» про приложения, которые выполнялись на двух архитектурах во времена перехода с PowerPC на Intel.
Ибо сказано, в Computer Science есть две большие проблемы. Мы говорим про вторую, ибо хорошие Слова аццки важны, и говорят они про цели (purpose) и обязанности (responsibility). И да поразмышляет об этом на досуге каждый.
Что ж, давайте назовём наш JavaScript-код понятным всем Словом. Реальным Словом, вместо вброса в наш программистский, и без того замусоренный, словарь слова, которому не место в нём. И да будет то Слово не только про сервера и браузеры, но про всё.
И да будет Словом Universal JavaScript.
Моё спасибо следующим товарищам: Ryan Florence, Pete Hunt, Peter Cooper, Dan Abramov и Mark Dalgleish за рецензирование. Также, спасибо Райану за вычитку этого поста.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
ссылка на оригинал статьи http://habrahabr.ru/post/264607/
Добавить комментарий