logo search
Лекции по информатике

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

Под термином «язык программирования» подразумевается совокупность символов, соглашений и правил для описания данных и алгоритмов решения задач на компьютере. Другими словами язык программирования представляет собой специальный формализованный язык для составления программ. Развитие языков программирования осуществлялось параллельно с развитием вычислительной техники, и в настоящее время существует достаточно большое количество различных языков.

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

Языки программирования можно условно разделить на следующие классы:

1. МАШИННЫЕ ЯЗЫКИ. Машинный язык представляет собой свод правил кодирования в числовом виде определенных действий и операций (машинные коды). Каждое действие, выполняемое компьютером, представляется в виде команды, которая определяет некоторую элементарную часть процесса обработки информации. В команде в общем случае должны быть указаны вид действия, место хранения в компьютере исходной информации, над которой производится машинная операция, адрес результата. Например, если операция сложения имеет код 01, то команда сложения двух чисел из ячеек с номерами 2001 и 2267 с помещением результата в ячейку 2375 выглядит следующим образом:

01 2001 2267 2375

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

Необходимо подчеркнуть, что компьютер может исполнить только про­грамму, написанную на машинном языке. Использование других языков про­граммирования требует наличия «переводчика» для перевода программы на понятный компьютеру машинный язык. Перевод программы на машинный язык выполняется самим компьютером с помощью специально созданной для используемого языка программирования программы, называемой транслятором.

2. МАШИННО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ. Первым усовершенствованием процесса программирования явилось введение символических адресов, позволившее составление команд и распределение памяти выполнять раздельно. На базе этого были созданы машинно-ориентированные языки или ассемблеры, в основу которых закладывалась система команд какой-либо конкретной электронно-вычислительной машины или определенного класса ЭВМ, что являлось основным их недостатком. Каждая команда на языке ассемблера чаще всего представляет собой одну машинную команду, записанную символическим кодом, поэтому он очень близок с машинным языком. Язык ассемблера позволяет создавать наиболее эффективные программы, однако он очень трудоемок и требует высокой квалификации программиста.

3. АЛГОРИТМИЧЕСКИЕ ЯЗЫКИ. Этот класс языков программирования возник одновременно с ЭВМ второго поколения. Алгоритмические языки целиком ориентированы на отражение структуры конкретного алгоритма и не зависят от архитектуры компьютера. К алгоритмическому языку предъявляются следующие требования:

- наглядность (использование общепринятой математической символики и других легко понимаемых средств);

- гибкость (возможность описания любого алгоритма без излишнего усложнения);

- однозначность (недопустимость различных толкований при записи любого алгоритма);

- единство (небольшое число изобразительных средств, возможность использования одних и тех же средств для отображения родственных понятий).

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

К алгоритмическим относятся такие широко применяемые языки программирования, как Паскаль, Фортран, Бейсик и другие.

4. ПРОЦЕДУРНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ. Процедурно-ориентированные языки представляют собой разновидность алгоритмических языков, у которых имеется возможность описания программы как совокупности процедур (подпрограмм).

5. ПРОБЛЕМНО-ОРИЕНТИРОВАННЫЕ ЯЗЫКИ. Проблемно-ориентированные языки так же, как и предыдущие, представляют собой разновидность алгоритмических языков, которые предназначены для решения задач определенного класса. К ним относятся такие языки как Лисп, РПГ, Симула и другие.

6. ИНТЕГРИРОВАННЫЕ СИСТЕМЫ ПРОГРАММИРОВАНИЯ. Интегрирован­ная система программирования представляет собой систему автоматизации процесса программирования, образуемую языком программирования, транслятором, а также вспомогательными средствами для подготовки программ к выполнению.

Совокупность команд на любом языке программирования, реализующая какой-либо алгоритм, называется программой на исходном языке или исходным кодом. Кроме исходного конкретная программа может иметь еще и машинный (объектный) код на машинном языке, который называется рабочей программой.

Процесс перевода программы на машинный язык (трансляция) и процесс выполнения компьютером этой программы могут сочетаться двумя способами. Первый способ, называемый компиляцией, заключается в том, что процесс выполнения программы компьютером осуществляется после того, как полностью завершится процесс перевода. Программа-компилятор переводит исходный текст в машинный код и записывает его в компьютер в форме исполняемого файла. После этого программа выполняется независимо от исходного текста.

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