<?xml version="1.0"?>
<?xml-stylesheet type="text/css" href="http://wiki.linuxformat.ru/wiki/skins/common/feed.css?303"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF98%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0</id>
		<title>LXF98:Что за штука - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.linuxformat.ru/wiki/index.php?action=history&amp;feed=atom&amp;title=LXF98%3A%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0"/>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF98:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0&amp;action=history"/>
		<updated>2026-05-13T00:48:01Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.19.20+dfsg-0+deb7u3</generator>

	<entry>
		<id>http://wiki.linuxformat.ru/wiki/index.php?title=LXF98:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0&amp;diff=1703&amp;oldid=prev</id>
		<title>Belogorie: Новая: ==JavaScript 2?==  ''Половина web-сайтов успешно использует JavaScript – так стоит ли чинить то, что не ломалось? '''По...</title>
		<link rel="alternate" type="text/html" href="http://wiki.linuxformat.ru/wiki/index.php?title=LXF98:%D0%A7%D1%82%D0%BE_%D0%B7%D0%B0_%D1%88%D1%82%D1%83%D0%BA%D0%B0&amp;diff=1703&amp;oldid=prev"/>
				<updated>2008-03-13T11:32:29Z</updated>
		
		<summary type="html">&lt;p&gt;Новая: ==JavaScript 2?==  &amp;#039;&amp;#039;Половина web-сайтов успешно использует JavaScript – так стоит ли чинить то, что не ломалось? &amp;#039;&amp;#039;&amp;#039;По...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==JavaScript 2?==&lt;br /&gt;
&lt;br /&gt;
''Половина web-сайтов успешно использует JavaScript – так стоит ли чинить то, что не ломалось? '''Пол Хадсон''' объяснит, что к чему…''&lt;br /&gt;
&lt;br /&gt;
*'''ОК, наконец-то я дождался темы, о которой еще до начала ваших объяснений мне известно все!'''&lt;br /&gt;
&lt;br /&gt;
Правда? Стоит пожалеть деньги, выложенные за этот номер журнала! Но, признаться, я несколько удивлен: о JavaScript 2 знают пока лишь немногие.&lt;br /&gt;
&lt;br /&gt;
*'''JavaScript 2? Я как-то не до конца вник. Облом! И правда, о JavaScript 2 я пока ничего не слышал – прошу вас, продолжайте…'''&lt;br /&gt;
&lt;br /&gt;
Уже лучше! Я вижу, вы многое знаете о текущей версии JavaScript, да и немудрено: JavaScript нынче повсюду. Забрались ли вы в Интернет через настольный&lt;br /&gt;
компьютер или смартфон, работаете ли с XML-файлами или SVG с поддержкой скриптов – вам не обойтись без JavaScript.&lt;br /&gt;
&lt;br /&gt;
Не секрет, что свыше половины всех web-сайтов в той или иной степени используют JavaScript, а некоторые (Google Maps, например) целиком построены на нем!&lt;br /&gt;
&lt;br /&gt;
*'''Да, да: акроним Ajax нынче повсюду в моде.'''&lt;br /&gt;
&lt;br /&gt;
Вот именно, буква “J” в Ajax означает JavaScript, поэтому можно смело назвать JavaScript непревзойденным языком программирования Web 2.0. Даже для&lt;br /&gt;
сайтов без Ajax, JavaScript сегодня вне конкуренции.&lt;br /&gt;
&lt;br /&gt;
*'''Погодите… зачем тогда что-то менять? Я уважаю стандарты…'''&lt;br /&gt;
&lt;br /&gt;
Не забывайте, что JavaScript был создан десятилетие назад, когда Сеть была совсем не той, что сейчас. Тогда JavaScript занимался установкой и чтением cookies, выводом простеньких часов на экран, проверкой правильности заполнения форм и другими примитивными задачами. Теперь его основная цель – обеспечить взаимодействие пользователя с web-страницей: не желая наблюдать уныло-статические картинки, современные пользователи жаждут интерактивности: почти мгновенного обновления, общения с другими пользователями, и – вероятно, самое важное – они больше не хотят нажимать кнопку “Reload” (Обновить). Короче: JavaScript был создан для решения простых задач, и уже с трудом удерживает выстроенные вокруг него супер-сайты.&lt;br /&gt;
&lt;br /&gt;
*'''А разве недостаточно легкой модернизации – скажем, JavaScript 1.1, а не 2.0…'''&lt;br /&gt;
&lt;br /&gt;
На самом-то деле, добрались уже до JavaScript 1.7! Чтобы соответствовать растущим запросам, новые функции добавляются непрерывно.&lt;br /&gt;
&lt;br /&gt;
*'''Почему тогда столько внимания 2.0? Рано или поздно, выход из серии 1.х на 2.0 стал бы просто логическим продолжением.'''&lt;br /&gt;
&lt;br /&gt;
В общем, да. А еще такие значительные изменения нумерации версий обычно знаменуют обратную несовместимость – скрипты прежних версий просто не смогут работать на новой. Обычно имеется в виду вот что: «если уж пришлось пойти на слом обратной совместимости – самое время внести и другие давно назревшие изменения». А изменения назрели действительно радикальные: формальное определение классов вместо ныне существующего быстрого определения прототипов, пространства имен, примитивные типы (вместо представления всего сущего в качестве объектов), модификаторы доступа (private, public и т.п.) и многое&lt;br /&gt;
другое. Масштабность изменений вынудила одного из критиков сказать следующее: «Предполагается, что JavaScript – высокоуровневый, абстрактный, гибкий&lt;br /&gt;
язык. Именно этим он был хорош, таким же образом его следовало бы использовать и дальше. Если пойти по пути, предложенному JavaScript 2, то, если честно, понадобится создать новый JavaScript для выполнения тех задач, которые этот язык столь успешно решал».&lt;br /&gt;
&lt;br /&gt;
*'''В угоду программистам, нужно многое изменить… А чтобы сохранить преемственность, необходимо многое оставить… Возможна ли золотая середина?'''&lt;br /&gt;
&lt;br /&gt;
Часть проблемы состоит в том, что многие не вполне представляют себе функциональность нынешнего JavaScript – поэтому, просматривая спецификацию JavaScript 2, они удивляются: «Ничего себе, сколько всего!», тогда как половина всех нововведений давно работает в JavaScript 1.7, просто они об этом не знают. Другая проблема – столкновение множества самых разных точек зрения. Брендан Эйх [Brendan Eich], технический директор Mozilla, который и создал JavaScript десять лет назад, еще работая на Netscape, назвал четыре самых распространенных совета, полученных им от самых разных людей: «оставьте язык в покое», «пересмотрите его мощно, необратимо», «чуть-чуть подправьте его (90 вариантов “чуть-чуть”)» и «не превращайте это в Java!».&lt;br /&gt;
&lt;br /&gt;
*'''Сделать два разных JavaScript – совсем неплохая идея!'''&lt;br /&gt;
&lt;br /&gt;
Допускаю, но аргументы в пользу унификации еще убедительнее: JavaScript – одно из немногих понятий, однозначно воспринимаемых разными браузерами.&lt;br /&gt;
Да, совместимость несовершенна – например, подружить ''Opera'' с ''Gmail'' удалось не сразу. В остальном же способность JavaScript примирять самые разные браузеры и платформы поразительна.&lt;br /&gt;
&lt;br /&gt;
*'''А если взять да и обновить все разом до JavaScript 2?'''&lt;br /&gt;
&lt;br /&gt;
Надежда есть – по крайней мере, с годами. Понадобилось немало лет, чтобы JavaScript достиг нынешнего уровня, и хотя ''Mozilla'', ''Konqueror'', ''Opera'' и ''Safari'' не заставят себя долго ждать, на адаптацию ''Internet Explorer'' может уйти несколько лет. Тем временем многие сайты будут просто отказываться работать под ним, а пользователи будут испытывать неудобства.&lt;br /&gt;
&lt;br /&gt;
*'''А разве нельзя подготовить одну версию страницы для JavaScript 2, а другую – для версии 1.7?'''&lt;br /&gt;
&lt;br /&gt;
Можно, но ведь разработчику сайта понадобится написать, отладить и поддерживать вдвое больше кода – едва ли это будет способствовать увеличению продуктивности, обещанному JavaScript 2! Но ходят разговоры о создании конвертора с JavaScript 2 на JavaScript 1.7, то есть программирование будет выполняться на JavaScript 2, а эквивалент для версии JavaScript 1.7 сгенерирует компьютер.&lt;br /&gt;
&lt;br /&gt;
*'''Звучит разумно. А если точнее, о каких новых функциях идет речь?'''&lt;br /&gt;
&lt;br /&gt;
Схематично я уже описал основные отличия новой версии, и похоже на то, что все эти нововведения войдут в финальный стандарт. С другой стороны, одна&lt;br /&gt;
из целей – максимально упростить переход на JS2. Может быть, стоит более подробно остановиться на новшествах…&lt;br /&gt;
&lt;br /&gt;
*'''Имеет смысл. Начните с пространств имен — хоть что-то знакомое…'''&lt;br /&gt;
&lt;br /&gt;
Да, да, пространства имен и их близкие друзья-пакеты есть в C++, Java, C# и Perl, и вполне могут однажды возникнуть в PHP. «Пространство имен» в терминологии программистов означает набор использованных ключевых слов. Например, Scriptaculous API предоставляет десятки эффектов и DOM-инструментарий&lt;br /&gt;
для сборки. Если воспользоваться ими, да еще парочкой других API, то скоро проявятся конфликты между различными именами классов и функций, определенных разными API – гляди в оба, чтобы не ошибиться. Пространство имен позволяет сказать: «В этом скрипте под словом Effect я подразумеваю Scriptaculous&lt;br /&gt;
Effect».&lt;br /&gt;
&lt;br /&gt;
Улавливаете? Конечно, пространство имен касается лишь крупных сайтов с множеством разнообразных компонентов. Есть понятия попроще: JavaScript 2 будет&lt;br /&gt;
способен различать объекты, массивы, функции, логические переменные, целые числа, числа с плавающей точкой, десятичные числа, строки, даты, регулярные&lt;br /&gt;
выражения и ошибки. Версия 1.7 втиснула целые числа, числа с плавающей точкой и десятичные числа в упрощенный тип данных “number”, но в JavaScript 2&lt;br /&gt;
все будет иначе.&lt;br /&gt;
&lt;br /&gt;
*'''Хм… А разве десятичное число – это не число с плавающей точкой?'''&lt;br /&gt;
&lt;br /&gt;
Числа с плавающей точкой обладают известной неточностью – например, вы думаете, что имеете дело с числом 0,1, а на самом деле оно 0,99999999 или 0.10000001. А значит, даже простая арифметика может вылиться в проблему. Возьмем маленькую команду: alert((0.1+0.7)*10). Это означает: «сложить 0,1 с 0,7, умножить результат на 10, затем показать это в окне сообщения». Вы ожидаете, что в окне выведется 8, а увидите 7.99999999.&lt;br /&gt;
&lt;br /&gt;
*'''Но… но это же плохо!'''&lt;br /&gt;
&lt;br /&gt;
Во-во, полная фигня.&lt;br /&gt;
&lt;br /&gt;
*'''Э-э… как-то вы уж очень по-простому.'''&lt;br /&gt;
&lt;br /&gt;
Извините – инженерным разговорам свойственна непринужденность. В общем, проблема неточности будет решена введением десятичного типа.&lt;br /&gt;
&lt;br /&gt;
*'''И будет строгая типизация данных?'''&lt;br /&gt;
&lt;br /&gt;
Нет, не совсем. Но программисты получат возможность строго определять некоторые типы данных, а также сообщать, какой тип данных ожидается на&lt;br /&gt;
возврате из функции. Все это похоже на “type hints” в PHP.&lt;br /&gt;
&lt;br /&gt;
*'''Стойте – для меня это уже слишком. Не могли бы вы объяснить в общих чертах?'''&lt;br /&gt;
&lt;br /&gt;
ОК. JavaScript 2 взял итераторы и слайсинг от Python, перегрузку операторов от C++, ключевое слово '''let''' из Basic. Получилось некоторая мешанина, но в итоге JavaScript 2 обещает вобрать в себя лучшие черты других популярных языков программирования.&lt;br /&gt;
&lt;br /&gt;
*'''Звучит так необычно… Не опасно ли внедрять так много нового сразу?'''&lt;br /&gt;
&lt;br /&gt;
Верно. Именно поэтому JavaScript 1.7 (поставляемый с ''Firefox 2.0'') уже обладает многими из заявленных свойств – например, let уже там, итераторы тоже. JavaScript 1.9, выпуск которого планируется совместить с выходом ''Firefox 3.0'', будет обладать еще большим количеством нововведений. После этого переход на JavaScript 2.0 уже не будет потрясением.&lt;br /&gt;
&lt;br /&gt;
*'''Надо полагать. Ой! Кажется… утюг! Я забыл выключить утюг – скорее, дайте мне URL, мне надо бежать!'''&lt;br /&gt;
&lt;br /&gt;
Давать-то пока нечего, JavaScript 2.0 настолько новое понятие, что нет еще ни книг, ни учебников, ни howto и, уж конечно, никаких примеров для загрузки. Сожалею!&lt;br /&gt;
&lt;br /&gt;
:Эх, уже убежал…&lt;/div&gt;</summary>
		<author><name>Belogorie</name></author>	</entry>

	</feed>