[Перевод] Брендан Эйх о создании JavaScript за 10 дней и о том, что сегодня он сделал бы по-другому

На днях JavaScript исполнилось 27 лет. Вспоминаем, к чему привели эксперименты в Netscape и как этот язык программирования появился на свет.

Миллионы современных разработчиков активно используют язык программирования, который родился буквально за 10 дней в период экспоненциального развития интернета. Создатель JavaScript Брендан Эйх не так давно заново обратился к истокам созданного им языка и рассказал о том, как семена, посеянные им в 1995 году, теперь наконец-то взошли.

Брендан Эйх на dotJS conferenceБрендан Эйх на dotJS conference

Итак, далекий 1995 год, совершенно другая эпоха. Да что уж там говорить — практически другой мир! Тогда Netscape даже рассматривала совокупность браузера и сервера как новый вид распределенной операционной системы, вспоминает журнал Computer. Браузеры обладали потенциалом, позволявшим разработчикам охватить пользователей на любой платформе — Windows, Mac или Linux, —, но им не хватало еще одного важного ингредиента, «своего» языка программирования. Netscape очень хотелось, чтобы, помимо Java, появился еще один язык, который смог бы увлечь многих начинающих разработчиков — так же как в свое время Visual Basic от Microsoft.

Статья из журнала ComputerСтатья из журнала ComputerСтатья из журнала ComputerСтатья из журнала Computer

Вся технологическая индустрия тогда была охвачена желанием поспеть за поразительной популярностью интернета. «В те времена темпы развития веб-инноваций были бешеными, а Microsoft и вовсе сделала Интернет главным приоритетом своей новой операционной системы Windows 95 — в ответ на появление браузера и серверных продуктов Netscape.» Тогда 34-летний Брендан Эйх и разработал первую версию языка, который впоследствии превратился в JavaScript, всего за 10 дней. (Свой доклад на конференции dotJS Эйх начал словами:»22 года назад, в мае месяце, я 10 дней упорно работал», добавив: «И мало спал»).

Эйх как нельзя лучше справился с этой работой, ведь в студенческие годы он уже писал языки программирования, «просто чтобы поэкспериментировать с синтаксисом». Эйх вспоминает, что когда он дошел до лексического анализа и языковых парсеров, то «сразу же влюбился в эти штуки, потому что с теоретической точки зрения все выглядело очень красиво и чисто…». Еще до прихода в Netscape в компании Silicon Graphics он занимался языками для встроенных расширений инструментов сетевого мониторинга. (Кроме того, Эйх рассказывал своему интервьюеру: «Я делал это ради забавы, просто чтобы создавать свои собственные языки»).

По сути, именно основатель Silicon Graphics Джим Кларк впоследствии и создал Netscape, так что интерес к способностям Эйха в написании языков у него уже был. «Когда все только началось, меня тут же позвали поработать, но я вынужден был отказаться, поскольку участвовал тогда в другом стартапе — и занимался им еще целый год», — недавно рассказал Эйх в интервью InfoWorld.

Ровно через год Netscape таки удалось переманить Эйха к себе на работу многообещающей перспективой поработать над языком под названием Scheme. Идея у них была следующая: «Переходи к нам и реализуй Scheme для Netscape. Внедри этот язык программирования в браузер». Позже Эйх назовет Scheme «тем прекрасным исследовательским проектом, с которого все началось». Однако к тому времени, когда он полностью перешёл в Netscape, компания уже заключила сделку с Sun Microsystems, которая вовсю продвигала свой новоиспечённый язык Java. «И внезапно возникла такая картина: «Ну, мы не знаем, нужен ли нам Scheme. Мы вообще не уверены, что нам так уж нужен крохотный язык, который мы хотели у тебя заказать. Может быть, обойдемся только Java?».

Этот переломный момент Эйх запомнил на всю оставшуюся жизнь. Еще в 2012 году в интервью журналу Computer он говорил, что его начали теснить сразу по двум направлениям. «Мы предчувствовали, что Microsoft рано или поздно доберётся до Netscape, она ведь уже пыталась купить компанию в конце 94-го… А ещё у нас была какая-то странная история с Java, потому что даже в Netscape многие люди думали: «Ну, раз уж у нас есть Java, действительно ли нам позарез нужен ещё один язык?». Люди не видели пользы от языка-компаньона Visual Basic который, между тем, ориентировался на целую когорту программистов-любителей, дизайнеров и новичков в компьютерном мире.»

Brendan Eich | Gen Kanai | FlickrBrendan Eich | Gen Kanai | Flickr

«Но Марк Андреессен из Netscape, Билл Джой из Sun, я и некоторые другие убедились, что существует потребность в доступном языке, который можно внедрить непосредственно в веб-страницу», — рассказывал он InfoWorld. Или, как он пояснил для журнала Computer, «я писал что-то, что могли бы использовать люди, не представляющие, что такое компилятор. Скрипты на моем языке можно было просто запустить — и всё тут.

«Это было похоже на Basic. Именно на такой эффект мы и рассчитывали».

«Я получил приказ от отдела маркетинга сделать язык похожим на Java, но при этом не переборщить. Должен был получиться этакий непутевый младший брат Java. Его попутчик и компаньон».

Что было дальше

Как Эйх отреагировал на успех своего детища? «Когда проект начал набирать обороты, несмотря на многочисленные баги и поспешные решения, я был немного удивлён. Но шока у меня не было, потому что, если хорошенько подумать, все произошло по задуманному нами сценарию: раньше программисты могли написать веб-страницу, а теперь они могут ее запрограммировать!»

«JavaScript оказался настолько мощным, несмотря на все свои изъяны и спешку при разработке, потому что он мог напрямую управлять всеми функциями браузера, до которых так хотелось добраться веб-разработчикам». А с журналом Эйх поделился суровой правдой: «Как только продукт попадает в релиз, его баги или недоработки вскоре становятся его ключевыми особенностями, которые практически невозможно изменить безболезненно.»

«Да, из-за спешки я наделал целую кучу ошибок. Но важно другое: я предвидел, что написать язык без багов будет весьма сложно, поэтому я сделал его очень гибким и податливым. Вы всегда можете исправить проблему, если она появилась по вине JavaScript».

Как он сказал публике на dotJS: «JavaScript очень сложно найти замену. Он чем-то походит на доминантный ген. Как только он проявился, от него уже никак не избавиться».

В качестве примера он приводит «открытие» asm.js и говорит, что это ещё одна вещь, которой он чрезвычайно гордится. В нём используются битовые операторы, входившие в оригинальный JavaScript, которые теперь являются основой языка для программ высокой производительности. «Если бы этих операторов не было там с 1995 года, их было бы сложно добавить в будущем. А тот факт, что он был там с самого начала, означает, что теперь можно писать невероятно быстрые программы на JavaScript».

В интервью InfoWorld он сказал, что это и есть его «семя, заложенное в оригинальный JavaScript в те самые 10 майских дней 1995 года». 32-битные математические операторы JavaScript (известные как побитовые операторы) ведут свою родословную от языка программирования C — и от Java. В конечном итоге это привело к WebAssembly — способу преобразования инструкций в быстро исполняемый двоичный формат для виртуальных машин — и осознанию того, что в движке JavaScript «может быть два языка — старый язык, который я сделал с фигурными скобками, функциями и операторами сдвига, и этот новый язык, двоичный, не предназначенный для чтения или написания людьми. Но он может быть сгенерирован компилятором, а затем успешно выполнен».

Что бы он сделал по-другому

Спустя 23 года рефлексии, нашлось ли что-нибудь, что он сделал бы по-другому? Кто-то говорит, что он должен был отказаться работать в таком напряженном графике — или что он должен был внедрить в Netscape другой язык, например Perl, Python или Scheme —, но всё это Эйху изменить не хочется. Он лишь жалеет, что не был более избирателен в отношении отзывов, полученных от первых штатных тестировщиков JavaScript.

«Припоминаю, было вот такое любопытное замечание: «Мне бы хотелось иметь возможность сравнивать число со строкой, которая содержит это число. И при этом я не не хочу менять свой код, чтобы преобразовать строку в число или число в строку. Мне просто нужно, чтобы это работало. Сделай, пожалуйста, так, чтобы оператор equals говорил: «О, это похоже на двойку, а это похоже на строку с числом два. Они в достаточной мере равны».

«И я это натворил. Об этом я сейчас горько сожалею, потому что это нарушает важное математическое свойство, свойство отношения эквивалентности… В результате пришлось добавить второй вид оператора равенства, когда мы стандартизировали JavaScript». Одним из тех, кто помог стандартизации JavaScript, был Гай Стил, один из соавторов Scheme. «Гай сказал мне: «Не парься на этот счет. В Lisp вообще целых пять видов операторов равенства. А мы просто добавим еще один».

67f35afd5626940492b8e84c8dd3eeb8.png

Годы размышлений и наблюдений заставили Эйха взглянуть на те 10 майских дней с другой стороны. «Когда я смотрю на то, что сделал всего за 10 дней, я вижу вовсе не язык, а крохотное семя. Это было мощное, пусть и отчасти компромиссное, но всё же сильное ядро, которое выросло в полноценный язык.»

Эйх также является соучредителем сообщества Mozilla (а также фонда Mozilla Foundation, который разрабатывает проекты с открытым исходным кодом, например, веб-браузер Firefox). В 2015 году он стал генеральным директором компании Brave Software, которая создала блокирующий рекламу веб-браузер под названием Brave (его аудитория по итогам 2021 года составила 50 млн пользователей в месяц). Всё это проистекает из его стремления к конфиденциальности, хотя в конце интервью Эйх шутит, что если проследить всё до самых истоков, то JavaScript является одним из базовых элементов, которые рекламодатели используют для веб-слежки.

«Так что теперь я, как могу, компенсирую это упущение», — говорит он, смеясь.

Habrahabr.ru прочитано 18466 раз