Модераторы: Се ля ви
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> К вопросу о парадигмах программирования... ...совсем запутался... 
:(
    Опции темы
kemiisto
  Дата 2.11.2008, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: 1
Всего: 160



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

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

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

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

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

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

Теперь по поводу процедурное / структурное. Если я правильно понял, процедурное программирование основано на концепции вызова подпрограмм (процедур). И оно не есть структурное. Чтоб оно стало структурным, надо добавить пункты 1 и 3 из нижеследующих:
Цитата

1. Любая программа представляет собой структуру, построенную из трёх типов базовых конструкций:


  • последовательное исполнение — однократное выполнение операций в том порядке, в котором они записаны в тексте программы;


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


  • цикл — многократное исполнение одной и той же операции до тех пор, пока выполняется некоторое заданное условие (условие продолжения цикла).

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

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

3. Разработка программы ведётся пошагово, методом «сверху вниз».

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

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


Чёрт меня дёрнул зайти в народную энциклопедию. В статье с говорящим названием "Парадигма программирования" написано следующее:
Цитата

Основные модели программирования
    * Императивное программирование
    * Функциональное программирование
    * Логическое программирование
    * Объектно-ориентированное программирование
          o Программирование, основанное на классах
          o Программирование, основанное на прототипах

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

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

 smile  smile  smile 

P.S. Долго искал, где б "пришвартовать" тему. Раздела с названием типа "Общие вопросы по программированию" не нашёл...

Это сообщение отредактировал(а) kemiisto - 2.11.2008, 01:27


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Фантом
Дата 6.11.2008, 02:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вы это прекратите!
***


Профиль
Группа: Участник Клуба
Сообщений: 1516
Регистрация: 23.3.2008

Репутация: 0
Всего: 49



В первой цитате все правильно, императивное программирование - это явное описание алгоритма решения задачи в том или ином виде. Соответственно, и процедурное программирование, и структурное программирование, и ООП - частные случаи императивного.

Правда, справедливости ради стоит отметить, что "чистых" императивных или декларативных языков сейчас фактически нет. Почти всегда декларативные языки допускают использование императивных парадигм, а императивные нередко имеют некоторые "декларативноподобные" возможности. 
PM   Вверх
Qawra
Дата 20.11.2008, 20:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 188
Регистрация: 6.3.2007

Репутация: нет
Всего: 4



нас  учили что Haskell   это функциональный язык программирования  принадлежащий  к декларативной парадигме .Потому что в нём "functions  relate their output to their input without defining a strict order to evaluate any operations "
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила раздела "Философия программирования":
Се ля ви

Форум "Философия программирования" предназначен для обсуждения вопросов, так или иначе связанных с философскими аспектами разработки ПО:

• вопросы перспективного развития методов написания ПО;

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


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Се ля ви.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Философия программирования | Следующая тема »


 




[ Время генерации скрипта: 0.0735 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.