За долгую историю своего развития, по-прежнему удивляющую многих, JavaScript стал одним из наиболее распространенных и влиятельных языков программирования. Он не занимает первое место, но по состоянию на конец 2014 года уверенно входит в десятку лидеров индекса TIOBE (www.tiobe.com/index.php/content/paperinfo/tpci/index.html). Уже почти 20 лет JavaScript балансирует между 7-й и 12-й позициями, что является впечатляющим достижением для языка, который многие считают «игрушечным». Не лишенный недостатков, этот язык, тем не менее, обеспечивает широкие возможности веб-разработки на стороне клиента и все чаще применяется в создании серверных приложений. Node.js – залог его дальнейшего успеха.
Однако в пространстве JavaScript назревает реорганизация, о которой следует знать, если этот язык занимает важное место в вашей работе. JavaScript (по сути, ECMAScript, стандартизированный язык, но все называют его JavaScript) скоро появится в версии 6. В этой версии, выпуск которой станет еще более значительным событием по сравнению с появлением версии 5, будут реализованы новшества, призванные сделать JavaScript «реальным» языком. JavaScript окончательно утратит свой прежний облик, обретя поддержку классов, констант, модулей и многое другое.
Если вас интересуют детали, изучите пока находящуюся на стадии развития спецификацию ECMAScript 6 (официальный сайт ECMAScript – www.ecmascript.org). Еще лучше для исследования новых возможностей посетить блог MVP Дэна Валина, где вы найдете серию публикаций, посвященных ECMAScript 6 (weblogs.asp.net/dwahlin/getting-started-with-es6-%E2%80%93-the-next-version-of-javascript), в которых будут подробно анализироваться фундаментальные новшества этой версии. Рекомендую также подписаться на еженедельный бюллетень по веб-технологиям, который выходит хоть и не каждую неделю, но содержит важные сведения, касающиеся новых методов веб-разработки. Вводная публикация серии включает ссылки на полезные ресурсы по JavaScript.
Тем временем вспомним в общих чертах историю JavaScript. Всегда полезно знать, откуда что взялось. Я собираюсь написать ряд статей о JavaScript и его версиях, ожидаемых в 2015 году, поэтому часто буду возвращаться к этой теме.
Краткая история JavaScript
Создателем JavaScript является Брендан Айк, некогда работавший в Netscape и имевший на создание этого языка программирования всего лишь 10 дней – от концепции до рабочего варианта. Первоначально язык получил имя LiveScript (хотя некоторые утверждают, что исходный код назывался Mocha (Мокко), откуда возникла прямая «кофейная» ассоциация с Java – названием, пользовавшимся большой популярностью в то время). LiveScript вышел с версией 2.0 браузера Netscape в сентябре 1995 года, после чего в версии 2.0B3, выпущенной в том же году, был переименован в JavaScript.
В это время компания Sun Microsystems, тогдашний владелец Java, задумала нейтрализовать LiveScript и сделать Java языком веб-программирования. Считается, что Netscape сменила название LiveScript на JavaScript, чтобы приобщиться к растущей популярности Java и умиротворить Sun. Netscape не хотела делать Java языком браузера и искала более простую модель программирования, чтобы заинтересовать широкую аудиторию специалистов, которые могут оказаться не готовы к освоению такого сложного языка, как Java.
Примерно в это же время разгорались «браузерные войны» между Netscape и Microsoft, и Microsoft выполнила реверс-инжиниринг движка JavaScript. Результату этой работы было дано имя JScript, потому что название JavaScript принадлежало Sun. Заручившись поддержкой двух основных поставщиков браузеров, JavaScript быстро стал языком клиентского веб-программирования, а Java постепенно исчез из современных браузеров. Сегодня названием JavaScript владеет компания Oracle, благодаря приобретению Sun в 2010 году, а официальным владельцем языка JavaScript является компания Mozilla, образовавшаяся «на развалинах» Netscape.
JavaScript – интересный язык, имеющий и хорошие, и плохие стороны. Его неоспоримые достоинства – красота и элегантность, благодаря чему многие считают JavaScript просто чудесным языком. Но свойственные ему недостатки иногда порождают проблемы, в результате чего код функционирует не так, как предполагается, и часто получается ошибочным. Откуда берутся отрицательные моменты? Вот три основные причины.
- Унаследованные конструктивные элементы. Большая часть синтаксиса перешла к JavaScript от Java. В то время Java был сравнительно новым языком и еще не был всесторонне доработан, так что некоторые его недостатки оказались скопированы в LiveScript.
- Благие намерения. Брендан Айк намеренно включил в язык ряд компонентов, облегчивших начинающим программистам его использование, но нанесших вред профессиональным программистам, создающим большие программы. Ярким примером тому является глобальный объект.
- Спешка. У Айка на создание спецификации LiveScript было всего 10 дней, так как требовалось успеть к выпуску очередной версии браузера Netscape Navigator. В отличие от создателей большинства других языков, он не располагал многолетним сроком на доводку, когда можно было устранить все несоответствия и исправить неудачные конструктивные решения. Тем не менее, язык стал замечательным достижением блестящего программиста. Вина же за установление нереального срока лежит скорее на Netscape.
По большей части отрицательные моменты можно обойти. Благодаря своим достоинствам YavaScript – удивительно удобный и универсальный язык, и именно на положительных сторонах мы будем фокусировать внимание.
В первые годы существования JavaScript профессиональные программисты сетовали, что он имеет множество изъянов и представляет собой «игрушечный» язык, задуманный для упрощения жизни программистам-любителям – например, веб-дизайнерам. Долгое время было непонятно, сможет ли JavaScript выжить как язык веб-программирования и не вытеснят ли его другие технологии. Какое-то время казалось, что такой технологией станет Java.
Затем произошло следующее. В поисках технологий, основанных на стандартах и позволяющих создавать более мощные веб-приложения и веб-страницы, родилась концепция Ajax, положившая начало тому, чему Тим O'Рейли, основатель крупного книжного издательства O'Рейли Медиа, дал определение «Веб 2.0». Это видение будущего интернет-технологий предполагает значительное расширение интерактивного взаимодействия между пользователями и сайтом, которые совместно в режиме диалога формируют информационный материал в виртуальном сообществе. Ajax лежит в основе этого нового веб-пространства, а JavaScript – одна из центральных технологий, используемых в рамках данной концепции.
С ростом популярности Ajax профессиональные программисты стали внимательнее присматриваться к JavaScript и оценили его несомненные достоинства, открывающиеся перед теми, кто способен примириться с недостатками этого языка. Затем появились обширные инфраструктуры и библиотеки, которые способствовали формированию более эффективной практики программирования на JavaScript. Этим, в свою очередь, было обусловлено все более широкое применение данного языка за рамками веб-браузеров, в том числе на серверах. Наконец, JavaScript заслужил всеобщее признание как первоклассный язык, достойный внимательного изучения для профессиональных программистов, но при этом доступный для любителей. Сегодня будущее JavaScript кажется блестящим. Ознаменует ли выход ECMAScript 6 дальнейший расцвет этого языка программирования или, напротив, послужит началом его упадка? Будем следить за развитием событий.