Я все еще скептически отношусь к производительности таких приложений.
Создание производительных флэш приложений и игр на десктопе само по себе непростая задача, а тут смартфоны и планшеты…
Откуда столько эмоций? Actionscript — это обычный ECMAscript.
А ECMAscript — это довольно динамический язык, написать полноценный компилятор которого без грязных трюков вроде встраивания интерпретатора в исполняемый файл просто невозможно.
Я понимаю к чему вы клоните. Но AS3 — это уже не Javascript, и не такой динамический. Т.е. есть нормальные типы, которые можно явно указать. К тому же зачем вам интерпретатор в динамическом языке? Хэш-массивы без интерпретатора не работают уже что ли?
Не используйте слово «невозможно» не к месту.
Или например классические замыкания, которые, я так понимаю, в AS3 есть, по-честному не скомпилировать. Можно завести таблицу с текущей областью видимости и т.п., но это уже почти ничем не отличается от встраивания интерпретатора в бинарник.
В C++ не настоящие замыкания, они, в частности, не подхватывают область видимости. Именно по описанным выше причинам.
Встроенный компилятор часто ещё медленнее, чем встроенный интерпретатор (особенно для небольших файлов). И встраивание компилятора в, якобы, откомпилированный код — это как раз грязный трюк, о котором я говорил.
Видимо, в отличии от вас, я их в Go пробовал. Это не замыкание, а издевательство. В описании (ещё не вышедшего, кстати) C++0x с ними все тоже не так уж и прозрачно, но это попытки не стать чересчур медленным.
Но в принципе соглашусь, в том или ином виде с потерей производительности сделать замыкание компилируемым можно.
А компилировать код «налету», обычно нет необходимости. Это может быть нужно только, если вам нужна скрипт машина для выполнения каких-то внешних действий. В остальных случаях использование этой возможности допустимо, но является скорее следствием кривого дизайна.
Ahead of Time (AOT) — раз нет виртуальной машины, то должно работать быстрее, нежели с ней (на одном железе), хотя это и не отменяет того момента, что может работать всеравно сравнительно медленно.
Хм. Прошу прощения, я не дочитал до конца, а среагировал на первое предложение.
Интерпретатор, все-таки, интерпретирует. Компилятор — компилирует. Как правило компилятор быстрее виртуальной машины, виртуальная машина, как правило, быстрее интерпретатора.
Встраивания интерпретатора в исполняемый файл неэквивалентно компиляции.
Я как раз и говорил, что AS — интерпретируемый ЯП, поэтому скомпилировать «по-честному» его нельзя.
Нет, это не интерпретируемый язык, по крайней мере частично JIT-компилируемый.
И скомпилировать «по-честному» его можно, что Adobe и подтверждает, сделав LLVM-компилятор.
Возможность JIT-компиляции никак не коррелирует с тем, является ли язык компилируемым или интерпретируемым. Посмотрите на Parrot, например.
Аббревиатура LLVM расшифровывается, как low level virtual machine, как я писал выше, скомпилировать для виртуальной машины можно и интерпретируемый язык.
А вот, о каком native ARM code идет речь, нужно разбираться. У меня есть подозрения, что там что-то не чисто. Хочется верить, что у них все получилось, но чудес не бывает.
Либо они взяли небольшое подмножество языка, либо помимо компиляции там есть ещё что-то.
Ещё как имеет. Для LLVM есть фронтенды для интерпретируемых Python и Ruby. То, что ещё один интерпретируемый язык научились преобразовывать в промежуточное представление LLVM ровным счетом ничего не доказывает.
Вы точно знаете, что делает LLVM? И о какой виртуальной машине в нем идет речь?
Если есть фронтенды для Python и Ruby, то это еще раз доказывает, что скомпилировать динамический язык можно.
Раз вам лень гуглить, то объясню: LLVM — это виртуальный ПРОЦЕССОР. Со своим набором команд, регистрами и прочим. Для него существуют бэкенды, которые код LLVM-процессора переводят в НАТИВНЫЙ код.
Т.о. получается, что на входе имеем исходник написанный на динамическом языке, а на выходе — нативный код для процессора. Почему это ничего не доказывает, если решает поставленную задачу?
Вы отрицаете существование интерпретируемых языков программирования? :) Смело.
P.S. А вот про то, что начиная с версии AS3 в нем нет eval; именно по причине того, что его сделали компилируемым (уйдя от ECMAscript) вы так и не сказали, наверное потому что не знали. А ведь с этого и нужно было начинать. И по-меньше эмоций, прошу Вас. У нас все-таки техническая дискуссия.
Я вам сразу сказал, что это не JS, что вы проигрнорировали. От ECMAscript он никуда не ушел, это просто другая ревизия. Которой увы не будет для JS.
Про eval я не сказал, т.к. перешли на обсуждение динамических языков вообще.
Вы отрицаете существование интерпретируемых языков программирования? :) Смело.
Ткните пальцем где я это сказал? Не перевирайте мои слова.
С эмоциями у меня все впорядке, просто текст так выглядит (выделять текст БОЛЬШИМИ символами проще, нежели использовать тэги), а вам бы посоветовал быть менее категоричным в областях, с которыми вы знакомы поверхностно.
Ну давайте будем откровенными, ни я, ни вы никогда не писали код на LLVM IR. Подозреваю, что даже не использовали замыкания в C++. Кое-где у меня каша в голове, кое-где — у вас. Это нормально.
Так что мы оба с вами в данной ситуации категоричные шарлатаны. Разница в том, что насчет компилируемости AS3 вы правы, а я — был нет.
Что касается больших букв, нетикет не рекомендует их использовать именно по причине схожести с криком. Да я и не про большие буквы говорил, а про переход на личности.
Я предлагаю, раз мы технический аспект обсудили и пришли к единому мнению, беседу прекращать, чтобы не флудить.
ну вопрос был не в быстрее, просто я подумал что вариант с добавление JIT-компилятора в код при наличии в нем eval вас не удовлетворит.
Ну если оставаться on-topic то eval в as3 нет, и as3 это не es3, а es4, который оказался слишком не совместимым с es3 и в вебе в качестве js2 будет уже es5
Вы не различаете интерпретатор и JIT, а они по производительности сильно отличаются. AS3 исполняется и на интерпретаторе (в конструкторах классов) и на JIT (в остальных случаях). Поэтому и не рекомендуется делать сложные вычисления в конструкторе.
С одной стороны это конечно хорошо для flash разработчиков, кем я сам и являюсь. Но как мне кажется — качество программ в appStore может резко ухудшиться учитывая кол-во flash разработчиков и кривизну рук многих разработчиков.
Ну и до этой новости была большая мотивация в изучении cocoa + objC, а сейчас думаю: "… а может действительно взять и написать на AS и не париться...".
Очень странное решение. Во-первых оно идет в разрез с предыдущим, то есть Джобс изменил собственное мнение(!sic). Во-вторых производительность и качество flash, это что то с чем то. На убунте chrome вылетает исключительно из-за flash'a, который жрет по 20-30% core 2 duo 2.4 Ghz при просмотре обычного видео. В-третьих неумелые флэш-девелоперы испоганят appstore и он станет новым Android Market'ом, что весьма прискорбно.
Ничего странного, когда у тебя на хвосте сидит антимонопольный коммитет, то лучше разрешить дело до суда, иначе неизвестно что суд тебе _прикажет_ сделать.
Знаете, flash, жрущий 20-30% — это совсем неудивительно, если обратить внимание, что встроенный гномовый System Monitor отжирает в простое 16% cpu на свежепоставленной убунте. пруф: habreffect.ru/files/451/ccd5a41fa/Screenshot.png
System Monitor еще и инфу по процессам неверную часто показывает. сам удивляюсь как такую софтину допустили в основу дистрибутива. Лично я пользуюсь консольным top — может не так удобно, зато точно и ресурсы не жрет.
Заголовок «Ответ Adobe на новые правила Apple» заставляет в первую очередь задуматься об ответе на запрет Adobe Flash в браузерах, а никак не в AppStore. Вы б уточнили, что ли.
Я осмелюсь подумать, что это решение Яббла вместе с обнародованием правил — забота о девелоперах.
Мне кажется в Яббле понимают, что именно сторонние приложения являются двигателем продажи айос девайсов. И, возможно, реагируют на некие тенденции заметные им сверху. В любом случае радует, что платформа развивается.
А мне кажется, что Apple сделала хитрый ход: с одной стороны она дала то, чего все сторонние разработчики так хотели («Cлава Apple!»), с другой – она даёт пользователям почувствовать, что лучше выглядит – аналогично с Opera Mini – все очень ждали увидеть её в AppStore, и Apple пропустила в Эппстор, все были рады такому событию, большое количество людей скачало альтернативный браузер – и буквально через день появились нелестные отзывы от придирчивых пользователей – главная их претензия состояла в том, что Opera Mini при всех своих плюсах чужеродна для iOS. Это называется, «почувствуй разницу».
В одном я уверен точно – просто так из-за неожиданного порыва милосердия Apple никогда такие решения принимать не будет – обязательно должна быть какая-то их цель.
Я имел в виду, что, Яббл видит тенденции, которые не видны нам, типа оттока программистов или присутствия контента на остальных платформах приотсутствии ни айос и.т.д. И, понимая, что контент является одним из если не важнейшим фактором популярности, пытается привлечь программистов добавляя им тулзов и объясняя правила.
Да бросьте, во-первых Вы не знаете точные цифры, чтобы говорить про какой-то там отток, во-вторых, Apple пошла бы «навстречу» уж точно не из-за этого – Джобс не из таких людей.
> И, понимая, что контент является одним из если не важнейшим фактором популярности
Извините, но что такого нового принесут флэш-приложения? Вопрос о запрете флэш-приложений был интересен прежде всего флэш-разработчикам, обычным пользователям по барабану, на чем написаны приложения, им важен сам результат – готовый продукт. А Вы так говорите о флэше, как будто это манна небесная.
>пытается привлечь программистов
Критическая масса набрана, и популярность iOS стала достаточной, чтобы всё теперь развивалось по инерции. Так что «пытаться» не нужно – нет никакой необходимости. От Apple сейчас требуются только наведение порядка в AppStore и более прозрачные правила для разработчиков.
1) Простите, а вы знаете цифры? А вот яббл цифры знает. Например цифры сабмитов в день. Я привёл отток просто как пример чего-то известного Ябблу, но, пока, не известного нам.
2) Ну например выходит новая игра на флэше (я сам в них не играю по причине отсутствия времени, но нслышан). Так вот эта новая игра в 2 клика портируется на Андроид. И Вася с Дезаером приходит к Пете с айФоном и говорит — глянь чё. До сих пор было в основном наоборот — пользователи айФона показывали круть. Так вот Петя может написать письмо Джобсу и, когда таких писем станет много, Яббл может поменять своё отношение.
3) Всё когда нибудь заканчивается. Возможно что всё не так уж хорошо в Датском королевстве. Кстати попробуйте построить график количества приложений в аппсторе, может это наведёт вас на какието мысли.
ЗЫ я на часто встречал такуя смену позиция Яббла за такой короткий срок. Если у вас есть хорошие причины для этого (особенно в контексте выхода правил) назовите их. И учтите, что я просто выдвигаю версию, а не глаголю истину. Выдвигате свою.
ЗЗЫ производители движков и фрейморков типа юнити — тоже производители
Пробовал создать программку на Flash CS5 под свой iPod — один единственный спрайт-кнопка, при нажатии должен вращаться. В результате, экспорт в .ipa длился минуты три, полученный файл был 3 мб размером и в результате это еще и тормозит — вращение не плавное. Может быть, разрабатывать программы под iOS на флеше и проще, но вот получаемый результат на данный момент оставляет желать много, много лучшего.
Если кто-то хочет попробовать сам, вот моя пошаговая инструкция.
Да дело то не в том, знаешь objC или нет, дело в оптимизации разработки для нескольких платформ.
Одно дело сделал игру для Вконтакта, Конгрегейта и Андроида и потом полностью портировал её на ЙФон, другое дело просто перекомпилировал, и, может быть, добавил пару классов-адаптеров.
Ответ Adobe на новые правила Apple