Про PaxCompiler
Ну как всегда на форумах - конкретный вопрос, а в ответ масса флудеров вообще слабо понимающих о чем идет речь.
Особо припечатало:
Считаю - ИНТЕРПРЕТАТОРЫ в теле вашей программы имеют право на жизнь. Они не продлевают, а расширяют возможности и увеличивают прикладность ваших программ.
Так и хочется спросить: кто кого продлил и куда расширил и что у него из за этого увеличилось???
Ну а теперь про PaxCompiler и FastScript.
Являясь зарегистрированным пользователем и того и другого, поработав с данными продуктами не один год, написав при этом массу полезного и не очень кода, по существу могу заявить следующее:
во-первых, PaxCompiler является полноценным КОМПИЛЯТОРОМ, а не интерпретатором как FastScript, встроенный язык 1C и иже с ними. Для тех, кто не понял в чем тут фишка - поясню. Интерпретатор работает следующим образом:
- производит парсинг полученного скрипта
- создает промежуточный P-код в понятной для себя последовательности инструкций
- а за тем выполняет (интерпретирует) эти команды СРЕДСТВАМИ ЯЗЫКА ПРОГРАММИРОВАНИЯ на котором был написан.
в отличие от него компилятор делает следующее:
- производит парсинг полученного скрипта
- создает набор команд для CPU вашего компьютера
- далее полученный двочный код выполняет процессор, так же, как он выполняет команды содержащиеся в EXE файле.
Так вот, FastScript это интерпретатор, а PaxCompiler компилятор (что вроде как и следует из названий данных продуктов). Поэтому сравнивать их всё равно что сравнивать Хаммер с Запорожцем. Ну раз просили, извольте. Возьмем простой Pascal script:
------------------------------------
var
i, j: integer;
c: TComponent;
begin
c := TComponent.Create(nil);
for i := 0 to 500000 do
if c.Tag = 0 then
begin
c.Tag := 0;
c.Name := 'a';
end;
c.Free;
end.
---------------------------------------
Как видите, ничего особого он не делает, но зато в цикле выполняет полмиллиона итераций подгружая работой процессор вашего компьютера. Выполним этот скрипт с помощью Delphi, PaxCompiler и FastScript и измерим время выполнения в тактах CPU.
На моем компьютере (Pentium IV Core Duo 2.2Ггц ) результаты следующие:
Delphi 2009 - 15 тактов
PaxCompiler - 78 тактов
FastScript - 1625 тактов
на мой взгляд, в плане производительности, PaxCompiler побеждает FastScript накаутом.
Но это еще не все. Очень важно не только то, насколько быстро работает тот или иной продукт, но и что он при этом может делать.
Вот официальное описание возможностей FastScript с сайта производителя:
поддержка OLE
variant массивы
мультиязычная архитектура, позволяющая использовать множество языков (в настоящее время - PascalScript, C++Script, JScript, BasicScript). Можете добавлять любые другие процедурно-ориентированные языки (их описание хранится в XML-формате)
возможность создания и исполнения многоязычных скриптов
стандартный языковой набор: переменные, константы, процедуры, функции (с возможностью вложенности) с переменными/постоянными/умалчиваемыми параметрами, все стандартные операторы и объявления (включая case, try/finally/except, with), типы (целый, дробный, логический, символьный, строковый, многомерные массивы, множество, универсальный тип), классы (с методами, событиями, свойствами, индексами и свойствами по умолчанию).
проверка совместимости типов.
доступ к любому объекту вашего приложения. Стандартные библиотеки для доступа к базовым классам, контролам, формам и БД. Легко расширяемая архитектура библиотеки.
Звучит вроде бы неплохо.... Но тут вопрос не в том что может FastScript, а в том чего он не может. А не может он следующее:
- объявлять в теле скрипта собственные типы (классы и record записи)
- не работает с типом Pointer
- не поддерживает множества
И НИКОГДА этому не научится. Потому что создавался как прикладуха для FastReport, всё что для этого продукта требовалось разработчики в FastScript уже воплотили и дальше развивать его не видят смысла. По крайней мере так меня официально заверил представитель компании FastRepot на одной из презентаций Delphi 2007. Оснований ему не доверять у меня нет, так как почитай второй год пошел, а в FastScript не одной существенной доделки так и не появилось.
Законный вопрос, ну а что может PaxCompiler?
Отвечу вопросом на вопрос: C Delphi 7 работали? Так вот, PaxCompiler может ровно всё то, что реализовано в языке Object Pascal данной версии и даже немного более.
Например поддерживает инструкции пространства имен (NameSpace) в Delphi данное объявление появилось только с версии Delphi 2005.
Кроме того, умеет загружать DFM файлы, что позволяет включать в скрипты формы написанные в Delphi, но это уже пожалуй не скрипты а полноценные программы....
Ну а лучше самим один раз увидеть, чем десять раз услышать:
FastScript -
Как увидеть ссылки? | How to see hidden links?
PaxCompiler -
Как увидеть ссылки? | How to see hidden links?
Кстати, разработчиком PaxCompiler является Барановский Александр проживающий в городе Донецке ныне самостийной Украины. Мовой не балуется, русский разумеет в полном объеме, в связи с чем способен оказывать техподдержку зарегистрированных пользователей на всем нам хорошо понятном РУССКОМ языке.
Ну вот и все. Если у кого возникли вопросы, милости просим:
Как увидеть ссылки? | How to see hidden links?