Pull to refresh

Comments 75

Я все еще скептически отношусь к производительности таких приложений.
Создание производительных флэш приложений и игр на десктопе само по себе непростая задача, а тут смартфоны и планшеты…
Если там настоящая компиляция, а не встроенная Virtual Machine, то задача не такая уж и сложная.
Actionscript не особенно пригоден для компиляции.
Вы вообще хоть раз Actionscript видели? Судя повсему нет.
И как ЯП может быть «пригоден» или «непригоден» для компиляции?
Откуда столько эмоций? Actionscript — это обычный ECMAscript.

А ECMAscript — это довольно динамический язык, написать полноценный компилятор которого без грязных трюков вроде встраивания интерпретатора в исполняемый файл просто невозможно.
Я понимаю к чему вы клоните. Но AS3 — это уже не Javascript, и не такой динамический. Т.е. есть нормальные типы, которые можно явно указать. К тому же зачем вам интерпретатор в динамическом языке? Хэш-массивы без интерпретатора не работают уже что ли?
Не используйте слово «невозможно» не к месту.
habrahabr.ru/blogs/os_x/103986/#comment_3238309

Или например классические замыкания, которые, я так понимаю, в AS3 есть, по-честному не скомпилировать. Можно завести таблицу с текущей областью видимости и т.п., но это уже почти ничем не отличается от встраивания интерпретатора в бинарник.
Странно, разработчики C++0x думают иначе и встраивают/рассматривают замыкания, чтобы встроить в язык, компилирующийся в нативный код.

eval — это ни что иное как встроенный компилятор, не вижу проблемы в этом.
В C++ не настоящие замыкания, они, в частности, не подхватывают область видимости. Именно по описанным выше причинам.

Встроенный компилятор часто ещё медленнее, чем встроенный интерпретатор (особенно для небольших файлов). И встраивание компилятора в, якобы, откомпилированный код — это как раз грязный трюк, о котором я говорил.
Так вот, в C++0x будут именно настоящие замыкания.

Кстати, в Go, вроде тоже есть замыкания. Да и не вижу в этом никакой проблемы в плане реализации.
Видимо, в отличии от вас, я их в Go пробовал. Это не замыкание, а издевательство. В описании (ещё не вышедшего, кстати) C++0x с ними все тоже не так уж и прозрачно, но это попытки не стать чересчур медленным.

Но в принципе соглашусь, в том или ином виде с потерей производительности сделать замыкание компилируемым можно.
Компилятор может просто определять используемые локальные переменные и передавать их через параметры — это первое что в голову приходит.
А компилировать код «налету», обычно нет необходимости. Это может быть нужно только, если вам нужна скрипт машина для выполнения каких-то внешних действий. В остальных случаях использование этой возможности допустимо, но является скорее следствием кривого дизайна.
«Классические замыкания» уже лет тридцать прекрасно компилируются. Не порите чушь, ей больно, а нам смешно.
Ага. А мужики из команды сишарпа то и не знают :-)
UFO landed and left these words here
Ahead of Time (AOT) — раз нет виртуальной машины, то должно работать быстрее, нежели с ней (на одном железе), хотя это и не отменяет того момента, что может работать всеравно сравнительно медленно.
UFO landed and left these words here
Ок. Скомпилируйте мне код

eval(get_url('http://website/code'));
UFO landed and left these words here
Хм. Прошу прощения, я не дочитал до конца, а среагировал на первое предложение.

Интерпретатор, все-таки, интерпретирует. Компилятор — компилирует. Как правило компилятор быстрее виртуальной машины, виртуальная машина, как правило, быстрее интерпретатора.

Встраивания интерпретатора в исполняемый файл неэквивалентно компиляции.

Я как раз и говорил, что AS — интерпретируемый ЯП, поэтому скомпилировать «по-честному» его нельзя.
Нет, это не интерпретируемый язык, по крайней мере частично JIT-компилируемый.
И скомпилировать «по-честному» его можно, что Adobe и подтверждает, сделав LLVM-компилятор.
Возможность JIT-компиляции никак не коррелирует с тем, является ли язык компилируемым или интерпретируемым. Посмотрите на Parrot, например.

Аббревиатура LLVM расшифровывается, как low level virtual machine, как я писал выше, скомпилировать для виртуальной машины можно и интерпретируемый язык.

А вот, о каком native ARM code идет речь, нужно разбираться. У меня есть подозрения, что там что-то не чисто. Хочется верить, что у них все получилось, но чудес не бывает.

Либо они взяли небольшое подмножество языка, либо помимо компиляции там есть ещё что-то.
LLVM никакого отношения к виртуальным машинам не имеет — погуглите, прежде чем делать такие выводы из названия технологии. LLVM дает нативный код.
*К обсуждаемым в данном треде виртуальным машинам.
Ещё как имеет. Для 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 (в остальных случаях). Поэтому и не рекомендуется делать сложные вычисления в конструкторе.
dmbreaker имел ввиду компиляцию в машинный код, а не в байткод
UFO landed and left these words here
С одной стороны это конечно хорошо для flash разработчиков, кем я сам и являюсь. Но как мне кажется — качество программ в appStore может резко ухудшиться учитывая кол-во flash разработчиков и кривизну рук многих разработчиков.

Ну и до этой новости была большая мотивация в изучении cocoa + objC, а сейчас думаю: "… а может действительно взять и написать на AS и не париться...".
в след за допуском third-party tools в магазин, опубликовали правила попадания в appStore, которые будут зарубать всякий шлак на корню.
Качество и так не блещет… Среди гигантских объёмов приложений трудно найти действительно хорошие.
Но, действительно, может ухудшиться ещё сильней.
UFO landed and left these words here
Лично я думаю, что изменятся только сроки рассмотрения программ в AppStore и вряд ли в сторону сокращения.
Очень странное решение. Во-первых оно идет в разрез с предыдущим, то есть Джобс изменил собственное мнение(!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 — может не так удобно, зато точно и ресурсы не жрет.
я был бы счастлив, если бы флэш жрал 20-30%
у меня он жрет 60-80%
Буду рад если компании найдут общий язык.
UFO landed and left these words here
Попытка увеличения аудитории app-разработчиков в свете скорого глобального релиза windows-phone и продолжения роста android-устройтв?
Заголовок «Ответ 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 на флеше и проще, но вот получаемый результат на данный момент оставляет желать много, много лучшего.

Если кто-то хочет попробовать сам, вот моя пошаговая инструкция.
UFO landed and left these words here
Судя по всему «наиполнейшая»…
две компании, названия на а, количество букв в названиях одинаково
как читаешь про них новости, вечно путаешь чей флеш, чей айфон
и кто чей мозг ебет
Подумаешь, смягчили условия. Нам не нужны их подачки, мы уже прокачали скилы в Объектив Си.
Да дело то не в том, знаешь objC или нет, дело в оптимизации разработки для нескольких платформ.
Одно дело сделал игру для Вконтакта, Конгрегейта и Андроида и потом полностью портировал её на ЙФон, другое дело просто перекомпилировал, и, может быть, добавил пару классов-адаптеров.
Sign up to leave a comment.

Articles