В школьные годы я мучился тем, что эпоха великих географических
открытий давно закончилась, а звездные путешествия слишком далеко в
будущем, и никому из нас не суждено открыть собственный неизвестный до
того остров, или новую планету, и назвать свое открытие в честь любимой
девушки...
Но оказалось, что неоткрытой оставалась целая вселенная, еще одно
измерение, виртуальное и безграничное - Всемирная Паутина. В новом мире
было немеряно не то, что неоткрытых островов, но целых континентов, и
каждый из нас отныне мог стать не просто путником в виртуальных
просторах, но и богом-созидателем, и это было настолько невероятно...
Новый мир был вроде бы неосязаем, виртуален - и в то же время,
предельно реален, связан с тем миром, в котором мы физически
существуем, тысячами связей... А еще, у него была "почва".
HTML-странички. Терра-фирма виртуального океана. Твердая земля.
Считалось, что HTML - формат статичный (хоть в его названии и
присутствовала буква "L", означавшая "язык", но, если вы помните те
времена, MS DOS и Windows предпочитали трехбуквенные расширения файлов,
и именно эта "L" оказывалась за бортом).
Первые браузеры, ненадежные и медлительные, как средневековые
фрегаты и бригантины, величественно ложились на рейды все более
многочисленных сайтов...
1. Евангелие от Sun Microsystems
В середине 90-х прилавки магазинов заполонили многочисленные,
талантливо и ярко написанные, книги, воспевающие язык Java. Созданный в
недрах Sun Microsystems для применения в "умной" бытовой технике, новый
язык предлагался как панацея от множества самых разных проблем
компьютерной отрасли.
Например, как средство, способное вдохнуть жизнь в статичные
неподвижные сайты. Апплеты на языке Java должны были населить
прямоугольные области web-страниц мультиками, видео, интерактивной
графикой.
Сам по себе это очень неплохой язык. Связанные с ним неразрывными
узами библиотеки, наделявшие его невероятными способностями, были выше
похвал.
Но вот беда: чтобы работать с таким инструментом, требовалось
потратить немало времени и усилий на изучение языка, библиотек,
принципов программирования, а те, кто занимался разработкой web-страниц
и сайтов, в массе своей, были от этого страшно далеки.
Одни хотели делиться знаниями. Другие были, скорее, художниками. Третьи...
Язык Java, в качестве инструмента для всех этих людей, был не
слишком удачен. Сегодня, когда эту роль успешно исполняет другой язык
программирования, этот факт очевиден. Но в 1995 году, когда Брендан Эйч
заметил это несоотвествие, мало кто ему поверил.
Мир был прост, безоблачен, перед посадкой в самолет не заставляли
разуваться, на антенне над Всемирным Торговым Центром в Нью-Йорке все
еще светились прожекторы, и браузеры, медлительные и несоверщенные,
похожие на огромные парусники, мирно бороздили бескрайние
информационные океаны...
2. Три главных идеи в основе JavaScript
В интервью Дэнни Гудману, автору многих популярных учебников по
самым разным программным технологиям, от AppleScript до Windows XP, в
2004 или 2005 году, Эйч рассказал о том, как появился на свет
JavaScript. Прочитать это интервью можно в предисловии к 6-му изданию
толстенного фолианта, озаглавленного "Библия JavaScript", (JavaScript
Bible) изданному в апреле 2007 года.
По словам Эйча, он быстро понял, что для автоматизации web-страниц
лучше всего подошел бы другой язык. Этот другой язык уже существовал,
он существует и в наши дни, это Self. Прямой потомок SmallTalk. Но его
синтаксис очень непохож на синтаксис Java и C++, а те, кто потратил
немалые усилия на изучение одного из них ни за что не поверили бы в то,
что на самом деле он намного проще любого из них.
Поэтому многие конструкции языка были позаимствованы из Java, а в
саму Java они пришли из C++. Из-за внешнего сходства, а потом и из-за
сходства названий, JavaScript иногда принимают за вариант Java - это
неправильно. Но об этом - позже. Примите пока на веру: JavaScript и
Java - совершенно разные языки.
Это была первая идея (пополам с третьей, о которой позже - зачем для
управления HTML-страницами потребовался другой язык, да еще и такой
странный).
Вторая идея заставила меня задуматься: уж не пытается ли Брендан Эйч
сделать автору труда, посвященного созданному им языку, и толщиной в
1200 страниц, приятное. Подумав, я пришел к выводу, что нет.
Оказывается, одним из образцов для разработки нового способа
управления HTML был HyperTalk, язык безвременно умершей программы
HyperCard. Когда Брендан Эйч разрабатывал JavaScript, на его столе
лежал толстый фолиант про HyperCard и HyperTalk, написанный... тем
самым Дэнни Гудманом!
Основными в системе управления HTML, как и в HyperCard, должны были
стать отработчики событий, связанные с конкретными объектами страницы
или документа. Например, onClick - для кнопок, onLoad и onUnload для
документов, onSubmit для форм. В общем, onEvent. В первых реализациях
JavaScript гибкость хэндлеров HyperTalk оставалась недостижимой мечтой,
но после утверждения W3C DOM Level 2 эта цель была достигнута.
А причина, по которой потребовалось что-то вроде Self (третья идея) еще проще.
Скрипты (сценарии) должны быть короткими, простыми и предельно
ясными. Почти спонтанным. Он не должен становиться препятствием для
web-дизайнера, который в гораздо большей степени художник, чем
программист. Язык наподобие Java, со сложной и разветвленной иерархией
библиотечных классов, таким препятствием был.
Self - объектно-ориентированный язык без классов. И JavaScript -
тоже. Механизм наследования в таких языках отличается от общепринятого.
Новые типы объектов создаются "почкованием" - с помощью прототипов.
Вообще, по моему, использовать идеологию Self при создании языка
управления HTML-страницами - идея просто гениальная, достойная премии
Тьюринга.
Остальное из рассказанного Бренданом широко известно. С названием
новому языку не везло с самого первого дня. Сначала он назывался
"Мокко", есть такой сорт кофе, по-английски это пишется Mocha, и
читается "мокэ", но в нашей стране это название читали бы иначе.
Второе было неплохое - LiveScript. Именно под этим именем язык
показывали журналистам и отправляли бета-тестерам для ознакомления...
Брендан Эйч был в то время инженером корпорации Netscape, руководство
которой сомневалось в успехе нового языка, и с радостью ухватилось за
возможность "породниться" с Sun Microsystems, и с ее разрекламированным
языком Java...
Попав в руки пользователей, JavaScript превзошел все ожидания.
Брендан Эйч предполагал, что главной задачей языка станет проверка
правильности ввода данных в электронные формы. Но в первые же месяцы
авторы web-страниц писали на JavaScript самые неожиданные и безумно
интересные приложения.
JavaScript стал средством самовыражения для миллионов людей. Он
используется для решения таких задач, которые никогда не привлекут
профессиональных программистов.
3. Он легок в общении, но он вовсе не прост...
Его запросто осваивают самые разные люди, для многих из которых это
самый первый язык программирования (или скриптования) в их жизни - если
не считать HTML. С его помощью, даже новички, умудряются создавать
замечательные сайты, и не только сайты.
Я видел диагностическую утилиту, написанную аспирантом-медиком,
девушкой (и кажется, даже блондинкой) средствами HTML и JavaScript. Все
работало. Все было продиктовано жизнью. Это было в 1998 году.
Но из этих очевидных фактов вовсе не следует, что JavaScript
"игрушечный" язык программирования. Как и в его "предке" Self, в
простоте и понятности JavaScript скрывается мощь.
Программы, написанные на "настоящих" языках программирования
(например, на Objective-C или на C++), естественно, по части
быстродействия превосходят JavaScript на порядок, если не больше.
Исходный код "настоящих" программ, для того, чтобы стать исполняемым
кодом, переводится на машинный язык, и кроме того, еще и усушке/утруске
(оптимизации).
JavaScript - язык интерпретируемый. Каждое его выражение заново
переводится в машинные коды в момент выполнения. Некоторые трансляторы,
с помощью технологии JIT (своевременной трансляции), пытаются ускорить
отработку сценариев на JavaScript - но все равно, с C++ или C не
поспоришь. Они быстрее.
У JavaScript другие преимущества. Из-за того, что сценарии на этом
языке переводятся в момент исполнения (или незадолго до того), они
могут работать практически на любой компьютерной и браузерной
платформе. Особенно хорошо они работают там, где соблюдаются открытые
стандарты.
Кроме того, на интерпретируемых языках проще писать небольшие сценарии, отлаживать их, и вообще...
Нужны и компилируемые языки (например, для написания трансляторов с
языков вроде JavaScript), и языки интерпретируемые, для тонкой
настройки мощных и производительных программ на точное исполнение
желаний пользователя.
JavaScript и его диалекты (языки стандарта EcmaScript 262)
используются не только для механизации HTML-страниц. И похоже, у
JavaScript особое место в будущем Apple...
Но об этом пока не все можно говорить.
(Материал с www.deepapple.com)
|