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

Итак, есть такое красивое греческое слово: парадигма (παράδειγμα). Среди прочих у этого термина есть и такое значение:
> -- Цитата:
> Парадигма - совокупность ценностей, методов, технических навыков и средств, принятых в научном сообществе в рамках устоявшейся научной традиции в определенный период времени.

Парадигма одновременно как бы одновременно определяет и модель постановки проблемы, и методы её решения.

Естественно, что существуют парадигмы и в программировании. Парадигма программирования определяет то, как программист видит выполнение программы. Если я правильно понял существует 2 крупных парадигмы программирования: императивная и декларативная. Соответственно, существуют 2 крупных группы языков программирования: императивные и декларативные.

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

1) Вообще как, похоже на правду?

Теперь по поводу процедурное / структурное. Если я правильно понял, процедурное программирование основано на концепции вызова подпрограмм (процедур). И оно не есть структурное. Чтоб оно стало структурным, надо добавить пункты 1 и 3 из нижеследующих:
> -- Цитата:
> 1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:    * последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;    * ветвление — однократное выполнение одной из двух или более операций, в зависимости от выполнения некоторого заданного условия;    * цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).В программе базовые конструкции могут быть вложены друг в друга произвольным образом, но никаких других средств управления последовательностью выполнения операций не предусматривается.2. Повторяющиеся фрагменты программы (либо не повторяющиеся, но представляющие собой логически целостные вычислительные блоки) могут оформляться в виде т. н. подпрограмм (процедур или функций). В этом случае в тексте основной программы, вместо помещённого в подпрограмму фрагмента, вставляется инструкция вызова подпрограммы. При выполнении такой инструкции выполняется вызванная подпрограмма, после чего исполнение программы продолжается с инструкции, следующей за командой вызова подпрограммы.3. Разработка программы ведётся пошагово, методом «сверху вниз».

2) Как соотносятся между собой структурное и процедурное программирование?

3) Как будет правильно: императивное программирование (помимо ООП) включает

* процедурное;
* структурное;
* и то и другое?

Чёрт меня дёрнул зайти в народную энциклопедию. В статье с говорящим названием "Парадигма программирования" написано следующее:
> -- Цитата:
> Основные модели программирования    * Императивное программирование    * Функциональное программирование    * Логическое программирование    * Объектно-ориентированное программирование          o Программирование, основанное на классах          o Программирование, основанное на прототипах

4) Т.е. ООП - НЕимперативное программирование?Странно, по сравнению с процедурным программированием поменялясь только модель организации данных, модель вычислений осталась прежней.

5) Но, что тогда входит в императивное программирование? Только процедурное и / или структурное?

P.S. Если я совсем далёк от истины и всё не так понял, просьба - сильно не пинать.