Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.29;
Скачать: CL | DM;

Вниз

Почему у Delphi скорость компиляции выше?   Найти похожие ветки 

 
kull ©   (2002-07-02 23:37) [0]

Прошу прощения за глупый вопрос.
Но все таки интересно почему скорость компиляции у Delphi выше чем у C++ компиляторов.
Причем не только VC++, но и C++Builder-а.
Ведь, насколько я понимаю, Builder и Delphi имеют одинаковый "движок" как продукты одной фирмы. Почему же так сильно отличается скорость компиляции?


 
RV ©   (2002-07-02 23:39) [1]

на Королевстве Дельфи есть эта тема, поищи
там и про другие компиляторы есть


 
iZEN   (2002-07-02 23:48) [2]

Delphi -- однопроходной компилятор без макросов и шаблонов.

В C++ есть препроцессор, который обрабатывает макросы и шаблоны, строя код во время компиляции, получается вроде такого пути: "интерпретация->генерация_нового_кода_по_макросам_и_шаблонам->компиляция".

Java-компилятор тоже однопроходной, ситуация для него аналогична Delphi-компилятору, поэтому сборка похожего проекта, допустим в JBuilder-е, занимает почти столько же времени, что и в Delphi. :)

Вот.


 
kull ©   (2002-07-02 23:54) [3]

Вот я предполагал что дело в макросах и шаблонах. А может еще и потому, что Object Pascal более строгий язык чем C++?


 
[NIKEL] ©   (2002-07-03 00:06) [4]

В С++ предусмотрено использование заголовочных (включаемых) файлов , а в Object Pascal - нет. Они также могут быть вложенными. Простая программа из 35 строк может в итоге содержать десятки и сотни тысяч строк из-за вложенности - на это тоже тратиться много времени

В С++ используются МАКРОСЫ, а в Object Pascal - нет, - препроцессор должен разобрать макрос и вставить его там где надо

В С++ применяются ШАБЛОНЫ, а в Object Pascal - нет, а шаблон достаточно сложная для разбора структура

Семантика С++ должна удовлетворять стандарту ANSI. Причем "грамматика" С++ много сложнее "грамматики" Delphi, которая основана на Pascal

С++ позволяет использовать более гибкие приемы программирования, чем Object Pascal, но такая гибкость достигаеться за счет увеличения времени компиляции


 
Виктор Щербаков ©   (2002-07-03 09:44) [5]

kull © (02.07.02 23:54)
Они оба строгие, иначе компилятор нельзя будет написать.
А вот грамматика в С++ действительно посложнее.
К примеру в паскале
procedure SomeProc;
после первой лексемы компилятор понимает, что это объявление процедуры.
В си
int *Somefunc()
После первой лексемы ни хрена не понятно, что же это за объявление. После второй и третьей тоже. И только после скобки измученный компилятор понимает что программист хотел объявить функцию, а не переменную.

Схема конечно упрощенная, но общее представление позволяет получить.


 
kull ©   (2002-07-03 10:39) [6]


> Они оба строгие, иначе компилятор нельзя будет написать.

Может я не прав, но в C++ можно такое преобразование (например типов) завернуть, на которое Pascal скажет incompatible types...


 
limon ©   (2002-07-03 10:47) [7]

> kull
для наглядности ответа, установи параметр в IDE - отображать процесс компиляции. так вот этот прогрессбар, кроме всего прочего, показывает количество обработанных строк.
на програмулину из 10 строк в делфе - около 30-40. в билдере - >100000


 
Виктор Щербаков ©   (2002-07-03 10:48) [8]

kull © (03.07.02 10:39)
Ну и что. Всё равно в С++, правила преобразований типов выполняемых по умолчанию - описаны, и они строгие. Это всё есть у Страуструпа. Различие лишь в том, что в Паскале эти правила другие.

Ты наверно имел ввиду строгость по отношению к программисту, а не строгость самого языка.


 
kull ©   (2002-07-03 11:37) [9]


> Виктор Щербаков © (03.07.02 10:48)

Ну да, я это и имел в виду.

Но ведь чем строже тем меньше степеней свободы, следовательно меньше количество обрабатываемых ситуаций. И наоборот
(как у C++).

Я в этом смысле говорил о строгости.


 
Shaman_Naydak ©   (2002-07-03 13:40) [10]

Корни всего этого, робятки, уходят в осознание простого факта, что Delphi - язык модульный, а C/C++ нет..
Потому и получается, см limon © (03.07.02 10:47)
А то, что синтаксис сложнее, да и сам язык позамороченнее - тьфу и растереть для нынешних процов...
вот 2-х проходная обработка, конечно, дает о себе знать
(хотя ничто не мешает все равно реализовать компиляцию за один проход :) )
Но все равно, роли это не играет.. играет только то, что для компиляции надо обработать 40 строк или 40 тысяч :(


> kull © (03.07.02 10:39)
>
> Может я не прав, но в C++ можно такое преобразование (например
> типов) завернуть, на которое Pascal скажет incompatible
> types...

Не прав, однако, ой не прав. И тот и другой язык следит за типами (Я говорю о С++ и Дельфи), но обоих можно дурить как хочешь, если оно тебе конечно надо

Первый раз все таки не удержался и ввязался в откровенно флеймовые разговоры о С и Паскале!!! ЗЗЫ :)
Больше не буду


 
kull ©   (2002-07-03 14:00) [11]


> но обоих можно дурить как хочешь, если оно тебе конечно
> надо

Дурить то кого хочешь можно, но С++ обдурить легче чем Pascal.




> Корни всего этого, робятки, уходят в осознание простого
> факта, что Delphi - язык модульный, а C/C++ нет..
> Потому и получается, см limon © (03.07.02 10:47)

,

> для наглядности ответа, установи параметр в IDE - отображать
> процесс компиляции. так вот этот прогрессбар, кроме всего
> прочего, показывает количество обработанных строк.
> на програмулину из 10 строк в делфе - около 30-40. в билдере
> - >100000


Ну и что?
Галочка Show compiler progress у меня всегда включена.

В Delphi такое же количество строк (например 100000) обрабатывается быстрее.
Ну... И причем тут модульность?



Страницы: 1 вся ветка

Текущий архив: 2002.07.29;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
14-95538
ProgMan
2002-06-25 10:52
2002.07.29
Курение?


14-95560
LEON
2002-07-04 12:38
2002.07.29
Сканеры


8-95452
Pavel_S
2002-03-22 13:45
2002.07.29
DirectX и OpenGL


1-95409
BAY
2002-07-16 10:51
2002.07.29
Forms


14-95527
esprit_bel
2002-07-02 05:44
2002.07.29
Осмысл