Не сложно понять, что машины и люди разговаривают на своих, не понятных друг другу языках. Языков программирования гигантское множество, со своими странностями, минусами и плюсами. Как же объяснить железке, что ты от нее хочешь? Люди подошли к этому делу очень просто, придумали программы переводчики. Собственно о них речь и пойдет.
Код написанный на практически любом языке программирования в первую очередь пишется людьми, понятными людям символами, машина же понимает только машинный код. Существует несколько вариантов того, как преобразовать человеком написанный код в машинный.
Здесь все строго, как с общением людей на разных языках, информацию можно донести несколькими способами. Либо перевести все и сразу и дать прочитать уже переведенный текст, либо переводить слова по ходу пьесы. Таким образом, мы имеем два подхода компиляция и интерпретация. Есть еще промежуточный вариант, но о нем в конце.
Разберемся, как работает компиляция и интерпретация, в чем отличия, преимущества и недостатки.
Компиляция - способ при котором компилятор (программа переводчик) читает весь написанный человеком код программы и переводит на машинный код. Итогом этой работы является исполняемая программа, которую впоследствии пользователи и запускают.
При интерпретации конечной программой уже можно считать написанный программистом код, который при каждом запуске, построчно, переводится в машинный код интерпретатором (программой переводчиком).
У каждого из этих подходов есть свои плюсы и минусы. Скомпилированные программы намного быстрее интерпретируемых, просто потому что при запуске мы используем уже переведенную ее версию. К недостаткам можно отнести тот факт, что для каждой операционной системы, ввиду их различий, требуется своя программа, плюс если хочется внести изменения, придется все перекомпилировать. Что является минусами компиляции, интерпретацией нивелируется, т.к. мы запускаем исходный код программы, на каждой из машин нам достаточно иметь свой интерпретатор, все обновления он будет видеть сразу. Ну а скорость таких программ меньше, т.к. прежде чем выполнить код нужно его сначала перевести, на что требуется время.
Существуют также языки программирования для которых используют оба этих похода вместе, например Java. Сначала исходный код компилируется в байт-код, после чего уже байт-код интерпретируется в машинный. Такие программы платформо-независимы, при этом превосходят исключительно интерпретируемые программы по скорости выполнения.