ГВ>>...Как-никак — пересобирается полная программа...
Д>... перед компиляцией любого файла в C++ сначала делается препроцессинг...
А еще тормоза компиляции происходят из-за того что в Си/Си++ можно влюбом месте программы написать:
{
extern void XerZnaetKakayaFunkciyaFigZnaetGdeOnaOpredelena();
XerZnaetKakayaFunkciyaFigZnaetGdeOnaOpredelena();
}
(Кстати, по смыслу это очень близко к инструкции goto) Компилятор замучается бегать по всем файлам проекта и искать где же определена эта функция (причем ему еще надо убедиться в том что эта функция определена не более одного раза). А в модульных языках программирования компилятор с самого начала знает из какого модуля какая функция вызывается и не тратит время на ее поиск.
MODULE MyModule;
IMPORT L := StdLog;
BEGIN
L.String("Привет!"); (* Компилятору сразу видно что вызывается процедура String() из модуля L := StdLog *)
END MyModule.