588.56K
Category: programmingprogramming

Компиляторы и интерпретаторы

1.

Компиляторы и Интерпретаторы

2.

Интерпретаторы
Интерпретатор берёт очередной оператор языка из текста программы,
анализирует его структуру и затем сразу исполняет. Только после того как
текущий оператор успешно выполнен, интерпретатор перейдёт к
следующему. При этом если один и тот же оператор будет выполняться в
программе многократно, интерпретатор будет выполнять его так как, как
будто встретил впервые. Вследствие этого программы, в которых требуется
осуществить большой объём вычислений, будут выполняться медленно.
Кроме того, для выполнения программы на другом компьютере там тоже
должен стоять интерпретатор – ведь без него текст является просто набором
символов.
По-другому можно сказать, что интерпретатор моделирует некоторую
вычислительную виртуальную машину, для которой базовыми
инструкциями служат не элементарные команды процессора, а операторы
языка программирования.

3.

4.

Достоинства интерпретаторов
Простота изучения. REPL помогает проверять, как работают незнакомые
конструкции и быстро осваивать синтаксис языка.
Простота программирования. Как и компилятор, интерпретатор избавляет от
необходимости писать программы в машинных кодах.
Кроссплатформенность. Интерпретаторы разработаны для разных платформ
— Mac, Windows, Linux, поэтому написанная нами программа будет работать
на всех платформах.
Улучшение программы за счет интерпретатора. Скорость программ зависит
не только от качества кода, но и от того, насколько быстро работает
интерпретатор. Например, программисты Google постоянно улучшают
интерпретатор JavaScript, который работает в браузере Chrome. Если мы
написали программу на JavaScript, с каждой новой версией Chrome она
работает быстрее, даже если мы ничего в ней не меняем.

5.

Недостатки интерпретаторов:
Недостатки интерпретаторов:
Низкая скорость. Интерпретируемые программы работают медленнее, чем программы в
машинных кодах. Это происходит потому, что интерпретатор должен сначала
проанализировать текст команды, и лишь потом выполнить ее. Программа в машинных кодах
сразу понятна компьютеру.
Зависимость от интерпретатора. Интерпретируемой программе нужен интерпретатор. В
Windows программы в машинных кодах имеют расширение .exe. Такую программу, скажем,
архиватор 7-zip можно просто запустить. А для того, чтобы выполнить программу на языке
Python, нужен интерпретатор python.
Доступность исходного кода. Исходный код на интерпретируемом языке доступен
пользователю программы. Пользователь может подсмотреть в программе то, что ее автор хотел
бы скрыть, например, способ шифрования пароля или уникальный алгоритм.
Позднее обнаружение ошибок. Интерпретаторы выполняют программы по одной команде.
Если в синтаксисе команды допущена ошибка, интерпретатор не сможет об этом узнать, пока
не приступит к ее анализу. В больших программах есть куски, которые выполняются реже
других и, возможно, там есть ошибки, про которые программист не знает. Чтобы избежать
ошибок, которые увидит пользователь программы, приходится тестировать её гораздо
тщательней.

6.

Компиляторы
С помощью языка программирования создаётся не готовая программа, а только её
текст, описывающий ранее разработанный алгоритм. Чтобы получить работающую
программу, надо этот текст либо автоматически перевести в машинный код (для
этого служат программы компиляторы) и затем использовать отдельно от исходного
текста, либо сразу выполнять команды языка, указанные в тексте программы (этим
занимаются программы-интерпретаторы).
Компиляторы полностью обрабатывают весь текст программы. Они просматривают
его в поиске синтаксических ошибок (иногда несколько раз), производят
определенный смысловой анализ, а затем автоматически переводят (транслируют)
на машинный язык - генерируют машинный код. Нередко при этом выполняется
оптимизация с помощью набора методов позволяющих повысить быстродействие
программы. В результате законченная программа получается законченной и
эффективной, работает
В сотни раз быстрее программы, выполняемой с помощью интерпретатора, может
быть перенесена на другие компьютеры с процессором, поддерживающим
соответствующий машинный код.

7.

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

8.

Недостатки компилятора.
Поскольку переводится вся программа, она использует гораздо больше памяти
компьютера.
При работе с компилятором невозможно изменить программу, не вернувшись к
исходному коду.
Необходимо создавать объектную программу перед окончательным исполняемым
файлом. Это может занять много времени.
Исходный код должен быть на 100% верным для создания исполняемого.

9.

Различия
English     Русский Rules