Видипедия: PHP - Интерпретатор (не?)компилирующего типа

Alexandre

PHPПенсионер
потому что если ставить и то необходима в контексте заданного вопроса треться градация (какая - сам не знаю) что-то типа:
компилируемый язык (так как в нашем случае есть опкод) с использованием виртуальной машины (в нашем случае - это ZendEngine).
 

zerkms

TDD infected
Команда форума
98%?? разработок проходят при каждом запуске стадию интерпретации(и компиляции на 1 раз), а не запускаются уже __предварительно__ скомпилированными
время жизни скомпилированного опкода как-то влияет на терминологию? и как же?
 

baev

‹°°¬•
Команда форума
Alexandre, куда в определение «интерпретатор компилирующего типа» Вы собираетесь вставить своё «или»?
 

FractalizeR

Новичок
я указал - без accelerator и прочего схожего. надо заметить, что эти кэши какбэ не php, а отдельные программы, в состав пхп не входящие. Соответственно, расширяя фразу товарища:
98%?? разработок проходят при каждом запуске стадию интерпретации(и компиляции на 1 раз), а не запускаются уже __предварительно__ скомпилированными

"98% - разработок" - могу согласиться. С другой стороны, 98% release кода запускается на системах с уже включенным кешем байткода.

Кроме того, внимательно прочитайте статью Wikipedia "интерпретатор". PHP явно попадает под опрелеление "интерпретатор компилирующего типа". Или вы так не считаете? PHP делает один проход по исходному тексту, компилирует его, затем выполяет свой p-код. И совершенно неважно, происходит это при каждом запуске PHP на данном скрипте или один раз при первом обращении. Важен сам факт компиляции кода полностью, перед исполнением.
 

Lightning

Трудоголик
(Программное обеспечение Zend является платным и его использование ограничено, 98% всех разработок интерпретируется без предварительной к
Так компилируется же в любом случае. Просто без акселератора байт-код не кэшируется. Нет?
 

zerkms

TDD infected
Команда форума
Lightning
да. непонятно вообще к чему дискуссии.
 

Lightning

Трудоголик
http://en.wikipedia.org/wiki/Php
Since PHP 4, the PHP parser compiles input to produce bytecode for processing by the Zend Engine, giving improved performance over its interpreter predecessor.[32]
Источник:
32. # ^ "PHP and MySQL". University of Alabama. http://cs.ua.edu/457/Notes/PHP%20and%20MySQL.ppt. Retrieved 2008-02-25.
Что и требовалось доказать.

-~{}~ 07.09.09 15:41:

непонятно вообще к чему дискуссии.
В интернете кто-то не прав :)
 

MiksIr

miksir@home:~$
Вынес в http://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:pHP
Комменты к откату - не место для обсуждения кто прав, а кто нет
 

Krishna

Продался Java
98%?? разработок проходят при каждом запуске стадию интерпретации(и компиляции на 1 раз), а не запускаются уже __предварительно__ скомпилированными
Учи матчасть :)
_Сначала_ компиляция (каждый раз "в 98% случаев"), а потом интерпретация.
И лишь в 2% случаев с использованием акселератора, наоборот этап _компиляции_ упускается, ибо запускается уже откомпилированный байткод :)
Виртуальная машина Зенд2 умеет работать только с байткодом.

Так что всё верно с точностью до наоборот :)

А где этот коммент? Что-то его не видно на странице обсуждения.
В хистори правок.
 

MiksIr

miksir@home:~$
Мне кажется, что Cheops под компилируемым интерпретатором держит в голове что-то вроде JIT, отсюда и непонимание.
 

Krishna

Продался Java
MiksIr
Нет, он же сам признает существование некоего зенда, суть которого явно не понимает до конца и пишет о 2% )
 

MiksIr

miksir@home:~$
Ну не разобрался он. Хотя, в английской вики вообще нет четкого разделения компилирующий/не компилирующий, а довольно правильно говорится о расплывчатости этой границы
There is a spectrum of possibilities between interpreting and compiling, depending on the amount of analysis performed before the program is executed.
А четкое деление - это видимо наше изобретение... и тепереча вот спорим...
 

DarkLordis

Новичок
php является интерпретатором. конечно он использует байт-код. Это - классика. Мои компиляторы (приходилось в паре проектов) делали так же. Использование байт-кода - это такой технологический прием, применяемы для упрощения разработки интерпретатора (читать: Шилдта). Так же в прочем и java работает. А вот С# действительно компилирует при первом запуске на конкретной машине... если под компиляцией так же как и раньше понимать перевод программы на языке высокого уровня в машинные коды.
И честно говоря хорошо что php интерпретатор. А вы думаете что автор php хотел сделать компилятор? для чего? и в какой код компилировать? угадать на чем построен сервер?
 

FractalizeR

Новичок
Автор оригинала: DarkLordis
А вот С# действительно компилирует при первом запуске на конкретной машине... если под компиляцией так же как и раньше понимать перевод программы на языке высокого уровня в машинные коды.
C# компилирует не при первом запуске приложения, а при вызове каждого метода только этот конкретный метод, если он еще не был скомпилирован.
 

MiksIr

miksir@home:~$
С# все же компилирует с CIL, т.е. по сути в тот же байт-код.
http://en.wikipedia.org/wiki/Common_Language_Infrastructure
 

FractalizeR

Новичок
Он компилирует не В байт-код, а ИЗ байт-кода в собственный код процессора. В байт-код компиляцию производит программист.
 

MiksIr

miksir@home:~$
Еще раз - то, из чего компилируется в собственный код процессора - это не программа на C#, это CIL (байт-код).
 
Сверху