Императивное и декларативное программирование
От: Oyster Украина https://github.com/devoyster
Дата: 06.06.05 06:33
Оценка: 16 (2) +2
#Имя: FAQ.declprog.defines
Здравствуйте, Adopt, Вы писали:

A>Что такое Декларативное программирование?

A>В чем различие от ООП допустим или от функционального?

Попробую ответить... хотя плохо во всём этом разбираюсь

Есть программирование императивное и программирование декларативное. В императивном программировании программа представлена в виде набора действий, которые должны быть выполнены (т.е. эдакий ассемблер высокого уровня). Т.е. код описывает решение задачи. Типичные представители императивных языков — C, Pascal, BASIC.

В идеале декларативного программировании код описывает саму задачу (а не один из способов её решения, как в императивном). Например, атрибуты в C# — это элемент декларативного программирования. Применяя к методу атрибут DllImport[], мы декларируем тот факт, что должна быть использована библиотечная функция, а в какой машинный код это в итоге превратится — нас не волнует. Представители декларативных языков: Lisp, ML, Prolog, Haskell...

Часто декларативные языки содержат элементы императивных (OCaml, например) и наоборот (всё тот же C#).

Вот так вот... может, немного расплывчато — но как смог.

А ООП — это вообще методика, т.е. нечто из другой оперы. Принципы ООП можно использовать как в императивном (C++, Java, Object Pascal), так и в декларативном (OCaml, Haskell [imho то, что есть в Хаскеле, тоже имеет отношение к ООП]) программировании.

PS: функциональное программирование — это подвид декларативного (как и логическое). Т.е. Haskell — это чисто функциональный язык декларативного программирования

PPS: ссылок не подкину, но в форуме должны быть.
http://rsdn.org/File/27948/bf.gif
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.