В чем разница между декларативной и процедурной парадигмами программирования?

StackOverflow https://stackoverflow.com/questions/1619834

Вопрос

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

Какие еще парадигмы программирования существуют?

Это было полезно?

Решение

Императивный

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

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

Примеры языков программирования, поддерживающих процедурную парадигму:

  • C (и большинство других устаревших языков)
  • PHP, в основном
  • В некотором смысле, все основные языки

Объектно-ориентированный

Обычно это относится к языкам, которые демонстрируют иерархия типов которые наследуют как методы, так и состояния от базовых типов к производным типам, но также включают необычный JavaScript на основе прототипа.

Примеры языков программирования, поддерживающих парадигму OO:

  • Java

Декларативный

Существует несколько под-парадигм декларативной парадигмы программирования, таких как функциональная или логическая парадигмы программирования.

В парадигме декларативного программирования вы описываете результат или цель и получаете его с помощью "черный ящик".Противоположность императив.

Примеры языков программирования, поддерживающих декларативную парадигму программирования:

  • yacc
  • Верхушка дерева
  • SQL
  • Регулярные выражения
  • лекс
  • XSLT
  • разметка, troff, CSS, VHDL

Функциональный

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

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

  • Хаскелл
  • OCaml
  • Схема
  • Эрланг
  • F#
  • Скала

Другие советы

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

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

Позвольте мне привести вам реальный пример:Мне нужна чашка чая.

Процедурный:

  1. Иди на кухню
  2. Возьмите сахар, молоко и чай,
  3. Смешайте их и нагревайте на огне до закипания
  4. Налейте это в чашку и принесите мне

Декларативный:

  1. Налей мне чашку чая.

На процедурном языке вы определяете весь процесс и описываете шаги, как это сделать.Вы просто предоставляете заказы и определяете, как будет осуществляться процесс.

На декларативном языке вы просто устанавливаете команду или порядок, и пусть в системе будет указано, как выполнить этот порядок.Вам просто нужен ваш результат, не вникая в то, как это должно быть сделано.

Процедурное программирование:

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

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

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

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

Как видно из примера, в декларативном подходе вам не нужно указывать, КАК решить проблему.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top