[oodisc] Не хватает одной моей головы.

AS_Pushkin as_pushkin на tut.by
Пт Июл 8 13:02:06 MSD 2005


Доброго здоровья!

Бабич Алексей Владимирович пишет:
> GK> http://www.osp.ru/os/2000/12/045.htm
> Ладно, теперь последнее сображение: интерпретатор
> языка интерпретирует _и_ затем выполняет, а скомпилированный код просто выполняется.  Делаю вывод, что интерпретатор
> всегда медленнее. То есть, интерпретатор С будет медленнее, чем код, скомпилированный с С в родной для платформы код.

Действительно, несколько медленней. Но есть у Perl'а (и других 
интерпретируемых языков) кое-что, что C не сможет сделать.
Во-первых, как я уже отмечал раньше, основой, или, если угодно, ядром 
системы является шаблонник, который собирает XML-документ. В сам шаблон 
можно вставлять некоторый код на Perl'е. Боюсь, для C это окажется 
весьма нетривиальной задачей. Ну, разве что разработка какого-то своего 
собственного языка для шаблонов.
Во-вторых, чтобы заставить Perl-скрипт работать на другой платформе, 
достаточно просто скопировать его туда, дать нужные права и запустить. 
Программу на C нужно будет сначала оптимизировать под конкретную ОС, 
отладить и скомпилировать.
В-третьих, шаблонник сам по себе может обслуживать простой сайт. Все, 
что выходит за рамки сборки XML-документа, реализовано в расширениях. 
Расширения написаны специально для использование с шаблонником и больше 
нигде, но запускаются они по мере надобности. Расширения выполняются как 
если бы они были процедурами самого ядра, т.е им доступны глобальные 
переменные шаблонника. Я не знаю, возможно ли такое в C. Наверняка есть 
какой-то способ, но переносимость такого подхода так же мне так же 
представляется большой головной болью.
(Чтобы меня не закидали камнями недовольства по поводу такой архитектуры 
приложения, сразу подчеркну: расширения работают _только_ с шаблонником, 
и их применение где-либо еще просто невозможно. Именно поэтому они и 
называются *расширениями*. Процедуры общего назначения, которые могут 
использоваться где угодно, я предпочитаю выносить в отдельные модули.)

> То-же самое предположу про Perl, только не знаю, есть ли компиляторы Perl в родной для платформы код.

Были такие попытки, но они практически всегда обречены на провал. Perl, 
по-моему, не может быть компилируемым.

-- 
Andrei Protasovitski              mailto:andrei()siliconmaterials.com
JS "KamSil"                       http://www.siliconmaterials.com/
137, Brestskaya str.,             ICQ: 75725244
225710, Pinsk, Belarus



Подробная информация о списке рассылки Oo-discuss