Історія мов програмування: розбрід і консолідація JavaScript

Можливості HTML-документів розвивалися поступово: спочатку все обмежувалося власне текстом з тегами і зображеннями. Пізніше з'явилася можливість вставки і відтворення аудіофайлів і відеокліпів. Однак крім розміщення мультимедіа-контенту на веб-сторінці існувала проблема динамічної обробки запитів та управління переглядом. Для її вирішення стандартних засобів HTML не вистачало.


При генерації сторінок Web виникає дилема, пов'язана з архітектурою «клієнт-сервер». Сторінки можна генерувати як на стороні клієнта, так і на стороні сервера. У 1995 році фахівці компанії Netscape створили механізм управління сторінками на клієнтській стороні, розробивши мова програмування JavaScript.

Таким чином, JavaScript — мова управління сценаріями перегляду гіпертекстових сторінок Web на стороні клієнта. Однак насправді JavaScript — це не тільки мова для програмування на стороні клієнта. Liveware, прабатько JavaScript, є засобом підстановок на стороні сервера Netscape. Тим не менше, найбільшу популярність JavaScript забезпечив front-end.

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

Netscape Communications Corporation представляє

Компанія Netscape Communications Corporation брала активну участь у процесі розвитку всесвітньої павутини. Остання явно багатьом зобов'язана цієї компанії: серед іншого Netscape подарувала вебу JavaScript. Спочатку компанії вдалося гідно вступити в боротьбу за першість в інтернет-галузі завдяки створенню і безоплатного розповсюдження (для використання в домашніх умовах) браузера Netscape Navigator.

Але в квітні 1995 року Netscape найняла Брендона Ейха, на якого була покладена особлива місія. Перед ним стояло завдання впровадити мову програмування Scheme (або щось схоже) в браузер Netscape Navigator.
Scheme — це функціональний мову програмування, один з двох найбільш популярних в наші дні діалектів мови Лисп (інший популярний діалект — це Common Lisp).
Однак постановка задачі була, м'яко кажучи, не дуже точна, Ейха перевели в групу, відповідальну за серверні продукти, де він пропрацював місяць, займаючись поліпшенням протоколу HTTP. У травні розробник був перекинутий назад, в команду, яка займається клієнтською частиною (браузером), де він негайно почав розробляти концепцію нової мови програмування.

Через деякий час з'явився скриптова мова під назвою LiveScript. Ця мова був створений для реалізації інтерактивності в HTML-документах, які раніше були статичними. Підтримка LiveScript була реалізована в перших версіях браузера Netscape Navigator, користувався великою популярністю і успіхом.

Крім Брендана Ейха в розробці нової мови брали участь співзасновник Netscape Communications Марк Андресс і співзасновник Sun Microsystems Білл Джой. Щоб встигнути закінчити роботи над мовою до релізу браузера, компанії уклали угоду про співпрацю. Їх метою було створити «мова для склеювання» складових частин веб-ресурсу: зображень, плагінів, Java-аплетів, який був би зручний для веб-дизайнерів і програмістів, що не володіють високою кваліфікацією.

В результаті угоди між Netscape Communications і Sun Microsystems і об'єднання ідей LiveScript зі структурою Java з'явилася середовище під назвою «Mocha», призначена для розробки мережних додатків і, зрештою, для створення динамічних web-сторінок. Середа випускалася як відкрите і була незалежна від використовуваної програмної платформи.

Проект завершився створенням специфікацій, які були опубліковані двома компаніями в грудні 1995 року під назвою JavaScript 1.0.

Netscape vs Microsoft vs стандартизація

Першим браузером, що підтримує JavaScript, був Netscape Navigator 2.0. Однак корпорація Microsoft швидко збагнула, куди вітер дме і розробила свій «JavaScript», який отримав назву JScript 1.0. Природно, його підтримка була реалізована в браузері Microsoft Internet Explorer 3.0 і Internet Information Server.

Незважаючи на те, що JScript формально був незалежної розробкою Microsoft, він виявився сумісним з JavaScript 1.0 компанії Netscape. Більш того, сценарій, написаний для одного гравця, з великою ймовірністю міг бути виконаний на іншому браузері.

Пізніше компанія Netscape випустила версію JavaScript 1.1 для Netscape Navigator 3.0 і Live Wire Web server. У цій версії були збережені всі характерні риси мови JavaScript 1.0 і додано багато нових можливостей.

Компанія Microsoft також удосконалила власну мову JScript, але вирішила не включати в нього всі нововведення JavaScript 1.1. З цього моменту виникла несумісність браузерів: при спробі запустити сценарії, написані на JavaScript 1.1, вони не розпізнавалися або призводили до помилок при використанні в продуктах Microsoft.

Для того, що зробити свою версію нової мови більш популярною, компанія Netscape випустила опис JavaScript.



Однак незабаром Netscape, Microsoft та інші компанії вирішили, що буде краще мирно домовитися і виробити єдиний стандарт. Європейська асоціація виробників комп'ютерів (European Computer Manufacturing Association — ЕСМА) почала роботу над ним у листопаді 1996 року. У липні наступного року був створений новий мову, отримав назву ECMAScript.

А поки йшла робота над стандартом, конкуренти не втрачали часу і випустили нові версії власних мов – JavaScript 1.2 для браузера Netscape Navigator 4.0, і JScript 2.0 для браузера Microsoft Internet Explorer 3.0. Таким чином проблеми сумісності мов сценаріїв ще більше посилювалися: при доопрацюванні цих мов не був врахований загальний стандарт (ЕСМА).

Життя Web-розробників сильно ускладнилася. Їм не довелося запам'ятовувати особливості кожного браузера, але і створювати Web-сторінки, які можна було б переглядати в обох браузерах.

Більшість з них було впевнене, що ситуація ніколи не зміниться і буде тільки посилюватися. Проте оптимісти сподівалися, що завдяки ЕСМА браузери знову стануть сумісними.
Конкуруючі компанії припинили пручатися тільки до виходу третьої редакції стандарту ECMA 262 (ECMAScript Edition 3) і випустили JavaScript 1.5, і JScript 5.5. Ці версії були практично на 100% сумісні з ECMAScript Edition 3.

Після цього стало можливо написати сценарій JavaScript, який міг би однаково добре працювати в обох браузерах. Теоретично. Однак відмінності між браузерами все одно ускладнювали цю задачу.


Таблиця 1.1. Підтримка JavaScript в браузерах Netscape


Таблиця 1.2. Підтримка JavaScript в браузерах Internet Explorer

Тим не менш, JavaScript знайшов широке застосування не тільки у розробників браузерів, але і в цілому у творців відкритого ПЗ.

За даними Black Duck Software, в розробці відкритого програмного забезпечення частка використання JavaScript зростала. 36 % проектів, релізи яких відбулися з серпня 2008 по серпень 2009, написані з використанням JavaScript.

JavaScript сьогодні

Згідно TIOBE Index, що базується на даних пошукових систем Google, MSN, Yahoo!, Вікіпедія і YouTube, в серпні 2016 року JavaScript знаходився на 7-му місці. Рік тому він займав 9-ту позицію.



80 % відкритого програмного забезпечення написано на Сі, C++, Java, Shell і JavaScript. При цьому JavaScript — єдиний з цих мов, чия частка використання збільшилася рік до року (більш ніж на 2 відсотки, якщо вважати в рядках коду).

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

Крім того, JavaScript активно застосовується в наступних напрямках розробки:

• Бекенд
• Мобільні додатки
• Десктоп програми
• Embedded. Холодильники/годинник/чайники/IoT

В даний час JavaScript є найбільш популярною мовою програмування з чудово розвиненою екосистемою модулів OSS, який, на відміну від інших існуючих альтернатив, що дійсно можна назвати універсальним: «пишеш один раз, використовуєш скрізь» — ідея, про яку творці Java мріяли. І ось завдяки JavaScript вона стала реальністю, писал Ерік Елліот.

Перспективи JavaScript

Немає такої мови, або технології, які були б однозначно визнані ринком як краще рішення для розробників в якій-небудь сфері. У кожного варіанту є свої переваги і недоліки.

Складність сучасних веб-рішень давно вимагає суттєвого перегляду. Тому велику увагу розробники приділили новими версіями стандарту JavaScript – ECMAScript 6 і 7.

6-я версія стандарту (який, до речі, в піку невдалому випуску ES4 іноді називають як ES6 Harmony) містить зміни, які суттєво полегшать створення складних рішень: класи, модулі, колекції, ітератори, генератори, проксі, типізовані масиви, обіцянки, нові методи і властивості для стандартних об'єктів і нові синтаксичні можливості і ще багато чого.

На відміну від ECMAScript 6 специфікація ECMAScript 7 містить відносно небагато змін, які розвивалися в рамках безперервно оновлюється варіанти специфікації ECMAScript Next. У стандарт з даної чорнової специфікації були перенесені вже підтримуються браузерами можливості, тому ECMAScript 7 одразу доступний у всіх основних браузерах і не вимагає додаткового часу на реалізацію.

В ECMAScript 7 увійшли зміни, пов'язані з усуненням недоробок і внесенням уточнень до ECMAScript 6.

JavaScript залишається перспективним мовою програмування. Про його перспективи досить багато вже було написано на Хабре:

1. Зростання використання TypeScript в реальних проектах, розвиток альтернативних проектів і їх взаємне збагачення.

2. Розвиток інструментів для кроссплатформної розробки на PHP, продовження стирання меж між сайтами і додатками.

3. Зростання розумних телевізорів і консолей з розробкою на JavaScript, нативна розробка на JS на багатьох сучасних платформах (але не всіх).

4. Розвиток API доступу до нативним можливостей пристрою з JavaScript, адаптація NUI в JS. (Затягнеться на кілька років.)

5. Нові перероблені версії популярних бібліотек, підвищення вхідного порога для створення комплексних фреймворків, нішеві рішення на базі ES6.

6. Адаптація веб-компонент браузерами, прийняття нових технологій розробниками елементів управління і різних фреймворків.

7. Застосування менеджерів пакетів і систем складання для JavaScript у корпоративній і навчальної середовищі, інтеграція в популярні інструменти веб-розробки.

8. Розвиток графічних бібліотек на JS, показова адаптація нових технологій великими або помітними гравцями ринку (ігри та інтерактивний контент — основні драйвери).

9. Unity 5 з рендерингом у WebGL, розвиток 3d і ігрових бібліотек, потенційний прорив через соціальні мережі.

10. Адаптація Node.js в корпоративному середовищі, адаптація нового ES6 в самому Node.js. Запасаємося попкорном і дивимося історію з форком io.js.

11. Хмарні рішення для IoT на базі Node.js нові експериментальні проекти на клієнтській стороні.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.