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


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

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

5 77

5 ответов:

Императив

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

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

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

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

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

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

  • Java

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

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

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

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

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

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

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

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

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

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

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

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

Процедурные вопросы:

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

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

    Принесите мне чашку чая.

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

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

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

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

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

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

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

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