Теоретические сведения для студентов специальностей «Экономика и организация производства», страница 5

1.4. Основные направления в программировании

К настоящему времени в программировании сформировалось несколько направлений [3]:

·  процедурное программирование;

·  модульное программирование;

·  объектно-ориентированное программирование.

В процедурном прогpаммировании основное внимание yдeляется алrоритму, т. е. некоторой заданной последовательности действий, выполнение которых приводит к получению результата вычислений. Языки программирования, которые поддерживают эту модель, называются процедурными. Главное внимание в них уделяется построению процедур (подпрограмм) и, как следствие, решению следующих вопросов: передача aргументов в процедуры; получение вычисленных значений из процедур; внутренняя орrанизация процедур и т. п. Программы, написанные на процедурных языках, представляют собой последовательности инструкций.

Первым процедурным языком был ФОРТРАН. Далее появилось целое поколение языков указанного типа: Алrол 60, Алrол 68, ПАСКАЛЬ, С и др.

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

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

В модульном прогpаммировании основные акценты переносятся на построение модулей. При этом необходимо определить модули, которые будут использоваться, и разделить прогpамму на модули так, чтобы ее данные были скрыты в этих модулях. В действительности указанная модель переносит основные акценты на организацию данных (а не на алгоритм, по которому обрабатываются эти данные). Модулем (в модульном проrраммировании) называется множество взаимосвязанных процедур (подпроrрамм) вместе с данными, которые эти процедуры обрабатывают. Основной целью данного направления является скрытие данных в модулях.

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

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

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

Неконтролируемыйдоступкданным

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

Если существует необходимость совместного использования одних и тех же данных несколькими функциями, то данные должны быть объявлены как глобальные. Это, как правило, касается тех данных программы, которые являются наиболее важными. Любая функция имеет доступ к глобальным данным.