Язык программирования предназначен для описания данных и алгоритмов их обработки на вычислительной машине. Языки программирования занимают промежуточное положение между естественными и формализованными языками. С естественными языками языки программирования роднит грамматический строй (употребление слов естественного языка, фразовая структура и т. п.), с формализованными языками – символы и понятия, а главное – строгие, точно описанные правила построения текстов.
Язык программирования – это формализованный язык, предназначенный для описания программ и алгоритмов решения на компьютере.
Существуют различные способы задания инструкций компьютеру, заставляющие его выполнять необходимые вычисления. В одних случаях достаточно полностью описать алгоритм на формальном языке, в других приходится управлять более сложными деталями реализации программы: выделять память, следить за состоянием регистров процессора. Сложность, гибкость и скорость выполнения программ, как и потребление ресурсов компьютера, зависят от языка программирования, выбранного программистом. Но в любом случае результатом работы программиста является компьютерная программа.
Компьютерная программа – это последовательность инструкций на машинно-ориентированном языке, предназначенных для вычисления центральным процессором вычислительной машины.
Часто компьютерной программой называют исходный код, написанный на одном из языков программирования. Компьютерную программу принято считать результатом программирования.
Программирование – это совокупность процессов связанных с разработкой программ и их реализацией.
В широком смысле к указанным процессам относят все технические операции, необходимые для создания программ, включая анализ требований, а также все стадии разработки и реализации в виде готового программного продукта.
Достаточно схематично процесс программирования представлен на рис. 11.1.
На рисунке показан приблизительный порядок действий при программировании. Программирование заключается в написании текста (исходного кода) программы на выбранном языке программирования.
Рис. 11.1. Схематичное описание процесса программирования
Исходный код – текст компьютерной программы, написанный на выбранном языке программирования.’
Исходный код преобразуется транслятором (специальной программой) в объектный модуль, который хранится на диске.
Транслятор – программа осуществляющая трансляцию (перевод) компьютерной программы с. языка программирования в программу на машинном коде с сохранением эквивалентности.
Для выполнения программы должен быть определенным образом подготовлен объектный модуль – определены адрес его загрузки в оперативную память и адреса связи с другими объектными модулями. Затем загружается объектный модуль в оперативную память.
Объектный модуль – последовательность инструкции машинного кода, являющаяся результатом работы компилятора.
Машинный код – язык конкретной вычислительном машины (центрального процессора), инструкции которого выполняются непосредственно центральным процессором или его микропрограммами.
Исполняемый код – объединенные в загружаемую программу модули объектного кода.
Объединение модулей объектного кода в единую исполняемую программу является результатом работы компоновщика.
Процесс трансляции состоит из нескольких этапов.
1. Производится лексический анализ текста с разбиением его на элементы-лексемы (ключевые слова, имена-идентификаторы и т. д.).
2. Производится синтаксический разбор, то есть проверка правильности и допустимости созданных на основе лексем конструкций языка.
3. Исходный код преобразуется в исполняемый машинный код.
Это описание процесса трансляции подводит нас к понятиям, связанным с языками программирования – синтаксису и семантике языка.
Синтаксис искусственных и естественных языков определяет, какие конструкции из допустимых лексем являются правильными для данного языка.
Пример. Рассмотрим предложение: «Это кошка страус зеленая». В этом примере все используемые в предложении слова и символы допустимы для русского языка, но вместе они составляют недопустимую конструкцию.
Синтаксис языка программирования – это описание языка программирования, , определяющее вид, форму и структуру конструкций языка.
Формализация описания языка программирования нужна для создания математической или логической модели работы транслятора, то есть те правила, на основании которых транслятор будет производить синтаксический разбор. Одним из известных способов формального описания синтаксиса языка является метаязык – формы Бэкуса-Наура. Задание синтаксиса языка программирования сводится к перечислению всех его допустимых конструкций.
Таким образом синтаксис связан только с перечислением всех конструкций языка, которые могут быть преобразованы транслятором в машинный код. Смысловая же составляющая языка программирования описывается понятием семантики.
Пример. Рассмотрим предложение: «Зеленая кошка – это страус». Этот пример проходит синтаксическую проверку, поскольку предложение построено правильно, но с семантической точки зрения он лишен смысла.
Семантика языка программирования – это интерпретация абстрактного синтаксиса в терминах модели.
Семантические модели для языков программирования могут быть операционными (моделируется выполнение на абстрактной вычислительной машине), деривационными (модель описывается языком логических выражений) и денотационными (модель описывается понятиями, близкими к математическим, такими как множества, утверждения, суждения).
Синтаксические и семантические способы описания языков программирования служат основой для создания эффективных трансляторов.