Просмотр полной версии : Терминология компиляторов
Psycho Tiger
14.04.2010, 20:39
Последнее время начал путаться в терминологии компиляторов, возможно от того, что лезу вглубь =)
Давайте я начну, а вы поправите, так ли я всё понимаю, да и пометка новичкам останется - поэтому пишу все компиляторы, что знаю или слышал.
fcsh - Adobe Flex Compiler SHell (fcsh), компилятор используемый во флексе.
mxml - язык, основанный на xml для флексового фреймворка (ну, и не только)
mxmlc - то же самое, что и fcsh, это название исполняемого файла компилятора флекса. UPD: в папке FlexSDK нашел mxmlc.jar и fcsh.jar. Какой из них зачем? Ещё нашел там папку ant, что-то я совсем потерялся.
ant - Apache Ant (http://ant.apache.org/), как пишут создатели это 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 без кеширования? Но зачем...)
И какие ещё есть флешевые компиляторы?
mtask - тоже не очень ясный момент. Вроде при компиляции mxmlc при синтаксических ошибках в оутпуте пишут это в скобах - то есть есть резон, что это тоже флексовый компилятор. UPD:
Может mtasс? (старый, очень хороший, быстрый, опенсорсный компилятор, но только для AS2 - сейчас про него можно смело забыть,
теперешний его приемник haXe - но со своим языком и не многими используется)
Использует какой-то свой ужасно медленный компилятор (быть может mxmlc без кеширования? Но зачем...)
Просто свой медленный, проприетарный компилятор :)
Psycho Tiger
14.04.2010, 23:02
Может mtasс? (старый, очень хороший, быстрый, опенсорсный компилятор, но только для AS2 - сейчас про него можно смело забыть,
теперешний его приемник haXe - но со своим языком и не многими используется)
Да, опечатался :(
Ну, haXe это уже транслятор по сути, пусть и сразу в байткод. В смысле того, что haXe`ом чистый AS3 не скомпилируешь.
iflamberg
15.04.2010, 01:15
make - это команда unix-подобных систем, которая запускает makefile, что есть нечто вроде bat-скрипта, которая собирает из исходников программу (компилирует)(в unix-ах программы поставляются пакетами - уже исполняемыми файлами под конкретную unix-вариацию, или исходниками, которые можно скомпилировать практически под любой unix).
Psycho Tiger
15.04.2010, 18:13
А, понятно. Ну, остальное вроде в отношении 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 ну и собирать обратно тоже мог, но только из своих файлов. С его помощью некоторые ухитрялись немного подоптимизировать циклы и еще какие-то вещи, но, восновном, ценность его была в том, что можно было посмотреть, как и что работает.
Psycho Tiger
15.04.2010, 21:12
Ага, понятно.. Спасибо большое.
Как то ещё вопрос появился, тоже по компиляторам: а что кеширует mxmlc? У меня есть мувиклип с 120 кадрами, в каждом кадре битмапа+мувиклип. Собираю это в swc и компилю потом mxmlc - в общем, время компиляции просто неимоверно долгое, даже при двойной компиляции (когда по идее должно вообще вылететь nothing changed -> skip почти сразу, а нет, ждем минуты 2 и только после).
Зависит от версии, и сколько хип / стек памятит есть у JVM, может быть так, что флешка получается очень большая и поэтому не кешируется, а может там флекс сам чего-то дописывает, он тоже любит иногда, особенно при эмбеде других SWF дописать, типа имя классу по-новой сгенерить или еще что-нибудь в том же духе. Я бы в первую очередь попробовал увеличхить heap memory компилятору, но если не сработает - скорее всего просто баг.
http://www.caucho.com/resin-3.0/performance/jvm-tuning.xtp
Psycho Tiger
15.04.2010, 21:56
Было минимум 386 мб, без верхнего предела. Поставил вот так:
java.args=-Xms512m -Xmx1024m -Dsun.io.useCanonCaches=false
Гайд выбрал этот (http://livedocs.adobe.com/flex/3/html/help.html?content=configuring_environment_3.html), он чуть более понятен ) Единственное что у меня 4 флекс, но я думаю аргументы виртуальной машины не меняли. Не помогло =(
Буду качать сейчас последний сдк флексовый. Кстати, флешка там получается мелкой, на выходе мегабайт всего.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.