![]() |
Терминология компиляторов
Последнее время начал путаться в терминологии компиляторов, возможно от того, что лезу вглубь =)
Давайте я начну, а вы поправите, так ли я всё понимаю, да и пометка новичкам останется - поэтому пишу все компиляторы, что знаю или слышал. fcsh - Adobe Flex Compiler SHell (fcsh), компилятор используемый во флексе. mxml - язык, основанный на xml для флексового фреймворка (ну, и не только) mxmlc - то же самое, что и fcsh, это название исполняемого файла компилятора флекса. UPD: в папке FlexSDK нашел mxmlc.jar и fcsh.jar. Какой из них зачем? Ещё нашел там папку ant, что-то я совсем потерялся. ant - Apache Ant, как пишут создатели это Apache Ant is a Java-based build tool. In theory, it is kind of like make, without make's wrinkles. (Apache Ant это Java-основанная утилита. В теории, это что то вроде создателя (создателя? Компилятор имеется ввиду?) без создательского геммороя). По сути, это универсальная-компиляционная-машина, которая скомпилирует всё что угодно под любой язык, лишь бы были либы для компиляции под этот язык, верно? mtask - тоже не очень ясный момент. Вроде при компиляции mxmlc при синтаксических ошибках в оутпуте пишут это в скобах - то есть есть резон, что это тоже флексовый компилятор. UPD: http://www.mtasc.org/ Соответственно, какая разница между ним и mxmlc? Flash IDE - Flash 8, Flash CS3, Flash CS4, etc. Использует какой-то свой ужасно медленный компилятор (быть может mxmlc без кеширования? Но зачем...) И какие ещё есть флешевые компиляторы? |
Цитата:
теперешний его приемник haXe - но со своим языком и не многими используется) Цитата:
|
Цитата:
Ну, haXe это уже транслятор по сути, пусть и сразу в байткод. В смысле того, что haXe`ом чистый AS3 не скомпилируешь. |
make - это команда unix-подобных систем, которая запускает makefile, что есть нечто вроде bat-скрипта, которая собирает из исходников программу (компилирует)(в unix-ах программы поставляются пакетами - уже исполняемыми файлами под конкретную unix-вариацию, или исходниками, которые можно скомпилировать практически под любой unix).
|
А, понятно. Ну, остальное вроде в отношении ant`а верно.
|
ant вообще-то не более чем движок макросов. Компилировать он ничего не умеет.
|
Flash IDE использует практически тот же ASC (ActionScript Compiler), что и в Flex SDK. Единственная разница в оболочке (урезаный команд-лайн интерфейс + очевидно какие-то добавки для работы с линкером). Медленный это скорее всего линкер и особенно транскодер флешевой графики, ну и видео транскодер, я тоже так думаю не быстрый :)
FCSH (или как утверждает автор FCSh) - это шелл (приложение которое запускает и следит за выполнением другого приложения). FCSH может запускать MXMLC, COMPC и ASC. Вобщем, грубо говоря, вся его задача сводится к кешированию результатов предыдущей компиляции. А, есть еще флешевый компилятор который написали SWFTools http://wiki.swftools.org/index.php/As3compile Чесно говоря, ни разу не пользовался, надо будет как-нибудь попробовать. И есть еще куча мелких проектов которые умеют компилировать каки-нибудь части AS3, но до полноценных компиляторов не дотягивают. Есть у hurlant компилятор написаный на AS3, есть SWFMill и им подобные которые чуть-чуть чего-то умеют. Есть на HaXe библиотечка format.abc - тоже, по сути заготовка к компилятору. Во времена AS2 был еще FLASC компилятор, но как-то не довелось им воспользоваться, ну и была куча програм в той или иной степени умеющих генерить SWF, восновном графику. А еще в AS2 была хорошая штука FLASM - диссасемблер SWF ну и собирать обратно тоже мог, но только из своих файлов. С его помощью некоторые ухитрялись немного подоптимизировать циклы и еще какие-то вещи, но, восновном, ценность его была в том, что можно было посмотреть, как и что работает. |
Ага, понятно.. Спасибо большое.
Как то ещё вопрос появился, тоже по компиляторам: а что кеширует mxmlc? У меня есть мувиклип с 120 кадрами, в каждом кадре битмапа+мувиклип. Собираю это в swc и компилю потом mxmlc - в общем, время компиляции просто неимоверно долгое, даже при двойной компиляции (когда по идее должно вообще вылететь nothing changed -> skip почти сразу, а нет, ждем минуты 2 и только после). |
Зависит от версии, и сколько хип / стек памятит есть у JVM, может быть так, что флешка получается очень большая и поэтому не кешируется, а может там флекс сам чего-то дописывает, он тоже любит иногда, особенно при эмбеде других SWF дописать, типа имя классу по-новой сгенерить или еще что-нибудь в том же духе. Я бы в первую очередь попробовал увеличхить heap memory компилятору, но если не сработает - скорее всего просто баг.
http://www.caucho.com/resin-3.0/perf...jvm-tuning.xtp |
Было минимум 386 мб, без верхнего предела. Поставил вот так:
Код AS3:
Буду качать сейчас последний сдк флексовый. Кстати, флешка там получается мелкой, на выходе мегабайт всего. |
| Часовой пояс GMT +4, время: 14:57. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.