Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 1 Характеристики ЯП.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
329.73 Кб
Скачать

Процедурная (директивная) парадигма

Эта парадигма является самой "древней" и, одновременно, - самой простой в реализации и обучении программирования. На основе этой парадигмы изучаются языки программирования в школе.

Некоторые представители: Fortran, Pascal, C.

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

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

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

История возникновения парадигмы

"Истоки" процедурной парадигмы программирования лежат в далеких 50-х годах прошлого века.

Напомним, принципы фон Неймана, которые легли в основу архитектуры первых ЭВМ, таковы:

  • Во-первых, ее основные блоки - устройство управления, арифметико-логическое устройство и устройство ввода-вывода.

  • Во-вторых, программы и данные хранятся в одной и той же памяти.

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

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

В 1957 году Бэкус разработал первый язык высокого уровня: ФОРТРАН. Эта аббревиатура переводится как: "FORmula TRANslator", - переводчик формул. Как следует из его названия, его назначение - это числовые вычисления. С помощью этого языка можно было "кодировать" численные алгоритмы, не вдаваясь в архитектуру ЭВМ, количество регистров в ее процессоре, особенности ее функционирования, и другие, "не важные" для прикладного программиста вопросы. Вскоре, в начале 60-х годов прошлого века, появился язык: "COBOL", - язык, предназначенный для коммерческих вычислений. Аббревиатура "COBOL" расшифровывается как: "COmmon Business Oriented Language" - "язык, ориентированный на общий бизнес".

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

Таким образом, возникла "процедурная парадигма", гласящая:

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

Эта парадигма проста не только в "написании" алгоритма, но и его отладке: нужно убедиться в "работоспособности" каждого из модулей, что намного проще, чем отладка всего алгоритма целиком.

Языки, поддерживающие парадигму

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

  • Ассемблер;

  • Фортран;

  • Кобол;

  • Алгол;

  • PL 1;

  • Бейсик;

  • Си;

  • Паскаль;

  • Perl;

  • VB Script;

  • Jscript;

  • Multi Edit Macro Script;

  • MS-DOS Command Shell;

  • NDOS Shell;

  • Bash shell;

  • tc shell;

  • REXX;

  • язык SQL-запросов;

  • и др.

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

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

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

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