Автор: cheops (04.10.2007 в 21:56)
PHP - это интерпретатор, т.е. скрипты просматриваются и выполняются построчно, причём без интерпретатора они выполнятся не будут. Прочитали строку, выполнили, прочитали следующую - выполнили. Очено удобно, но крайне медленно.
C++ - это компилятор, т.е. он подготавливает бинарный файл (exe-файл, если речь идёт об Windows), который может непосредственно "читаться и выполняться" процессором - без какой-либо предварительной обработки (причём файл является исполняемым - компилятор для его работы больше не нужен - он нужен только для конвертации исходного кода в исполняемый). В результате программа выполняется очень быстро (что важно для ресурсоёмких систем - операционные системы, игры, теже компиляторы и интерпретаторы). Подготовка такого бинарного файла происходит в несколько этапов. Сначала, все файлы проекта компилируются (compile) в бинарные модули. Результатом этого, как правило, является пробразование cpp-файлов в obj-файл. Полученные бинарные модули соединяются или линкуются (link) друг с другом с выдачей результата (exe-файл). Весь этот процесс обычно объединяется в процесс сборки проекта (make) и выполняется за раз (все перекомпилируется, а затем пересобирается). Правда иногда проекты достигают больших (процесс сборки на последних моделях машин достигает часа) и гиганских (даже на многопроцессорных машинах время сборки может достигать суток) размеров. В этом случае стараются проводить компиляцию и сборку отдельно - т.е. если файл не изменялся, то его и не перекомпилируют, а используют ранее созданный объектный модуль (obj-файл).
PS Смысл всех этих манипуляций - собрать исполняемый модуль (для конкретного процессора) за как можно более короткое время.