Лекция №22
Компьютерные программы создаются программистами при помощи так называемых систем программирования. Каждая из таких систем программирования состоят из 2-х частей:
1. языка программирования – набора формальных правил, который предназначен для описания процесса обработки информации на некотором виртуальном (условном, гипотетическом, и т.д.) компьютере, и
2. интегрированной среды разработки (IDE – Integrated Development Environment, среда программирования, транслятор) – набора программ, предназначенных для перевода (трансляции) команд языка программирования в машинные команды вполне конкретного процессора.
Таким образом, язык программирования – это средством, с помощью которого программирование ведется на некоторую идеализированную (гипотетическую, виртуальную) вычислительную машину, спроектированную, невзирая на ограничения современных компьютеров, но, учитывая традиционные способы и умения человека выражать свои мысли. В результате, в такой ситуации появляется две машины:
1. реальная машина, создание которой экономически оправдано, но которая не удобна в использовании, и
2. виртуальная машина, которая вполне согласуется с человеческими нуждами, но «существует только на бумаге».
Роль моста через пропасть, которая разделяет эти два компьютера, играют трансляторы. Транслятор – это программа для реальной машины, которая дает ей возможность переводить (транслировать) программы, написанные для виртуальной машины, в её собственные программы. Она позволяет реальной машине выступать в роли виртуальной, идеализированной машины. Применение транслятора, таким образом, освобождает программиста от необходимости рассматривать частные характеристики реального компьютера. Но транслятор не освобождает его от обязанности постоянно учитывать тот факт, что в конечном итоге именно реальная машина будет выполнять его программу, и что она имеет определенные ограничения.
Любой язык программирования состоит из 2-х типов инструкций (операторов, команд, предложений и т.д.), которые служат для описания:
1. данных, участвующих в процессе обработки, и
2. алгоритмом – наборов формальных правил, в соответствии с которыми эти данные обрабатываются.
Схематически процесс создания компьютерных программ можно представить следующим образом:
Он ничем принципиально не отличается от процесса приготовления пищи. То есть, для того, чтобы приготовить пищу (например, украинский борщ) необходимо иметь:
1. продукты – или исходные данные, применительно к компьютерным программам,
2. рецепт приготовления блюда – алгоритм обработки данных, и
3. кухонный инвентарь (кастрюли, ножи, кухонный комбайн и т.д.) – т.е. интегрированную среду разработки (транслятор).
Процесс трансляции (перевода) программы с языка программирования в машинные команды совершенно аналогичен процессу перевода с одного естественного языка на другой. При этом существует два вида переводов:
1. синхронный, и
2. литературный.
При синхронном переводе переводчик немедленно переводит каждую фразу, как только её услышит. При литературном переводе он может несколько раз прочитать исходный документ, внимательно его изучить, воспользоваться необходимыми словарями, и лишь затем – подготовить выходной документ на другом языке. Понятно, что качество литературного перевода заметно выше качества синхронного перевода, но им не всегда можно воспользоваться. Так, например, во время международных переговоров или во время демонстрации недублированных фильмов используется синхронный перевод, хотя с литературной точки зрения он не всегда является качественным.
Трансляция (перевод) компьютерных программ с языка программирования в машинные команды также выполняется двумя различными способами. Это:
1. компиляция – аналог литературного перевода, и
2. интерпретация – аналог синхронного перевода.
Программа-компилятор работает также как и литературный переводчик. Сначала она несколько раз внимательно просматривает исходный текст программы, потом обращается к необходимым справочникам (которые в программировании называются библиотеками) и лишь затем, выдаёт готовую программу в машинных кодах конкретного компьютера – так называемый загрузочный (выполняемый, исполняемый или рабочий) модуль. Созданная таким образом программа (файл с расширением .EXE) вдальнейшем может независимо и параллельно с другими программами существовать на компьютере.
Работа программы-интерпретатора похожа на работу синхронного переводчика. Он читает исходный текст программы инструкция за инструкцией, переводит их в машинные команды и тут же передаёт процессору на выполнение. Исполнив таким образом одну инструкцию программы, он переходит к другой, и так далее. То есть, программа, написанная программистом, на компьютере выполняется под управлением интерпретатора.
Каждый из этих способов трансляции имеет как свои достоинства, так и вполне определённые недостатка:
1. Интерпретируемые программы выполняются в сотни раз медленнее, чем откомпилированные – это расплата за посредничество «синхронного переводчика», в роли которого выступает интерпретатор. Однажды же откомпилированная программа в дальнейшем не требует присутствия программы-компилятора, и компьютеру больше не нужно «исхитряться», чтобы одновременно и транслировать, и выполнять программу.
2. Внесение изменений в интерпретируемые программы выполняется гораздо проще и быстрее, чем в компилируемые, поскольку не требует их повторной перекомпиляции. Интерпретируемые программы после внесения в них изменений можно сразу запускать на выполнение.
3. При выполнении программы под управлением интерпретатора имеется возможность контролировать абсолютно все осуществляемые действия, что повышает устойчивость и надёжность работы не только конкретной программы, но и всей вычислительной системы в целом. Так при определённых условиях (а не вообще) программа-интерпретатор может либо запретить, либо, наоборот, разрешить выполнение конкретной программой вполне определённых действий – например, проверить право использования некоторого ресурса.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.