Компиляция и интерпретация
Компьютерное программирование - это процесс компоновки элементов выбранного языка программирования в том порядке, который приведет к желаемому эффекту. В каждом конкретном случае эффект может быть разным – это зависит от воображения, знаний и опыта программиста.
Конечно, такая композиция должна быть верной во многих смыслах:
- алфавитно – программа должна быть написана узнаваемым шрифтом, например римским, кириллическим и т. д.
- лексически – у каждого языка программирования есть свой словарь, и вам нужно его освоить; к счастью, он намного проще и меньше, чем словарь любого естественного языка;
- синтаксически – у каждого языка есть свои правила, и они должны соблюдаться;
- семантически – программа должна иметь смысл.
К сожалению, программист также может ошибиться в каждом из четырех вышеупомянутых пунктов. Каждый из них может привести к тому, что программа станет совершенно бесполезной.
Предположим, вы успешно написали программу. Как убедить компьютер выполнить его? Вы должны перевести вашу программу на машинный язык. К счастью, перевод может быть выполнен самим компьютером, что делает весь процесс быстрым и эффективным.
Существует два разных способа преобразования программы из языка программирования высокого уровня в машинный:
КОМПИЛЯЦИЯ - исходная программа транслируется один раз (однако это действие необходимо повторять каждый раз, когда вы изменяете исходный код) путем получения файла (например, файла .exe, если код предназначен для запуска в MS Windows), содержащего машинный код; теперь вы можете распространять файл по всему миру; программа, выполняющая этот перевод, называется компилятором или переводчиком;
ИНТЕРПРЕТАЦИЯ - вы (или любой пользователь кода) можете переводить исходную программу каждый раз, когда она должна быть запущена; программа, выполняющая такое преобразование, называется интерпретатором, поскольку она интерпретирует код каждый раз, когда он предназначен для выполнения; это также означает, что вы не можете просто распространять исходный код как есть, потому что конечному пользователю также нужен интерпретатор для его выполнения.
По некоторым очень простым причинам конкретный язык программирования высокого уровня спроектирован так, чтобы попасть в одну из этих двух категорий.
Очень мало языков, которые можно как компилировать, так и интерпретировать. Обычно язык программирования проектируется с учетом этого фактора в умах его конструкторов - будет ли он компилироваться или интерпретироваться?