"Чи переважання JavaScript - це історична аварія чи щось інше?"
Я особисто вважаю, що успіх JS - це питання дизайну стільки, скільки було, і надалі буде недоброзичливо визнавати це, а не просто якась випадковість чи просто через те, що це перша дитина на ігровому майданчику.
Хоча названий так, щоб звертатись до розробників Java та синтаксисувати, як синтаксис на базі Java на С, також звертатися до розробників Java, Брендан Ейх прийняв одне з найпотужніших рішень в історії веб-сайту, яке полягало в основному зі Схеми для фактичної механіки мови натхнення, що, як видається, розробникам Java зовсім не сподобалось (що мені здається дуже кумедним).
JavaScript використовує дуже гнучку / гранульовану прототипічну спадщину для OOP, вона має закриття, типи на 100% динамічні, самі функції є першокласними, що дозволяє передавати їх навколо, як будь-який інший об'єкт або тип даних, і знову використовувати їх у різних контекстах і навіть застосовуватись до об’єктів на льоту, як ніби вони були оголошені фактичними членами об'єкта з самого початку. Це практично кричить, щоб використовуватись для архітектур, керованих подіями, яким потрібно нормалізувати тонну фірмового сміття або вирішити дуже нелінійні проблеми інтерфейсу.
Наприкінці світанку в Інтернеті - це єдина мова, яка коли-небудь серйозно вирішувала завдання нормалізації браузерів через фактичну війну браузера, де Netscape і IE намагалися робити все по-різному за призначенням, а за ними - 10+ років браузера перемир'я, де IE просто робив справи по-іншому, тому що MS лінивий і закріпився в деяких справедливо дурних антиконкурентних практиках, що призводять до застою браузера, і тепер світ, де браузери нарешті починають погоджуватися на ту саму загальну специфікацію щодо HTML, CSS та API DOM з IE просто відстають на 2-3 роки від останніх розробок, а не на 10 завдяки Google і Mozilla, що витісняють компілятори JIT, завдяки чому показники продуктивності IE виглядають настільки жалюгідними, що MS нарешті було пошкоджено належним чином модернізувати свої прокляті браузери.IE9 є першим, хто фактично серйозно модернізував підтримку API DOM до рівнів, які підтримував Netscape ще у 2000 році.
JS провів конкуренцію у вигляді Java-апплетів та Adobe ActionScript for Flash. Ось про це на серйозному претенденті на фронт. МС намагався підштовхнути VB, але зазнав невдачі, тому що ... ну ... VB. Також фірмові. Насправді Flash сайтів було набагато більше, ніж більшість людей усвідомлює. Ви просто не змогли знайти дурні речі з пошуковими системами. Аплетти зробили свою справу, і це було некрасиво. Справжнє потворне. JS була єдиною мовою, яка справді вирішувала проблему роботи в контексті декількох браузерів людьми, які не погоджувалися з тим, хто встановлює характеристики, з якими вони повинні відповідати.
В останні роки JS вибухає в набагато більш широку область застосування. У поєднанні з іншими веб-технологіями він спрямований на те, щоб в основному перебити всі інші рішення на мобільному фронті, оскільки це + веб-технології - це справді єдиний реалістичний вибір, якщо ви дійсно хочете написати одне додаток і змусити його працювати над усім.
Так, ні, і так, я є великим шанувальником, але я не думаю, що це випадково розіграло всіх інших претендентів на стороні клієнта, ніж те, що стає вибухопопулярним поза межами браузера, зараз можна вважати випадковістю. До JS там не було багато схемних мов, які не були в основному академічними. Це дало JS деякі потужні переваги та унікальні потреби клієнтської сторони, що дозволило цим перевагам повільно стати кристально чистими.