Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
т5_л18_Язык_програмир_РГУ.doc
Скачиваний:
14
Добавлен:
24.03.2015
Размер:
103.42 Кб
Скачать

1. Понятие языка программирования

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

Языки программирования – это формальные языки специально созданные для общения человека с компьютером. Каждый язык программирования, равно как и "естественный" язык (русский, английский и т. д.), имеет алфавит, словарный запас, свои грамматику и синтаксис, а также семантику. Алфавит языка программирования представляет собой фиксированный для данного языка набор основных символов, допус­каемых для составления текста программы на этом языке, синтаксис – это система правил, определяющих допустимые конструкции языка программирования из букв алфавита, семантика – система правил однозначного толкования отдельных языковых конструкций, позволяющих воспроизвести процесс обработки данных.

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

Рассмотрим некоторые основные понятия, общие для большинства языков программирования.

Оператор – одно из ведущих понятий всех языков программирования. Каждый оператор представляет собой законченную фразу языка и определяет однозначно трактуемый этап обработки данных.

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

Любая величина характеризуется типом, именем и значением. Наиболее распространенные типы величин – числовые (целые и вещественные), символьные, логические.

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

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

Модуль – это специальная программная единица, предназначенная для создания библиотек и разделения больших программ на логически связанные блоки.

Язык программирования составляет ядро системы программирования. Существующие языки про­граммирования можно разделить на две группы: процедурные и непроцедурные (рис.1).

Рисунок 1 – Общая классификация языков программирования

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

Процедурные языки программирования разделяют на языки низкого и высокого уровня.

Каждый процессор имеет систему команд – совокупность машинных кодов, которые он понимает и может исполнять. Если язык программирования ориентирован на конкретный тип процессора и учитывает его особенности, то он называется языком программирования низкого уровня (машинно-ориентированным). Это вовсе не означает, что он "плохой". Имеется в виду, что операторы языка близки к машинному коду и ориентированы на конкретные команды процессора. Языком программирования самого низкого уровня является язык ассемблера. Языки программирования низкого уровня позволяют создавать про­граммы из машинных кодов, обычно в шестнадцатеричной форме. С ними трудно работать, но созданные с их помощью высококвалифицированным программистом программы занимают меньше места в памяти и работают быстрее. С помощью этих языков удобнее разрабатывать системные программы, драйверы, некоторые другие виды программ. Поскольку наборы инструкций для каждого типа процессора отличаются, конкретной компьютерной архитектуре соответствует свой язык программирования низкого уровня, и написанная на нем программа может быть использована только в этой среде.

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

Во-первых, машинная программа, в конечном счете, записывается с помощью лишь двух симво­лов: 0 и 1. Во-вторых, каждая ЭВМ имеет ограниченный набор машинных операций, ориентированных на структуру процессора. Как правило, этот набор состоит из сравнительно небольшого числа простейших операций, типа: переслать число в ячейку; считать число из ячейки; увеличить содержимое ячейки на +1 и т. п. Коман­да на машинном языке содержит очень ограниченный объем информации, поэтому она обычно определяет простейший обмен содержимого ячеек памяти, элементар­ные арифметические и логические операции.

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

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

– набор операций, допустимых для использования, не зависит от набора машин­ных операций, а выбирается из соображений удобства формулирования алгоритмов решения задач определенного класса;

– конструкции команд (операторов) отражают содержательные виды обработки данных и задаются в удобном для человека виде;

– используется аппарат переменных и действия с ними;

– поддерживается широкий набор типов данных.

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

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

Языки программирования высокого уровня являются алгоритмическими языками. Алгоритмический язык – это набор символов и терминов, которые в соответствии с правилами синтаксиса описывают алгоритм решения задачи. Своими конструкциями и правилами написания этот язык, с одной стороны, близок к математическому описанию задачи, а с другой стороны – содержит такие выражения, которые близки к естественному языку, чаще всего к английскому.

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

Сформулируем выводы по первому учебному вопросу:

  1. Основное назначение языков программирования – облегчить процесс алгоритмизации вычислительного процесса на языке, понятном процессору ПЭВМ.

  2. Различают языки программирования низкого (например, язык ассемблера) и высокого (алгоритмические языки) уровней.