Бесплатно скачать Adobe Flash Player
Flash Ripper RSS Readers

Инновационный ECMAScript 4 отвержен, реакционный ECMAScript 3.1 становится главной веткой стандарта следующей версии JavaScript

Право же, я не собирался об этом писать, поскольку вопрос, друзья, пустяковый и не стоит вашего драгоценного времени. Но тут такое дело — Shagrat прямо в комментах обращает внимание на то, что ECMAScript4, на черновом варианте которого построены ActionScript3 и Mozilla Tamarin, не станет будущим JavaScript, а вместо него будущим продолжит оставаться прошлое JavaScript, т.е. ECMAScript3, проапгрейдженный до версии 3.1. Иными словами, JavaScript-разработчикам не видать всех тех плюшек, что были уже опробованы в AS3. В частности, можно забыть это:

- неймспейсы, пакеты и биндинг.
- новый синтаксис и новые семантические конструкции
- классы. Взамен классов будет элегантная штука "Object.freeze()", которая "замораживает" объект. Не будет в JavaScript честных классов, останется их симуляция.
- и вот эти возможности.
- в общем говоря, сохранится существующий стандарт.

Вывод: в развитии JavaScript предпочтение отдано целостности существующих подходов, а не новой функциональности. Многие браузеры попросту не готовы к реализации ECMAScript4 — фактически, есть только Mozilla с готовым движком Tamarin, а разработчикам остальных браузеров пришлось бы приспосабливаться. Для облегчения этого приспособления был создан проект ScreamingMonkey, который уже частично решает эту задачу под IE, но все еще сыроват.

ActionScript продолжит свой путь развития, и в перспективе количество отличий AS от JS может возрасти. А я мечтал, как буду писать в JavaScript и ActionScript, не задумываясь о переключении между ними.

Почему кажется, что все так плохо и когда покажется, что стало лучше?

Не все так плохо. Многое хорошо. В самом худшем варианте ActionScript3 обретает полную свободу в собственных будущих инновациях. Это означает, что разработчики Flash Player, то есть те самые люди, что 10 лет дарили сети новые идеи, анимацию, концепцию и реализацию насыщенных интернет-приложенний, онлайновое, будь оно неладно, видео, продвинутые средства разработки — все, что пришло через Flash Player и затем было перенято как лучшие технологии — эти люди теперь смогут совершить новый скачок в разработке ActionScript 4 (ActionScriptX), поскольку их язык не стал стандартом, следовательно, никакие комитеты им не указ, следовательно, их руки свободны. Это мои мечты о самом худшем варианте. Да, Adobe сделала свою попытку стать чем-то большим. В результате совершения этой попытки могло случиться так, что все полюбят флэш за то, что он дал миру такой чудесный и удобный новый JavaScript. Однако, что-то мне подсказывает, что вероятность этого мала. Могли бы — уже полюбили бы.

А в лучшем варианте, что-то мне подсказывает, что решение W3C относительно будущего ECMAScript4 и JavaScript будет пересмотрено. Не та ныне сеть, чтобы легко согласиться на устаревший стандарт в качестве нового. Хотя ни у кого, в общем-то, и не спрашивают, и вряд ли спросят. Но если разовьется этот, лучший вариант, то Adobe придется с новой силой вкладываться в Tamarin, и в то, чтобы их детище полюбили все, или хотя бы большинство. А это непросто.

А не пересмотрят решение — что ж, не беда. Жили мы без этого раньше, и будем дальше жить, пока стандартизаторы не поймут, как приоритеты нужно выбирать. Пока клиенты будут ходить с заказами к флэшерам на все руки.

В то же время, следует узнать, что это весьма нелегкое решение было принято в процессе слияния двух рабочих групп. Группа ECMAScript3.1 слилась с группой ECMAScript 4, и в процессе слияния получила преимущество во имя стабильности и гармонии. Объединенная группа так и называется — Harmony. Глава Mozilla Foundation Брендан Эйк подробно описал, как все было и почему так нужно. По своему согласен с этим создатель MTASC и haXe Николя Канасье.

Что по этому поводу говорит Adobe

Официальная позиция Adobe разъяснена и звучит так: Adobe за стандарты и стандарты — это в первую очередь способ обеспечения эффективного взаимодействия. Adobe будет продолжать работу в группе ECMAScript и работу над стандартами. В то же время, Adobe не прекратит и работу над инновациями, и всеми Open Source проектами, поддерживаемыми ею сейчас, как инициированными Adobe, так и прочими. Пакеты и пространства имен из языка ActionScript исключаться не будут.

Adobe продолжит расширять границы возможного в сети.

Писал Rost, 15 Август 2008 16:33

Найдены баги:


Право же, я не собирался об этом писать...

И в результате такая большая статья.


Не будет в JavaScript честных классов, останется их симуляция.

Почему это симуляция? Прототипы это много круче для веба. Поглядел бы я на Вас, если бы flash-плеер производился десятком контор, и ни у одной бы не было подавляющего лидерства :)

Alexey - 15 Август 2008 18:05

Рост ну ты блин как всегда умеешь радовать :) Я так надеялся на ECMA 4 ((( нативно выполнять AS в браузере это мегакуль!

Zzloba - 15 Август 2008 18:10

это действительно мудрое решение.
дибилизм ECMA 4, равно как и Action Script 3, очевиден.
меня радует то, что наконец то разработчики это поняли.

index - 16 Август 2008 17:45

До меня не доходит, почему никто не стащит идею у Microsoft Internet Explorer, который подерживает 2 языка, JScript и VBScript, кто придумал что браузер не может пожерживать одновременно JS 1.xx и JS 2.x ?

Nirth - 16 Август 2008 18:22


До меня не доходит, почему никто не стащит идею у Microsoft Internet Explorer, который подерживает 2 языка, JScript и VBScript, кто придумал что браузер не может пожерживать одновременно JS 1.xx и JS 2.x ?

Ну для начала было бы хоть немного разобраться в теме :)
1. JScript и JavaScript - разные языки программирования. JScript намного ближе к AS2 чем JavaScript.
2. В свойстве language тега script можно указать версию javascript'а (и это уже очень давно можно, смотрите третий пример на странице http://htmlbook.ru/html/script.html), вот только толку не много на практике, ибо приходится внутри кода проверять доступность того или иного свойства/метода.

Alexey - 16 Август 2008 19:34

Error #2044: Unhandled securityError:. text=Error #2048: Security sandbox violation: http://bitcast.vimeo.com/vimeo/swf/moogaloop.swf?clip%5Fid=1405511&server=www%2Evimeo%2Ecom&show%5Ftitle=1&show%5Fbyline=1&show%5Fportrait=0&color=ff9933&fullscreen=1 cannot load data from http://www.vimeo.com/moogaloop/load/clip:1405511/embed?ver=4&context=undefined&context_id=undefined.
at com.as3.classes.loader.items::XMLItem()
at com.as3.classes.loader::MassLoader/load()
at com.as3.moogaloop4::Moogaloop/loadXML()
at com.as3.moogaloop4::Moogaloop/onAddedToStage()

canab - 17 Август 2008 16:10

@Alexey
Спасибо, но я знаю, не первый год в веб индустрии =). Я говорил не о конкретных языках, я говорил об идее, почему бы не добавить языки в браузеры.

Nirth - 17 Август 2008 18:08

Nirth

Ну тут и так понятно - веб-разработчики не будут использовать новые языки, так как их поддерживают не все браузеры.
Разработчики (некоторых) браузеров не будут добавлять поддержку новых языков, так как их всё равно не используют веб-разработчики.

Порочный круг.

Dan - 18 Август 2008 11:18

Неужели настало время когда WEB стал самодостаточной средой и всякие инновации только ему мешают?
Как быстро WEB достиг насыщения !!! Стагнация господа,однако !

AndM - 18 Август 2008 12:14

вот именно, что "всякие".

2AndM - 18 Август 2008 23:36

JS взорвал веб еще лет 10 назад. Произошло это в острой необходимости сделать страницы хоть сколько-нибудь интерактивными, расширить "узость" клиента.

Сейчас по сути нет такой яркой потребности, которую бы не удовлетворяли технические решения сегодняшнего дня. Перед вебом стоит задача более концептуальная - нужен качественный сдвиг, только никто не понимает до конца в какую сторону. Веб перегружен мусором, и новые языки сделают производство мусора еще более обильным, нафига это надо?

Может, это и хорошо, что тормознули новый стандарт. Часто бывает, что прогрессивные вещи опережают потребности и гибнут зазря. Или если не гибнут, то используются совсем в иных целях, чем предполагали разработчики. Вообщем, мораль - дорого яичко к христову дню, как говорила моя бабушка :)

flaMaster - 19 Август 2008 4:30

Всё-таки кое в чём должен согласится с index'ом по поводу AS3 и ECMA 4.

При всех своих плюсах, есть и ряд недостатков. Один из них - уменьшение стабильности.
На AS1/2 и ECMA3 даже кривой код зачастую продолжает работать, работать и работать.
Например, что-нибудь типа
obj.field.doSomething()
не вызовет особых проблем, даже если obj == null.

В AS3 же вывалиться exception даже если obj.field == null и остановится выполнение всего остального скрипта, а это куда более заметный конечному пользователю баг.

Dan - 19 Август 2008 21:35

2Dan
ОК ... :)

index - 20 Август 2008 23:14

@index
А в чем дебилизм ECMA 4, не считая кучи синтаксиса в котором куча семантического мусора a la var, function и тд. Я правда не отказался бы от __resolve еще.

@Dan
Эксепшены юзери без дебаг плеера не видят, и потом они легко обдятся. Бывают моменты когда они мешают, но бывают когда из за них легче найти ошибку, плюс тестеры могут слать стэк трейсы, что заметно облегчает девелоперам их исправление, стэк трейс намного лучше описания – нажмите на кнопку А потом Б потос С и потом заметите там фигню.

Nirth - 21 Август 2008 7:10

Да я прекрасно понимаю, какая на самом деле польза от эксепшеном.
Но иногда от них вред.

Бывают такие ошибки, которые и не ошибки совсем, а просто мелкие недочёты.
Т.е. на AS2 можно было бы и не искать, а на AS3 искать порой приходится.

Допустим, есть у нас что-то типа такого.


for (var i:int=0; i    items[i].init();
}
startApplication();

И по каким-то причинам один из элементов массива у нас оказался null. Причины могут быть разные: удалили элемент, или брали из внешнего источника и этот элемент был пропущен, или генерировали на основе XML файла и пихали в массив по индексу всятому из атрибута id, и в этих самых id была не очень последовательная нумерация. Вобщем, причины разные.

И возможно, что отсутствие одного элемента само по себе не является критической ошибкой. Ну нет и нет - главное чтобы остальные работали.

В AS2 у нас сработает нормально: элемент null будет спокойно пропущен. Пусть это не красиво с точки зрения чистоты кода, но зато работает.

В AS3 произойдёт эксепшн, прервёт выполнение, startApplication() не будет вызван - в результате юзер (тестер, заказчик, продюсер и прочие) видит чёрный экран. И теперь нам нужно исправлять эту маленькую кривость, которая превратилась в критическую ошибку: вставлять if или try.

Хотя, разумеется, иногда ситуация бывает обратная: когда один эксепшен (и сопутсвующий стек-трейс) позволяет сразу локализовать действительно серьёзную ошибку, которую в AS2 пришлось бы долго и упорно выискивать.

Dan - 21 Август 2008 18:47

>И по каким-то причинам один из элементов массива у нас оказался nul
if...else вам в руки=)

Nirth - 21 Август 2008 19:52

Так я об этом написал в конце: или if, или try.

И ещё раз повторю свою мысль: в AS2 отсутствие проверки на null - небольшой косячок, который зачастую никак не сказывается на работоспособности.
В AS3 отсутствие проверки на null может привести к падению всего приложения.

А в вебе, с его плюрализмом браузеров, это очень существенно.

Dan - 21 Август 2008 22:11

Небольшая добавочка...

Простая конструкция типа (пардон, если где-то накосячил, я JS уже хорошенько подзабыл)
alert(window.document.all.images[3].style.display)

может превратиться во что-то такое:

if (window && window.document && window.document.all && window.document.all.images && window.document.all.images[3] && window.document.all.images[3].style) {
   alert(window.document.all.images[3].style.display);
}

Либо в такое:

if (window && (a=window.document) && (b=a.all) && (c=b.images) && (d=c[3]) && (e=d.style)) {
   alert(e.display);
}

Либо (самый простой вариант, пожалуй), в такое:

try {
   alert(window.document.all.images[3].style.display);
} catch (e:Error) {
   // do nothing
}

Но в любом случае - множество лишних строчек, которые очень легко забыть (или просто лень) написать.

Dan - 21 Август 2008 22:21

>Но в любом случае - множество лишних строчек, которые очень легко забыть (или просто лень) написать.
Если я вам скажу что это исправляется отказом от динамических данных в пользу "строгих" классов, вы скажете что вам лень их писать, и будете по своему правы. Так что я скажу – да да я вас понял, но мне было интересно мнение index'a =)

Nirth - 21 Август 2008 22:56

Переменная "строгого" типа тоже может быть null. Все выше приведённые примеры написаны именно с учётом того, что это могут быть "строгие" классы. В том числе пример с JS - это пример того, как бы это могло выглядеть на ECMA4.

Кроме того, само использование строгих классов и run-time проверки типов может порой вызывать нежелательные эксепшены (хотя AS2 бы схавал и не подавился).

Короче, весь мой флуд одной фразой: в AS3 стабильность принесена в жертву ради простоты отладки.

А мнение index'а по поводу AS3 можно почитать в коментах в топике-предтече: Встречайте ECMAScript4. Обзор нового стандарта сетевого языка
Кстати, там он обещал супер-пупер компилятор. Интересно, в какой он стадии, всё-таки 9 месяцев уже прошло.

Dan - 21 Август 2008 23:39

>А мнение index'а по поводу AS3 можно почитать в коментах в топике-предтече:
Спасибо.

>Короче, весь мой флуд одной фразой: в AS3 стабильность принесена в жертву ради простоты отладки.
Да да, я вас понял.

Nirth - 22 Август 2008 19:21

Одна из лучших дискуссий на риппере. Спасибо - получил и пользу, и удовольствие!

Рост - 28 Август 2008 18:17



Это запись из категории 'Tamarin'. 10 еще cвежих:

Архивы по категориям:

3D-18, Adobe AIR-38, Animation-1, Apache Ant-1, Architecture-1, ARP-1, Art-26, Articles-26, AS3-57, Books-9, Business-3, Cairngorm-3, CI-1, Classes-10, Coding-31, Community-118, Components-19, Contests-30, conventions-1, Cool-Job-10, Debug-21, Design-28, Development-84, ecology-4, EMO-2, Events-17, Extensions-2, FAQ-9, FDS-1, Flash and html-8, Flash Player-38, Flash Updates-12, flash-on-devices-1, Flash-scene-1, flash10-4, FlashLite-2, Flex-49, Flex 2-80, flex4-3, flexcamp-2, Flickr-1, FMS-2, FPUG-61, frameworks-1, Games-20, Good Job!-44, HaXe-16, Health-2, Humor-11, Ideas-14, IV-1, JavaScript-2, Job-30, JSFL-8, Links-2, Linux-3, Maps-1, Math-8, Money-16, music-1, MXML-1, Open Source-16, Optimization-4, parenting-3, Patterns-2, Personalities-27, Philosophy-4, Politics-1, posters-1, Preloading-3, Productivity-10, PureMVC-11, Pv3d-1, Rafpug-5, Red5-3, Remoting-11, Resources-21, Ruby-6, SAAS-1, Security-11, SEO-9, Silverlight-7, Sound-3, sport-4, Strategy-122, Tamarin-2, Tools-113, Training-3, Trash-8, URAFPUG-14, Urgent-1, Usability-6, Video-6, VoIP-7, Wallop-1, Wishlist-3, XML-1, Архив всех записей (большой)

За последние месяцы:

Ноя 2008: Ноябрьская встреча RAFPUG 12 — для креативных, В продолжение темы флэш-блогов, весь Ноя

Окт 2008: Ура — вторая лицензия Alternativa3D уезжает в Киев!, Влещь на глагне III IIIIIII?, весь Окт

Сен 2008: Встречайте Open Source Flash Media Server — Mammoth, Срочно нужен толковый Flex-разработчик в Харькове (+Java), весь Сен

Авг 2008: Flex Gangsta Rap Video WTF Bro?, 27 сентября — встреча UAFPUG во Львове и плюшки от Adobe, весь Авг

Июл 2008: Тенденции среди работодателей: Adobe Flex, Adobe AIR, Silverlight, Спорт спасет красоту, которая спасет мир!, весь Июл

Июн 2008: Попытка предварительных выводов о встрече аниматоров, Онлайн трансляция встречи аниматоров в Донецке, весь Июн





Примечания:
Статус документа
: в процессе
   2002-2007 Производство: Рост Прибыли · О проекте · Подписка на новости (RSS)