Если мне нужно перефразировать:
Являются ли программы, написанные на низкоуровневых языках, существенно более эффективными с точки зрения производительности, или в конечном итоге разницы нет?
Если мне нужно перефразировать:
Являются ли программы, написанные на низкоуровневых языках, существенно более эффективными с точки зрения производительности, или в конечном итоге разницы нет?
В дополнение к тому, что говорит Мартин, когда язык высокого уровня проходит через компилятор, он по существу разбивается на более простые инструкции, понятные машине. Компиляторы могут быть очень хорошими или очень плохими в зависимости от того, какой у вас компилятор. Некоторые компиляторы допускают большую оптимизацию, в то время как некоторые являются базовыми. В конце концов все они сводятся к коду машинного уровня. Перевод из кода в код машинного уровня — это то место, где действительно происходит перевод скорости, который выполняется компилятором.
Представьте, что у вас есть два переводчика с английского на испанский. Представьте, что вы просите их перевести фразу. Эта фраза может потеряться при переводе. В конце концов, один переводчик может стать лучшим переводчиком. То же самое с компиляторами.
Хотя в переводе есть небольшие изменения, вы все равно доносите свое сообщение. То же самое и в мире программирования. Когда у вас есть приложение высокого уровня, нет смысла писать все в машинном коде, так как это было бы крайне неэффективно. Также компиляторы становятся действительно хорошими против сравнения уровня сборки.
Опять же, все зависит от конечного приложения и смысла.
Простой ответ - это зависит!
Если вы имеете в виду языки низкого уровня, то языки, которые компилируются непосредственно в код (C/C++/Fortran), могут работать быстрее, чем те, для которых требуется виртуальная машина (Java/C#/Python).
На практике языки высокого уровня на основе виртуальных машин традиционно не использовались там, где требовалась высочайшая производительность, поэтому в высокопроизводительном Fortran было приложено гораздо больше усилий, чем в высокопроизводительном C#. Это также означает, что люди с требованиями HPC обычно не выбирают Java/C#, поэтому они недоступны в этих системах и так далее....
Это может измениться по мере того, как виртуальные машины станут умнее. PyPy — классический пример, это python, написанный на python, который должен быть бесполезно медленным — python — не быстрый язык, и писать его сам по себе, а не C, должно быть ужасно, но он часто быстрее, потому что может анализировать и предварительно компилировать некоторые части. программы, которая должна быть проанализирована во время выполнения. Точно так же вы можете представить виртуальную машину C#, которая распознает определенные задачи комментариев и автоматически преобразует их в параллельные операции графического процессора.