В недавнем выпуске подкаста мы Алексеем обсуждали интервью Дагласа Крокфорда и историю JSON. На самом деле, там конечно много интересных моментов, которые не удалось затронуть. Попробою пересказать текстом, телега всё стерпит.



Во-первых про название «JavaScript». Вопреки расхожему мнению, что слово «Java» было тут добавлено Netscape, чтобы хайпануть на популярном в тот момент языке, Крокфорд утверждает, что это название было утверждено самой Sun и сделано ради амбиций Sun. В тот момент Netscape и Sun объединились против главного зла тех лет — Microsoft. Каждая компания предлагала своё решение для создания софта, не привязанного к операционной системе. Если Sun топила за виртуальную машину, на которой запускался универсальный бинарник, то Netscape за браузер, как универсальную среду. Не важно на какой вы OS, главное, чтобы на ней был браузер. Объединившись компании развивают чудовище — Java-апплеты. Мощное, но медленное и неприятное для пользователя решение.



В то же время у Netscape был язык Mocha (позже переименованный в LiveScript). И Sun это не нравилось. Зачем два языка в браузере? Зачем глупый LiveScript, когда есть прекрасная Java? Но Netscape видели потенциал скриптовых языков, потенциал программирования на событиях. Рядом уже расцветал HyperCard от Apple, новички, не стеснённые концепцией навязанной сложности неблокируемого асинхронного программирования творили на нём удивительные на тот момент вещи. Более того, великий Myst был написан на HyperCard! (этого факта я не знал, хоть и облизывался на Myst всю вторую половину 90-х). Да, Myst был собран фактически на коленке на домашнем скриптовом языке и вышел изначально только на Mac OS.



И тогда неожиданно нашёлся компромисс. Кто-то в Netscape (возможно Марк Андрессен) предложил переименовать LiveScript в JavaScript и солгать миру, что это такое подмножество Java. И Sun неожиданно согласились.



И вот сидит молодой Крокфорд, смотрит на это подмножество Java и думает, что это самая тупая вещь на свете, которую он видел. Но она работает в вебе, запускается мгновенно и ей не нужен JVM. И прекрасно решает стоявшую перед ним задачу создания интерактивных чат-комнат. Вот только вся команда Крокфорда, услышав про JavaScript посылает его куда подальше. И ему приходится разбираться самому, как писать на этой странной скриптовой Java, в которой не работают основные концепции Java.



Он страдает страдает, но в какой-то день до него доходит — это не Java 🤡. Это совершенно другой язык и, более того, в нём есть концепции, которых нет в других языках. Прежде всего, в нём есть функции как сущность первого класса и у функций есть лексическое замыкание (что было на тот момент только в Scheme). И функции могут быть анонимными, настоящие лямбды! Более того, язык ещё и мультипарадигменный.



Ну вот тут Крокфорд полюбил JavaScript, оседлал волну хайпа, стал везде выступать, консультировать и написал свою книгу и первый линтер для JS (JSLint).



В следующем посте расскажу про JSON.