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

13. Основные парадигмы языков программирования.

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

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

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

парадигму [2];

– удобство в использовании на этапе проектирования;

– эффективность поддержки процессов разработки больших программных средств;

– генерация эффективного выходного представления;

– эффективное выполнение полученной программы.

Особенности реализации описываемых интеграционных подходов вытекают из

специфики четырех упомянутых парадигм программирования. Рассмотрим их более

подробно.

Процедурное (структурное, директивное) программирование. В 1960–1970-х годах

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

При построении алгоритма используется пять базовых алгоритмических структур:

следование, ветвление, цикл, рекурсия и подпрограмма.

Следование – это однозначная (линейка) последовательных действий.

Ветвление – разделение алгоритма на два пути (две ветви) по некоторому условию с

дальнейшим выходом на общее продолжение.

Цикл – повторение некоторой группы действий по условию.

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

Подпрограмма – повторяющаяся часть, совокупность действий, выделенная в отдельно описанный алгоритм.

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

– простота в составлении программ (студентам необходимо знать только три базовые

структуры – следование, ветвление, цикл);

– возможность разбиения на части (большую программу могут писать одновременно

несколько исполнителей);

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

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

характерных учебному процессу в вузах.

Объектно-ориентированное программирование. В этой парадигме первичными

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

В настоящее время объектно-ориентированное программирование является наиболее популярной технологией программирования. К этой группе относятся языки Visual Basic, Jawa, Object Pascal и Си++

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

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

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

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

современные методологии разработки программного обеспечения. Объектно-ориентированные языки применяются для разработки операционных систем, трансляторов, баз данных, других прикладных и системных программ.

Можно выделить основные преимущества объектно-ориентированного под-хода к разработке алгоритмов и программ, в числе которых:

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

– полиморфизм – возможность работать с объектами, абстрагируясь от их класса;

– возможность описания методов класса на любом языке программирования;

– инкапсуляция – структура объекта включает в себя как данные, так и методы работы с

ним.

Логическое программирование.

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

– программа, построенная на основе логического подхода, не является алгоритмом, а

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

– данный подход наиболее удобен для решения логических задач;

– логическое программирование требует особого стиля мышления программиста

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

Функциональное программирование. Функциональное программирование возникло в

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

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

также имеет свои особенности и преимущества, в частности:

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

обрабатывать данные в символьной форме в виде списков;

– функциональные программы могут обрабатывать и преобразовывать другие программы

и даже самих себя.

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

Подводя итоги описания различных парадигм программирования, следует отметить, что в течение многих лет программное обеспечение строилось на основе алгоритмических и структурных языков, таких как Фортран, Бейсик, Паскаль. Классическое алгоритмическое или процедурное программирование требует от программиста детального описания того, как решать задачу, т. е. формулировки алгоритма и его специальной записи. Принципиально иное направление в программировании связано с парадигмами непроцедурного программирования. К ним можно отнести объектно-ориентированное, логическое и функциональное программирование. Объектно-ориентированный язык создает окружение в виде множества независимых объектов. При использовании непроцедурных языков программист указывает исходные информационные структуры, взаимосвязи между ними, и то, какими свойствами должен обладать результат. По всей видимости, непроцедурные языки имеют большое будущее.