Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорный конспект по программированию (наиболее....doc
Скачиваний:
28
Добавлен:
27.10.2018
Размер:
2.51 Mб
Скачать
      1. Парадигмы современного программирования

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

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

Таблица 2.3. Основные парадигмы программирования

Название парадигмы

Способ декомпозиции

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

Директивная

(синоним - процедурная)

Подпрограммы, абстрактные типы данных

Fortran, C, Pascal, Basic

Декларативная

(составные части: логическая и функциональная)

Цели, выраженные в терминах исчисления предикатов. Правила "если - то"

Lisp, Scheme, Prolog, ML, Haskell

Объектно-ориентированная

Классы и объекты

Java, C++, Ruby

Программирование в ограничениях

Инвариантные отношения, система ограничений

языки CLP(X), SETL, Prolog III

Сценарная

Элементарный сценарий обработки или управления

Perl, PHP, Pyton, ASP

 

Следование определенной парадигме существенно влияет на технологический подход к решению задач в практике программирования. Выбор и использование в течение долгого времени какой-то одной парадигмы накладывает определенный отпечаток на мышление программиста и бывает сложно разорвать круг устоявшихся «штампов» при необходимости решения нестандартных задач.

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

Развитие различных парадигм программирования проходило параллельно друг другу. Долгое время директивный подход был главенствующим, в 70-е, 80-е годы акцент сместился в сторону исследования неклассических парадигм, 90-е годы ознаменованы бурным развитием объектно-ориентированной парадигмы и внедрением ее элементов в другие. Развитие языков программирования с точки зрения различных парадигм представлено на рис.2.1.

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

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

  2. Декларативная парадигма

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

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

  3. Объектно-ориентированное программирование (ООП) – это результат естественной эволюции более ранних методологий программирования. Задача представляется совокупностью объектов, относящихся к определенным ранее классам, которые реализуются как переменные с набором полей данных и методов, работающих с этими полями. ООП – это моделирование объектов посредством иерархически связанных классов. Все объекты являются представителями, или экземплярами, классов. Классы представляются в виде иерархической древовидной структуры: в корне дерева классы с более общими свойствами, в ветвях специализированные классы и экземпляры. В основе объектно-ориентированного программирования лежат три основных понятия: инкапсуляция (сокрытие данных в классе или методе); наследование; полиморфизм. Инкапсуляция – это защитная оболочка вокруг объекта, которая задает поведение объекта и защищает его код от произвольного доступа извне. Наследование – это процесс, в результате которого один тип наследует свойства другого типа. Полиморфизм – это концепция, позволяющая иметь различные реализации для одного и того же метода, которые будут выбираться в зависимости от типа объекта, переданного методу при вызове.

  4. Программирование в ограничениях новое направление в декларативном программировании. Появилось в 80-х годах XX века как результат развития систем символьных вычислений, искусственного интеллекта и исследования операций. Основная идея: определяется множество переменных и задаются ограничения, которым они должны удовлетворять, а система находит подходящие значения. Программирование в таких системах называют логическим программированием в ограничениях (Constraint Logic Programming или CLP), а большинство языков или библиотек называются CLP(X), где X указывает на класс решаемых задач. Исполнение программы рассматривается не как доказательство утверждения, а нахождение значений переменных.  

  5. Сценарные языки, или языки скриптов (scripting languages), за последние годы сделали огромный шаг вперед. Они имеют длительную историю развития и являются преемниками языка LISP. К первым сценарным языкам относят встроенные средства управления командной оболочки операционной системой. Командный файл на языке операционной системы представляет собой управляющий сценарий, который выполняет заданную последовательность действий. В настоящее время популярность сценарных языков связана с развитием Интернет-технологий. Скриптовые языки используются для создания динамических интерактивных Web-станиц, содержание которых модифицируется в зависимости от действий пользователя и состояния остальных страниц и данных. Отличительной особенностью скриптовых языков является формирование программы на некотором внешнем языке как результата выполнения сценария. Сценарная парадигма предполагает разбиение задачи на отдельные части, каждая из которых решается специализированными программными средствами, сценарий выступает в роли «диспетчера», ответственного за организацию их взаимодействия. Сценарные языки для Web-разработки в основном созданы в 90-е годы XX века и включают в себя элементы различных парадигм программирования: от директивной до объектно-ориентированной. Среди наиболее мощных и популярных скриптовых систем можно отметить следующие: Perl, Pyton, PHP, ASP. Синтаксис и семантика различных сценарных языков похожи, что обусловлено влиянием языков С и С++ на сообщество программистов.