Как JavaScript стал популярным?

27

В древней истории у Брендана Эйха был языковой дизайн, а в современном мире JavaScript - это популярный язык, который применяется и используется во многих местах.

Что заставило язык стать популярным? Был ли это C-подобный синтаксис, знакомый предыдущим программистам? Достаточно ли у Netscape контроль над рынком, чтобы заставить его использовать? Или есть какая-то более глубокая причина того, что JavaScript популярен, а другие - нет?

В частности, если бы вам пришлось сделать язык таким же популярным, как JavaScript, какие начальные условия вам понадобились бы, чтобы воссоздать его рост популярности?

Mathnerd314
источник
2
JavaScript был почти мертв (+ - 2005), пока Google не воскресил его с картами Google.
Тодд Моисей
1
@ToddMoses Я пошел спорить, но некоторые исследования показали, что вы правы: AJAX снова сделал мейнстрим Javascript, вдохновленный Gmail (2004) и Google Maps (2005). Однако (и это также относится к вышеупомянутому вопросу) javascript никогда не исчезал: Actionscript (используемый во Flash) появился примерно с 2000 года и в основном является тем же языком. В годы войны в браузере Flash / Actionscript использовался для того же, что и Javascript / AJAX на данный момент. Я перенес свои навыки работы с Javascript в Actionscript в 2000 году и привел их обратно в Javascript в 2008 году :-)
Даррен Кук,
2
Аякс важен, но он переоценен, ИМО. Широко распространенное несоответствие браузера с API DOM и CSS2 - вот что помогло сделать JS мощным инструментом на стороне клиента. Это началось примерно в 2002-м IIRC. Как только у нас появились подходящие инструменты для взлома HTML, быстрое внедрение сложных функций пользовательского интерфейса стало совершенно новой игрой. Однако, возможно, только в 2005 году все начали замечать. Я также сказал бы, что только в 2005 году критическая масса начала понимать, что JS на самом деле довольно крутой общий язык сам по себе.
Эрик Реппен

Ответы:

31

Я комментировал более ранний ответ , но он становился большим, поэтому я думал, что раскручиваю это.

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

Предыдущие примеры:

  • C для Unix
  • Objective-C для iOS
  • Perl и PHP для серверной части Web 1.0
  • Python и Ruby для серверной части Web 2.0
  • Java для внутреннего интернет-предприятия

Чтобы ответить на ваш вопрос, JavaScript был языком Netscape Navigator еще тогда, когда это был доминирующий браузер. В частности, это был язык для динамической разработки интерфейса.

Следующий большой язык придется решить еще одну границу. Кажется, что в серверном пространстве веб-разработки все еще есть захват. Кроме того, мобильные вычисления не полностью решены, несмотря на нынешнее доминирование Apple. Кроме того, появляются многоядерные и облачные вычисления, которые многие языки пытаются использовать (например, параллельные языки, такие как Erlang и Go, или функциональные языки, такие как Haskell и OCaml).

У предпринимателей есть выражение «найди кого-нибудь в огне и продай ему пожарный шланг». Итак, если вы хотите ввести новый язык, чей огонь вы тушите? Каждый новый рубеж в вычислительной технике приносит целый ряд головных болей; так что поставь немного аспирина, и ты будешь золотым.

chrisaycock
источник
4
Я почти согласен, но не могу понять, как платформа .NET стала настолько популярной?
Томаш Нуркевич
5
@Tomasz Microsoft выдвинула .NET как новую платформу для Windows (которая по-прежнему имеет подавляющее большинство настольных установок) и зашла так далеко, что прекратила выпуск VB 6.
chrisaycock
1
Ни Perl, ни Python действительно не обязаны своей первоначальной популярностью в Интернете; они были предназначены в качестве языков для быстрого создания инструментов для системных администраторов или служб операционной системы (соответственно), и они были чрезвычайно успешны в этих областях, прежде чем они получили еще большую популярность в веб-разработке.
SingleNegationElimination
1
@TokenMacGuy: эти домены (включая CAD / CAE) были относительно небольшими, пока Web 1.0 не взлетела. Именно тогда полки в книжных магазинах начали переполняться книгами на этих языках.
hotpaw2
2
@ hotpaw2: Perl был чрезвычайно популярен для написания сценариев в UNIX за несколько лет до того, как домашний доступ в интернет стал вообще обычным явлением.
Кевин Клайн
38

Это довольно просто: Netscape использовал движок JavaScript в своем браузере. Если вы хотите делать скрипты в Интернете, JavaScript был этим . Internet Explorer имел (и все еще имеет) и JavaScript, и VBScript, но, очевидно, если вы хотите работать не только с IE, у вас нет другого выбора, кроме как использовать JavaScript.

JavaScript - отличный язык сам по себе, но он не был бы настолько популярен сегодня, если бы не тот факт, что это единственный язык, который вы можете использовать для написания HTML.

Дин Хардинг
источник
3
Таким образом, если вы воспользуетесь существующим (популярным) программным обеспечением, которому нужен язык более высокого уровня?
Mathnerd314
7
@ Mathnerd314: Это не совсем так. JavaScript (спасибо, г-н CRT: p) никогда не был отделен от браузера: он был разработан Netscape специально для использования в их браузере, поэтому не похоже, что было принято смелое решение «прокрутить» популярность Netscape, чтобы сделать язык популярный.
Дин Хардинг
2
@ Mathnerd314 Это не столько контрейлерные перевозки, сколько единственный реальный язык для новой границы вычислений , как C для Unix. Любой, кто хотел динамический интерфейс, должен был использовать JavaScript.
chrisaycock
4
Чтобы воссоздать успех, мне нужно найти совершенно новую границу вычислительной техники и сделать новый язык обязательным. Я вижу ...
Mathnerd314
2
@ Mathnerd314 Текущие границы включают многоядерные и облачные вычисления. Действительно, это то, на чем мог бы использовать язык, подобный Эрлангу. (Другим примером является рост Objective-C из-за появления смартфонов, поскольку Apple является таким крупным игроком в этом пространстве.)
chrisaycock
7

Я собираюсь добавить обновление к этому, потому что я думаю, что появление JS в клиентской сети было неправильно понято в нескольких ключевых моментах за эти годы.

Это был не Аякс

Я не говорю, что Ajax не был важен для эволюции понимания JS как языка, но борьба за доминирование на стороне клиента была закончена задолго до появления термина Ajax.

Это было не потому, что это была единственная игра в городе

Были Java-апплеты, Flash и VBScript. Я слышал, что в 90-х были даже другие варианты сценариев (но требовались плагины IIRC). Ява очень популярна, но апплеты провалились. Они были уродливы и часто были швейцарским сыром, но, что более важно, я не думаю, что Java хорошо подходил по причинам, о которых я расскажу позже. Flash был очень популярен и имел прочную опору в течение нескольких лет, но даже когда у Flash наконец были варианты SEO, они обычно не использовались, что делало исключительно Flash-сайты очень трудными для обнаружения. Даже сейчас большинство из нас регулярно обновляют Flash, чтобы видеть фильмы, но это настоящая ахиллесова пята. Запатентованная технология в браузерах раздражает. И, конечно, VB, который будет работать только с IE, так что нет.

Правильное место в нужное время важно, но не полный ответ

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

Это оказалось идеальным инструментом для проблемной области

Я бы сказал, что около 2000-х годов у нас были следующие проблемы:

  • IE и Netscape только что согласились начать играть хорошо, следя за тем же стандартом DOM API и CSS, и с тех пор нам приходилось сталкиваться с множеством устаревших кросс-браузерных проблем, которые только начинают становиться управляемыми без помощи инструментов нормализации JS DOM, таких как JQuery пост IE8
  • Было целое новое поколение веб-разработчиков / дизайнеров, которые не обязательно были тяжеловесами как программисты, стремящиеся улучшить свою игру после взлома пузыря, когда они перестали давать вам достойную зарплату за то, что они появились за дверью и ничего более чем базовая HTML-грамотность и некоторые навыки работы с фотошопом.
  • В городе появился новый ребёнок из CSS, который предлагал интригующие возможности для того, что в конечном итоге будет называться DHTML, (более уместно) DOM Scripting, (сейчас неуместно) HTML5 (zomghtml5!).

Поэтому нам нужен был язык, который был бы глубоким и предлагал возможность фактически структурировать и разрабатывать более совершенное приложение с переносимыми / повторно используемыми компонентами на стороне клиента, но также доступным для людей, которые мало что знали и просто нуждались в вещах. появляться / появляться, когда вы нажимаете кнопку.

Более того, MS, являющаяся неуклюжим / некомпетентным и / или зверьком, который иногда является злодеем, борющимся с анти-конкурентной практикой, не смог по-настоящему прикоснуться к своей несоответствующей реализации DOM API в течение хорошего твердого десятилетия, хотя им и удалось добавьте случайную вещь как оригинальный объект XHR и querySelectors в IE8.

Важно отметить, что примерно к 2005 году нам удалось полностью похоронить сложность, связанную с обработкой кросс-браузерных проблем, что это не было больше серьезной проблемой в JavaScript. Неспособность поддерживать CSS2 должным образом до тех пор, пока они это делали, причиняла значительно больше боли. Чтобы получить представление об объеме и глубине проблем, я рекомендую проверить quirksmode.org . Я не думаю, что это подвиг, который мог бы быть достигнут столь же плавно и во многих библиотеках на Java, конечно, не в VB и определенно не с какой-либо стратегией плагинов, цель которой - обойти весь вопрос, став совершенно новым вид неприятности.

Другие языковые функции, которые имеют большое значение для пользовательского интерфейса:

  • Функции первого класса. По моему опыту, нет ничего лучше, чем асинхронная обработка и управляемые событиями парадигмы, чем язык, который делает свои функции первоклассными. Обе проблемы регулярно рассматриваются в работе пользовательского интерфейса.

  • Динамические типы: приведение и проверка типов - очень редкая потребность в JavaScript, которая помогает сохранять код кратким и компактным. Проблемы с пользовательским интерфейсом могут очень быстро усложниться. Надежность кода и абсолютная ясность в отношении потока данных имеют решающее значение для его понимания и изменения / обслуживания.

  • Это не протекционизм: в течение многих лет кто-то проповедовал, что вам нужно защищать себя от своих собственных ошибок и глупостей, которые другой парень может сделать с вашим кодом, делая кодовые конструкции очень жесткими и негибкими, и невозможно вмешиваться в исходное намерение, которым это было Автор и многие люди слушали. Я не буду говорить, что они всегда неправы (возможно, подумают), но я скажу, что это неправильный подход к веб-интерфейсу, и я верю, что это нечто вроде феномена, который мы проверяли, поддерживали и модифицировали сторонние графические интерфейсы гораздо быстрее и проще, чем такая работа, как правило, выполнялась в более ограниченных языках в прошлом. Возможность быстро и легко изменять вещи на лету значительно упрощает создание схем динамической / плавной архитектуры, которые не требуют огромных затрат косвенных данных и абстракций, что в конечном итоге облегчает понимание того, что, черт возьми, происходит в вашем коде. и упреждающий или обрабатывать исключения гораздо более четко. Проще поддерживать просто за счет того, что можно быть более прямым во всем, что вы делаете, и с гораздо меньшим количеством кода, чем это потребовалось бы с учетом другой философии.

Как JS стал популярным? Он зарекомендовал себя как отличный инструмент для работы снова и снова. Это не тот язык, с которым мы «застряли». Это язык, который, возможно, во многом способствовал эволюции популярных языков. И за это вы можете поблагодарить Брендана Эйха и всех современников, которые помогли воплотить эту идею в голову, за то, что ему понравился Scheme, который больше вдохновлял дизайнеров, а не Java.

Эрик Реппен
источник
2

Первоначально одной из тактик было название - «JavaScript» был нацелен на популярность Java, которая некоторое время росла.

Грант Пэйлин
источник
1

Разве это не был единственный кросс-браузерный язык сценариев на стороне клиента? Его популярность, кажется, выросла в паре с популярностью в сети, что имеет смысл.

Бен Хьюз
источник
1

В нужное время, в нужном месте. И это не совсем отстой.

Это та же самая причина, по которой Facebook выигрывает.

Евгений Брикман
источник
0

На мой взгляд, Javascript популярен, потому что он хорошо поддерживается.

Во-первых, это единственный язык для Netscape и IE в свое время. После того, как «сообщество javascript» было создано и стало стабильным, никто не мог даже подумать о «другом благе», которое необходимо строить с нуля. Они просто способствуют тому, чтобы сделать это все лучше и лучше.

Если вы хотите создать новый популярный язык, первое, о чем я думаю, это то, что вы должны определить, кто использует этот язык . Первых клиентов всегда трудно найти, и вы должны так или иначе сделать свой язык лучше javascript. Может быть, даже в ограниченном поле / ограниченном сообществе программистов, например, «лучше / быстрее движок JavaScript для мобильных телефонов iPhone» может быть хорошим выбором.

Более того, ваш язык должен быть прост в использовании и настраиваться сообществом, потому что именно сообщество определяет, какой язык может выжить.

Хонг Лонг
источник
Главное, как сделать его популярным «достаточно». Тогда это сработает само собой.
Hoàng Long
0

Вы не поверите мне, но Flash и (в нескольких java-апплетах ранее) внесли огромный вклад в рост популярности javascript и в эволюцию самого языка.

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

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

shabunc
источник
-1

Я думаю, люди думали, что Javascript должен был что-то делать с Java.

(Как в наше время все начинается с «я»)

Маркетинговая / рекламная стратегия играет важную роль.

Саймон
источник
-1

Я действительно думаю, что это связано с его C-подобным синтаксисом . Согласно Википедии Javascript появился в 95 году. В то время C был всегда на высоком уровне, а Java был следующим языком. Я думаю, что синтаксис был действительно привлекательным (для того времени), и его ассоциация имени со следующим большим языком, Java , дала ему преимущество.

В то время это позволяло программистам C легко переходить на динамический язык.

Programming Language    Dec 2010    Dec 2005    Dec 1995        Dec 1985
Java                    1           1           -               -
C                       2           2           1               1

Индекс Тиобе

Если бы я хотел воссоздать успех Javascript, я бы посмотрел на проблемы, от которых страдают современные программисты, и дал бы им решение со знакомым синтаксисом.

Параллельное программирование IMO - следующая большая проблема, с которой сталкиваются программисты. Я думаю, что функциональные языки действительно отлично справляются с преодолением этого препятствия. Если бы я должен был создать следующий Javascript, я бы создал функциональный язык с общей платформой . Кроме того, я думаю, что он должен быть достаточно гибким, чтобы быть языком scirpting, но достаточно мощным, чтобы быть языком статической типизации, с отличной структурой.

Хотя не все могут с этим согласиться, я думаю, что F # может иметь много достоинств в будущем.

snmcdonald
источник
2
@Мистер. CRT: Андерс Хейлсберг, создатель Turbo Pascal, оказал большое влияние на C # и .NET Framework. Так что я бы не стал сбрасывать со счетов Паскаля, если бы Netscape принял Паскаль. Вокруг этого до сих пор существуют тонны разработчиков Delphi.
snmcdonald
3
Извините, удалил мой комментарий, прежде чем вы ответили - он все равно был сарказмом и поэтому не особенно полезен. Я должен сказать, что, хотя, безусловно, полезно, чтобы существующие программисты «опускали пальцы в воду», С-подобный синтаксис вряд ли является гарантией успеха. Рассмотрим Objective-C: более чем десять лет в относительной безвестности, затем Apple покупает NeXT и делает его своей основой для всевозможных забавных маленьких гаджетов ...
Shog9
1
@Мистер. CRT. Очень интересный комментарий. Синтаксис определенно не лучший, хотя, я думаю, это важно для существующих программистов. Objective-C не очень-то похож на меня. Возможно, именно поэтому он не взлетел изначально. Тем не менее, это может быть связано с новой технологией, которая делает ее актуальной, такой как Java была в 90-х годах. Что касается синтаксиса, я думаю, что следующее поколение программистов становится более удобным с функциональными и динамическими языками.
snmcdonald
@Мистер. CRT: или Python с Google и т. Д. Я бы сказал, что «популярность» (как широко распространенная), как правило, не имеет ничего общего с самим языком (в конце концов, есть много фантастических языков, которые не очень популярны [например, Haskell) , Эрланг] и другие, которые безобразно и чрезвычайно популярны [например, PHP])
Дин Хардинг
@Dean Harding: Интересный комментарий, потому что мне действительно нравится PHP. Я ценю, что имена библиотечных функций имеют сходство с C-библиотекой и все же принимают Perl-подобный синтаксис, не затеняя его множеством символов. В то же время я понимаю критику, поскольку в последний момент вижу реализацию ОО в Perl и PHP. Синтаксис PHP схож с синтаксисом C и Perl (возможно, с большим количеством языков), который знаком многим программистам и, тем не менее, предназначен для очень популярной области. Я действительно думаю, что это сочетание синтаксиса и популярных технологий.
snmcdonald
-1

JavaScript стал популярным благодаря AJAX и хорошим инструментам проверки, таким как Firebug. Конечно, помог тот факт, что он работал во всех основных браузерах и был единственным способом сделать DHTML.

В основном, чтобы сделать даже самый уродливый язык успешным, он должен быть в состоянии сделать действительно полезную вещь, которую не может сделать ни один другой язык. Также вам необходимо предоставить инструменты, которые позволят программистам по-настоящему почувствовать, что они контролируют то, что делает язык, чего не было у javascript до firebug.

Камил Шот
источник
2
JavaScript получил новую жизнь с AJAX (и, возможно, Firebug, хотя я думаю, что это вторично), но он выиграл войну до того, как начался (и почти пятнадцать лет назад), потому что в его пространстве не было конкуренции.
Wyatt
-4

Javascript популярен как хак для преодоления недостатков HTML-разметки, которая заставляет веб-страницы появляться так, как их хотят видеть дизайнеры. Без Javascript все веб-страницы выглядели бы так - HTTP 1.1 . Едва шаг вперед от протокола суслика .

ja72
источник
2
Протокол! = Дизайн! = Скриптинг. Вы можете сделать довольно красивые страницы без Javascript, используя HTTP 1.0.
deceze