@davc

Зависит ли оптимизация программ от языков программирования?

Здравствуйте, я знаю что есть высокоуровневые и низкоуровневые языки программирования, и мне интересно: высокоуровневые языки влияют на оптимизации программ, и еще говорят что тот язык хороший, а тот нет. В чем разница языков друг от друга(их оптимизация?, или функционал?), кроме понятного и не понятного интерфейса кода

Все говорят что на javа -е очень лего и быстро можно работать, и у него есть большой функционал. Если это так то почему многие люди работают на c++, или pyton, или т.п.
  • Вопрос задан
  • 426 просмотров
Решения вопроса 1
@pfg21
ex-турист
Высокоуровневые языки упрощают разработку и сопровождение исходного кода, а также понимание стороннему програмисту.
На низкоуровнем ассемблере ты код с разбегу просто не воспримешь, да и не напишешь. Зато можешь очень точно допилить код для идеального быстрого исполнения под конкретную аппаратную платформу, но допиливание потребует кучу времени и знаний.
Та же java скрывает многие тонкости работы конкретной аппаратной платформы. зато "набросать" рабочй код получится очень быстро.

джава компилируется в байт-код, который исполняется на виртуальной машине (а это все равно прослойка торможения), но зато байт-код прекрасно выполняется на любой аппаратной платформе, если под нее написана виртуальная машина. с++ компилируется в нативный код под конкретную аппаратную платформу, поэтому дозволяет делать более проработанную оптимизацию, но требует по отдельной компиляции на каждую платформу.
у каждого языка и каждой из реализаций языка в компиляторе/исполнителе есть свое место под солнцем.
абсолютно универсально "вовседырошно применимого" языка пока не создали :)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Zanak
Давайте по порядку:
1. Что такое оптимизация программы?
Есть такое понятие, как алгоритмическая оптимизация. В простых случаях - это, например, вынос присваивания неизменяемого в цикле значения за его рамки, сохранение промежуточных результатов вычислений, при обработке сложного выражения, развертывание цикла, да и много чего еще, что умеют делать современные компилеры с исходниками. Другое дело, что это, в той или иной мере стараются делать все языки, и скриптовые, и компилируемые, ну, может быть кроме асма, там что напишеш, то и получешь, на сколько мне известно.
Кроме оптимизации алгоритмической, есть еще оптимизация под целевую платформу. Компилируемые в нативный код процессора языки стараются эту оптимизацию делать, но, на сколько глубоко, скорее всего зависит от конкретного языка. Например Цэ может вылизать каждый байт результата компиляции, а Go приходится помнить и про сборщик мусора, и про планировщик горутин, кроме собственно оптимизации целевого кода. Для скриптовых языков об этой оптимизации можно говорить только в случае поддержки ими jit компиляции, что есть не у всех из них.
2. Деление на высокоуровневые и низкоуровневые языки достаточно условно.
Первй критерий, который припоминается - это возможность работы с железом напрямую. Во времена DOS это были асм и цэ, хотя, смутно припоминается, что и паскаль и даже бейсик позволяли скинуть значение в порт или прочитать его. Сейчас, в большинстве случаев, ОС работает в защищенном режиме, и пользовательское приложение прямого доступа к железу не имеет. Особняком стоят языки, которые умеют порождать код, стартующий на голом железе, и здесь кроме асма и це можно, к примеру, вспомнить про erlang, который, хоть и скриптовой, но вроде как умеет стартовать без присутствия ОС, ну или новомодный раст, тоже достойный вариант для рассмотреия.
3. Отличия между языками - это прежде всего по задачам, для которых они предназначены. Например, большинство языков имеет ограниченную точность математики, и для проведения высокоточных расчетов приходится привлекать внешние библиотеки, но есть фортран, который изначально создавался для проведения расчетов, и он прекрасно справляется с этим сам. Другой пример, на асме можно написать текстовый редактор, только это будет долго по времени, в отличии, того же Цэ с плюсами, но если речь зайдет про отладчик программ, то здесь без асма ни как. Ну и на последок, Lua, который популярен у разработчиков игр как встраиваемый в платформу язык, благодаря своей достаточной скорости при небольшом размере среды исполнения.

Про джаву ни чего сказать не могу, потому как знаком с ней только по продукции jetbrains и на примере эклипса или нетбинса.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы