Планирование уроков на учебный год (по учебнику К.Ю. Полякова, Е.А. Еремина, базовый уровень)



Урок 15
Системное программное обеспечение. Системы программирования
§40. Системное программное обеспечение. §41. Системы программирования




Содержание урока

§40. Системное программное обеспечение
§41. Системы программирования

Зачем нужны системы программирования?

Языки программирования

Трансляторы

Состав системы программирования

Вопросы и задания


§41. Системы программирования


Трансляторы


Основа любой системы программирования — транслятор.

Транслятор — это программа, которая переводит в машинные коды тексты программ, написанных на языке высокого уровня.

Существуют два типа трансляторов: интерпретаторы и компиляторы.

Интерпретатор анализирует текст программы по частям. Разобрав очередной фрагмент, он немедленно выполняет описанные в нем действия и переходит к обработке следующего фрагмента.

Достоинства интерпретаторов:

• программы переносимы (программа будет работать в любой системе, где установлена программа-интерпретатор);
• удобно отлаживать программу.

Есть и существенные недостатки.

• программу невозможно выполнить, если не установлен интерпретатор;
• программы выполняются медленно (в цикле из 100 шагов каждая строчка 100 раз «разбирается» интерпретатором);
• в тех частях программы, которые не выполнялись во время отладки, могут оставаться синтаксические ошибки.

Второй тип трансляторов — компиляторы. Они, в отличие от интерпретаторов, сразу переводят всю программу в машинный код и строят исполняемый файл, готовый к запуску.

Достоинства компиляторов:

• чтобы запустить программу, не нужно устанавливать транслятор;
• поскольку программа уже переведена в машинные коды, она выполняется значительно быстрее, чем при использовании интерпретатора.

Недостатки тоже есть:

• при любом изменении нужно ждать окончания компиляции (перевода в коды); это несколько затрудняет отладку;
• готовая программа будет выполняться только в той операционной системе, для которой она была создана1.


1 Многие программы, разработанные для ОС Windows, могут быть запущены в Linux с помощью программы-оболочки Wine (www.winehq.org).



Чтобы как-то совместить достоинства интерпретаторов и компиляторов, была предложена идея компиляции программы в некоторый промежуточный исполняемый код (псевдокод, P-код), а не сразу в команды конкретного процессора. Для выполнения такого псевдокода нужна специальная среда — виртуальная машина, которую в принципе можно разработать для любого процессора и любой операционной системы.

Программа сначала обрабатывается компилятором, который строит псевдокод, а потом этот псевдокод выполняется интерпретатором.

Таким образом,

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

Байт-код — это разновидность псевдокода, в котором команда занимает 1 байт, а далее следуют её аргументы (или их адреса). Современные версии интерпретируемых языков Perl, РНР, Python используют компиляцию в байт-код для ускорения выполнения программы.

Готовые программы на Java распространяются в виде байт-кода, поэтому для их выполнения необходимо установить виртуальную Java-машину. При этом для ускорения работы часто используется JIT-компиляция (англ. JIT — just-in-time — в это самое время), при которой байт-код «на лету» преобразуется в команды конкретного процессора. Тогда при повторном выполнении команды трансляция уже не нужна.

Аналогичный подход применяется в среде .NET, которую разработала фирма Microsoft. Одна из основных идей среды .NET — объединение программ, написанных на разных языках. В частности, разные части программы могут быть написаны на С#, J#, VB.NET, Delphi.NET, все они в конечном счёте транслируются в байт-код на промежуточном языке IL (англ. Intermediate Language), который потом выполняется виртуальной машиной.

Следующая страница Состав системы программирования



Cкачать материалы урока







Наверх