Яка історична основа використання Javascript у веб-програмуванні?


9

Я походжу з наукової біології, де ми також багато використовуємо Python.

Тепер, коли я почав займатися розробкою веб-сторінок, я постійно замислювався над тим, чому саме те, що JavaScript є основною мовою клієнтської мережі в Інтернеті.

Чи переважання JavaScript - це історична аварія чи щось інше? Також мені цікаво, чи є якісь перешкоди для інтеграції Python у сценарій на стороні клієнта?


Чи потрібна ця увага модератора на основі meta.programmers.stackexchange.com/questions/363/… ?
Рейн Генріхс

@Rein - Ви можете, vote to closeякщо вважаєте, що це поза темою. Якщо інші почуватимуться так само, або вони, або модератор, будуть слідувати вашій увазі.
jmort253

@ jmort253 (Можливо, я повинен перейти до мета) Не було консенсусу в потоці, пов'язаному, і я амбівалентний. :(
Рейн Генріхс

@Rein - Процес роздумів у коментарях нормальний (оскільки він служить покажчиком, чому або чому ні, громада вирішила вжити заходів щодо публікації. Якщо домовленості немає, то робіть те, що ви вважаєте найкращим. :) Особисто я вважаю, що ця історична інформація може допомогти іншим зрозуміти майбутнє JavaScript як мови і чому важливо зрозуміти та прийняти цю мову.
jmort253

Відповіді:


16

JavaScript був першою мовою сценаріїв, яка стала доступною у популярному веб-браузері, тому вона була реалізована майже повсюдно. Будучи єдиною мовою програмування, доступною у всіх популярних браузерах, не було іншого вибору, крім того, щоб вона була переважаючою мовою програмування на стороні клієнта.

Internet Explorer реалізував JavaScript таким чином, що дозволяє підключати сценарії двигунів (він поставляється з VBScript та JScript). Якщо ви вважали за краще (як я це робив) писати свій код на PerlScript або PythonScript, ви могли, але всі ваші клієнти повинні були встановити цю мову сценарію, і вони повинні були використовувати IE. Ви можете зробити це для внутрішніх проектів, але в Інтернеті це не може працювати.


Щось інше, що мені здалося цікавим, - це проекти написання компіляторів python-to-javascript, наприклад, Піжама pyjs.org .
rd108

"Піжама - це платформа для розширення Інтернет-додатків (RIA) як для Інтернету, так і для робочого столу. Вона містить компілятор Python-to-Javascript, рамку AJAX та API віджетів. Піжами розпочали життя як порт Python з веб-інструментарію Google, Компілятор Java-Javascript. Прочитайте поширені запитання та список функцій. "
rd108

Є безліч компіляторів JavaScript. CoffeeScript, TypeScript, ClojureScript, LispyScript тощо тощо
Флоріан Маргайн

7

JavaScript був створений Brendan Eich. Він був вперше поставлений з бета-версією Netscape Navigator 2.0 у вересні 1995 року як LiveScript, але був перейменований на JavaScript у спільному оголошенні з Sun Microsystems у грудні 1995 року. Лише пізніше (у 1996 р.) JavaScript був представлений в Ecma International і в кінцевому підсумку став стандартизований ECMAScript.

Її поточне домінування на ринку багато в чому пов'язане з історичною інерцією.

Джерело: http://en.wikipedia.org/wiki/JavaScript#History


2

Не впевнений, але це легка, сценарна мова клієнтів. Я думаю, що його джерела лежать у ранніх браузерах Netscape (хоча я можу помилятися). Дійсно, сама назва його була змінена перед випуском, щоб включати слово "java", хоча воно не мало нічого спільного з java. Це була швидка тактика набути популярності в той час.


1

Я впевнений, що це має багато спільного з історією.

Але я також впевнений, що не хочу, щоб веб-сайти мали змогу запускати повнофункціональні мови програмування, такі як python, у своєму браузері. Вплив на безпеку відлякує мене від будь-якого подібного сайту (або я повинен бути дуже впевнений, що пісочниця браузера була герметичною).


Це не має сенсу. ІТ повинен вирішувати, які API доступні для мови програмування. Звичайно, якби Python постачався у браузерах, він мав би доступ до тих самих API, які зараз має Javascript (як DOM), тому він не мав би можливості створити будь-який збиток.
Андреа

@Andrea - можна стверджувати, що мова є стільки ж стандартних бібліотек, скільки її синтаксис та семантика. У Javascript немає стандартної бібліотеки для вводу-виводу файлів, і це навмисно з міркувань безпеки. У Python є стандартні бібліотеки для вводу / виводу файлів, а також для багатьох інших речей, які можуть вважатися проблемами безпеки. Забороніть це і, мабуть, ви більше не займаєтесь Python. Давно в Python була пісочниця - я пам’ятаю, що вона там була у версії 1.5 - але вона була відкинута IIRC, тому що вона була недостатньо використана і була далеко не герметичною.
Steve314

Записуються стандартні бібліотеки для вводу-виводу в JavaScript. Звичайно, вони відсутні в браузері. Я просто кажу, що якби Python був реалізований у браузері, небезпечні бібліотеки були б недоступними. І, мабуть, ви їх не пропустите, оскільки вони не призначені для використання на веб-сайті.
Андреа

-2

"Чи переважання 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 деякі потужні переваги та унікальні потреби клієнтської сторони, що дозволило цим перевагам повільно стати кристально чистими.


Ви згадуєте схему двічі, не кажучи ніколи про те, як JS стосується схеми. Звичайно, ви не вважаєте, що JS має макроси, S-вирази, хвостову рекурсію, продовження чи будь-яку іншу відмітну особливість схеми - чи не так?
Гейб

@Gabe. Перевірте 4-й блок тексту. Закриття, динамічне введення тексту та функції першого класу досить важливі. Те, що JS використовує c-подібний синтаксис, забороняє використовувати макроси схеми. Це не особлива копія схеми, але на неї, безумовно, впливає.
mike30

Отже, закриття та динамічне введення тексту робить подібними до мовної схеми? Чи означає це, що C # є схожим на схему? А як щодо Рубі, Пітона та Перла? І чому схема, а не Lisp чи будь-яка інша схожа мова?
Гейб

@Gabe Я не експерт із схем, але у випадкових вікіпедіях я б сказав, що комбінація лексичної сфери, першокласних функцій та закриттів - це три, які ставлять JS набагато ближче до Scheme, ніж до Java. Інакше я просто брав слово Брендана Ейха і вважав, що належні функції першого класу були головною позицією.
Erik Reppen

Гаразд, тому JS має закриття (що, на мою думку, передбачає першокласні функції та лексичне оцінювання) та динамічне введення тексту, як схема. Оскільки C # має закриття, динамічне введення тексту та обмежену форму S-виразів, чи означає це, що C # навіть більше схожий на схему, ніж JS?
Гейб
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.