Правильно ли я понимаю отличие компиляции от интерпретации?
То есть я понимаю это так: Компилятор сразу всю программу переводит в низкоуровневый код или сразу в машинный, и как бы ее выполняет всю и сразу. А интерпретатор транслирует построчно код в промежуточный код который понимает только интерпретатор ( который является виртуальным процессором), интерпретатор строка за строкой выполняет этот код, при этом естественно его процессы на байт-коде переводятся в бинарный - который понимает процессор. То есть в интерпретаторе есть виртуальный ЦП и перевод в ему понятный код - это как бы компиляция. То есть там как будто весь код - программа. А здесь одна отдельная строка является отдельной программой, которая также компилируется, но не ведует, что в виртуальном процессоре.
Рональд Макдональд, забавно, я знаю, но просто это так образно. Если непонятен ход моих мыслей, то я могу обьеснить как понимаю на образе физических процессов или явлений.
Frim0nt, нет. Забудь о байткоде, это лишь путает. Считай, что интерпретатор оперирует строками программы, как они есть (в tcl так и есть до сих пор), и эти строки можно править на ходу. Клёво.
longclaps, ну да, значит я все таки это понял. Но ведь если извращнуться, то можно же представить первую ступень интерпретации (код ---> интерпретатор) как компилятор! И в принципе вторую ступень(взаимодействие интепретатора и ЦП) можно опустить, ибо она также захламляет понимание.
Frim0nt, это всё не очень важно. Примитивный интерпретатор может на ходу изменять код исполняемой программы. Примитивный компилятор не может. Изощренный компилятор - может. Ну и он эффективнее, конечно.
Компилятор берет текст исходного кода программы и переводит его в исполняемый код. Часто это машинный код.
При этом компилятор код программы не выполняет. Но результат может быть готовый исполняемый файл, или библиотека, которую уже можно выполнять или пользоваться без компилятора.
Интерпретатор - берет текст исходного кода программы и выполняет его. При этом может выполняться промежуточная JIT-компиляция и другие вещи для оптимизации. Но без интерпретатора пользоваться программой нельзя.
Да, для питона существуют программы, которые сделают .exe файл из текста на питоне.
Преимущество скрипта в том, что его легко поменять. Поправил текст и сразу выполняешь уже обновленную версию.
Откомпилированную программу поменять гораздо сложно, потому что в ней исходного кода уже нет. А если есть исходный код, то его сперва нужно скомпилировать.