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

  • 09 апр. 2012 г.
  • 3185 Слова
ПАРАДИГМЫ ПРОГРАММИРОВАНИЯ. ЯЗЫКИ ПРОГРАММИРОВАНИЯ

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

Язык программирования (Programming Language) - это алфавит, грамматика и синтаксис, используемые для построения набора инструкций, заставляющих компьютер выполнять те или иные действия.

Можно выделить две большие группы языков программирования, отражающих разные парадигмы программирования:• директивные (directive), называемые также процедурными (procedural) или императивными (imperative),

• декларативные (declarative) языки.

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

Поясним это на следующем примере.Предположим, вам надо пройти в городе из пункта А в пункт Б. Декларативная программа - это план города, в котором указаны оба пункта, плюс правила уличного движения. Руководствуясь этими правилами и планом города, курьер сам найдет путь от пункта А к пункту Б.

Директивная программа - это список команд примерно такого рода: от пункта А по ул. Садовой на север до площади Славы, оттуда по ул. Пушкина дваквартала, потом повернуть направо и идти до Театрального переулка, по этому переулку налево по правой стороне до дома 20, который и есть пункт Б.

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

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

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




Декларативное программирование


Наиболее существенными классами декларативных языков являются функциональные (functional) языки, например, Lisp (Лисп), и логические (logic) языки, например, Prolog (Пролог).

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

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