Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Паскаль / okulov / okulov / chapter1.DOC
Скачиваний:
37
Добавлен:
10.12.2013
Размер:
559.62 Кб
Скачать

1.2. Парадигмы программирования

Стиль - это отражение мышления.

Шопенгауэр А.

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

Примечание.У Йодана Э.[10] приводится следующая притча о классике программирования Э. Дейкстре (элемент фольклора в computer science). Известно, что Э. Дейкстра был мало заинтересован в приеме на старшие курсы университета, где он работал, студентов со знанием Фортрана по той причине, что вместе с этим знанием могли привиться дурные привычки программирования. От него пошло также высказывание, что если знание Фортрана можно сравнить с младенческим расстройством, то уж ПЛ/1 - определенно роковая болезнь. Язык программирования ПЛ/1 ушел в прошлое, сегодня, видимо, о Бейсике можно говорить как о таком типе болезни.

Операциональное программирование(языки программирования типа ассемблеров, Бейсика, Фортрана). Программа «собирается» из мелких деталей, отдельных операций и имеет достаточно простую структуру: область глобальных данных и подпрограммы. Уровень абстрагирования - отдельное действие, принципы декомпозиции задачи отсутствуют, во всяком случае, о них не говорят.

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

  • формализованное и строгое описание программистом входов функций и выходов всех модулей программы и системы;

  • согласованная разработка структур данных и алгоритмов;

  • ограничение на размер модулей.

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

Структурное программирование (языки программирования Паскаль, Модула-2). Профессор Э. Дейкстра был первым инициатором структурного программирования. В 1965 г. он высказал предположение о том, что операторGO TOмог бы быть исключен из языков программирования. Разумеется, структурное программирование представляет собой нечто большее, чем один лишь отказ от оператораGO TO.Структурное программирование - это некоторые принципы написания программ. Теоретическими основаниями структурного программирования являются:

  • формальные системы теории вычислимости (общие рекурсивные функции, системы Поста, алгоритмы Маркова, лямбда исчисление Чёрча);

  • анализ программ по нисходящей схеме, декомпозиция, основанная на разбивке задач по уровням 0, 1, ..., k.В классической работе Бома и Джакопини[22]показано, что такая структура (иерархическая, разбитая на уровни) может быть реализована в языке, включающем только две управляющие конструкции.

    Работа [22]имеет фундаментальное значение. По Бому и Джакопини для реализации программ требуется три основных составляющих блока:

  • функциональный блок (или конструкция следования);

  • конструкция обобщенного цикла;

  • конструкция принятия двоичного или дихотомического решения.

Пример неструктурированной программы.

Характерные черты структурного стиля программирования:

Соседние файлы в папке okulov