UniLecs. Компилируемые и интерпретируемые языки программирования

UniLecs. Компилируемые и интерпретируемые языки программирования

UniLecs
Compiler VS Interpreter

Продолжая тему языков программирования немного поговорим о таких понятиях, как компилятор и интерпретатор. Компиляция и интерпретация — это основа работы языков программирования.

Языки программирования можно разделить на два класса — компилируемые и интерпретируемые. Хотя стоит уточнить, что такая классификация является весьма условной, так как для любого языка программирования можно создать как компилятор, так и интерпретатор. А также бывают языки программирования смешанного типа.


Компилируемые языки

Программа с помощью специальной программы компилятора преобразуется (компилируется) в набор инструкций для заданного типа процессора (машинный код) и далее записывается в исполняемый файл, который может быть запущен на выполнение как отдельная программа. Можно также сказать, что компилятор переводит программу с языка высокого уровня на низкоуровневый язык, создавая при этом отдельную программу.

Плюсы: в большинстве случаев скомпилированные программы выполняются быстрее и не требуют для выполнения дополнительных программ, так как уже переведены на машинный язык.

Минусы: обратная сторона медали, тот факт, что при каждом изменении кода программы требуется ее перекомпиляция, что накладывает дополнительные расходы(времени, ресурсов) при разработке. А также скомпилированная программа может выполняться только на том же типе компьютеров и, как правило, под той же операционной системой, на которую был рассчитан компилятор. Для того чтобы создать исполняемый файл для машины другого типа, требуется новая компиляция.

Примеры: примерами компилируемых языков можно назвать Pascal, C, C++, Haskell, Rust, Go.


Интерпретируемые языки

Для интерпретируемых языков программирования, интерпретатор непосредственно выполняет (интерпретирует) код программы без предварительного перевода. При этом программа остается на исходном языке и не может быть запущена без интерпретатора. Грубо говоря, интерпретатор переводит на машинный язык прямо во время исполнения программы.

Плюсы: программы на интерпретируемых языках можно запускать сразу же после изменения, что значительно облегчает разработку. Программа на интерпретируемом языке может быть зачастую запущена на разных типах машин и операционных систем без дополнительных усилий.

Минусы: интерпретируемые программы выполняются значительно медленнее, чем компилируемые, а также, они не могут выполняться без дополнительной программы-интерпретатора.

Примеры: примерами интерпретируемых языков являются PHP, Perl, Ruby, Python, JavaScript. К интерпретируемым языкам также можно отнести все скриптовые языки.

 

Языки программирования смешанного типа

Сегодня многие языки имеют как компилируемые, так и интерпретируемые реализации. По сути программа компилируется не в машинный язык, а в машинно-независимый код низкого уровня, так называемый байт-код. Дальше байт-код выполняется уже виртуальной машиной. А вот уже для выполнения байт-кода обычно используется интерпретация. Хотя стоит заметить, что отдельные его части (для ускорения работы программы) могут быть транслированы в машинный код непосредственно во время выполнения программы, так называемся технология компиляции «на лету».

Примеры: Java, C#. Для Java байт-код исполняется виртуальной машиной Java (Java Virtual Machine, JVM), для C# — исполняемой средой CLR (Common Language Runtime).

Report Page