Другие языки программирования и технологии

Почему программы на одних ЯП выполняются быстрее, чем на других?

Все никак не могу понять: возьмем, к примеру, два ЯП - C++ и Delphi.
Насколько я знаю, программы на С++ будут быстрее выполняться, чем аналогичные программы, написанные на Delphi. Но, ведь, любая программа компилируется в машинный код! И написанная на С++, и на Delphi. А машинный код-то должен выполняться одинаково по времени. Или разница в количестве получаемого машинного кода?
Из-за уровня оптимизации
Dima Ditchen
Dima Ditchen
75 493
Лучший ответ
Delphi не компилируется в машинный код, как и "любая" программа этого не делает. С чего ты это взял? Не говоря уже о том, что даже машинный код может быть очень разным, и на процессоре существует огромное количество нюансов, которые можно учитывать при оптимизации.
Георгий Фирсов
Георгий Фирсов
89 645
Дмитрий Носков В смысле, не компилируется? На компьютере могут выполняться программы только на машинном коде. Всякие C++, Delphi как-раз и придумали, для упрощения программирования.
в мире ЯП рулят компиляторы, как в мире денег - банки... не все клиенты этих банков люди обеспеченные, даже несмотря на то, что банк популярный и обладает большими активами...
Александр К.
Александр К.
79 943
Разные языки - разные алгоритмы компиляции, отсюда и разница в скорости выполнения. Даже для одного языка на разных компиляторах результат будет разный. Плюс ещё сказываются особенности и ограничения языков. Например, в Delphi более развитая модель RTTI, что подразумевает более сложные и поэтому менее эффективные алгоритмы конечного кода.
Vlad Жеглов
Vlad Жеглов
24 295
Дмитрий Носков Блин, чем больше спрашиваю, тем больше непоняток. К примеру, почему для одного ЯП создано несколько компиляторов?
P.S. Можете почитать комментарий к ответу другого пользователя? Правильный ли у меня ход мыслей?
Технически, языки общего назначения похожи и если их выпускает одна фирма, теоретически можно вложить одинаковый функционал для языков с подобным синтаксисом вплоть до генерации одинакового кода. Что касается Delphi, там ни когда не было задачи ставить рекорды скорости, Delphi это прежде всего прикладной уровень и поэтому в нем собрано лучшее для достижения удобства работы и приемлемой скорости выполнения. У Delphi есть брат - Lazarus, он преследует те-же цели но его конек - переносимость между платформами, чтобы приложения Lazarus можно было переносить с большей легкостью между платформами, пришлось завернуть уровень вызова специфического API в обертку, что означало пожертвовать быстродействием. Поэтому, одни и те-же приложения могут быть перенесены с Delphi на Lazarus, но при этом Вы получите абсолютно разный код, в Lazarus он будет более медленный, но зато, Вы без труда его скомпилируете на Linux. То есть, за разные удобства приходится платить. Самый быстрый и простой код Вы можете получить используя язык и компилятор Oberon - это язык семейства Pascal, разработанный автором Паскаля Никлаусом Виртом, язык максимум упрощен, его синтаксис построен так, чтобы исключить ошибки при написании кода. Он применяется там, где тех условия на столько жесткие, что даже Microsoft отказалась от участия в подобных проектах.
Sergey Lungu
Sergey Lungu
8 068