Я полностью согласен с замечанием Бартломея Шипелова. Тем не менее, я постараюсь ответить на ваш вопрос.
Декларативный язык всегда зависит от императивного языка, чтобы он работал. Возьмем, к примеру, такую простую вещь, как арифметика. Когда мы запрашиваем результат 1+1
, нам сначала нужно знать, как следует понимать 1
и как в этом контексте может быть вычислен оператор +
, прежде чем можно будет интерпретировать оператор в целом. Это один из способов преодоления сложности; вам не нужно знать, как выполняется операция «плюс», чтобы использовать ее.
Из http://en.wikipedia.org/wiki/Imperative_programming:
Процедурное программирование можно считать шагом к декларативному программированию. Программист часто может сказать, просто глядя на имена, аргументы и типы возвращаемых процедур (и связанные с ними комментарии), что должна делать конкретная процедура, не обязательно обращая внимание на детали того, как она достигает своего результата. В то же время полная программа по-прежнему необходима, поскольку она в значительной степени «фиксирует» выполняемые операторы и порядок их выполнения.
То же самое применимо в любом домене. Если вы попросите бортпроводника reschedule
ваш flight
, она знает, что такое рейс и пассажир и как reschedule
один. Поэтому создание полностью декларативной модели предметной области планирования полетов без описания того, как работает планирование, невозможно. Поскольку все модели предметной области содержат операции / поведение, поэтому в равной степени невозможно создать модель предметной области на декларативном языке, если только ваша проблемная область не является уникальной, например, когда у вас есть три летные компании, которые работают аналогичным образом.
Вернемся к тому, почему ... вы сказали:
На самом деле, гипотетическая причина, по которой на самом деле, состоит в том, чтобы позволить некодерам создавать (тривиальный) бэкэнд с помощью конфигурации
Декларативное программирование не всегда проще императивного. Большую часть времени люди склонны думать о результатах, но иногда результаты настолько разнообразны, что (намного) проще думать поэтапно. Это причина, по которой эти разные стили существуют и продолжают существовать в первую очередь. Основное различие между кодировщиком и не кодировщиком заключается не в том, что не кодировщик склонен думать в терминах результатов, а не процессов, а в том, что не кодировщик просто не хочет, чтобы его беспокоили работа компьютера. Некодер хочет сосредоточиться на проблеме. В зависимости от домена, некодирующему лучше всего может помочь императивный DSL вместо декларативного DSL.
person
Lodewijk Bogaards
schedule
05.10.2013
If your motivation for asking the question is “I would like to participate in a discussion about ______”, then you should not be asking here. However, if your motivation is “I would like others to explain ______ to me”, then you are probably OK
. Мне кажется, что ваш вопрос скорее первый, а значит, и в Программистах не по теме. - person Mark Hildreth   schedule 01.10.2013