2010-12-12 2 views
2

Мне нравится puppet декларативная модель. Я хотел бы попытаться включить это в свой код.Как программа в декларативном стиле?

В настоящее время я программирую на python, и, как правило, я стараюсь думать об этом. Это похоже на мою проблему с графическим дизайном: я знаю, что мне нравится в конечном продукте, но не знаю, как его собрать.

Как я могу структурировать вещи так, чтобы код был декларативным? Какие начальные шаги предпринимаются, если решение должно быть узнаваемо «декларативным»?

Functional, Declarative, and Imperative Programming Я только что прочитал это, немного сообразив.

не достаточно, хотя, не могу выразить это словами именно, мое замешательство :(

EDIT: Слова пришли: примеры, приведенные в декларации всегда даются с точки зрения какого-то другого высокого уровня вещи:

Regexen являются декларативными, конечно, но вы делаете двигатель из C.

Make декларативно, конечно же, но она написана на C.

mainifests кукольный являются декларативными конечно, но код рубин не является.

Итак, в какой момент я говорю: «Хорошо, вот методы, теперь я могу начать декларативную часть»?

ответ

2

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

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

Например, make (или любое количество XML-языков, таких как ant) - это просто декларативные DSL (с некоторым размытием). Язык хоста не важен. Это можно обобщить практически для всех языков Turing Complete.

+1

Мне нужна метла, чешуйки просто выпадали из моих глаз. Я рассматриваю это с точки зрения одного языка. Злой. это следующий уровень, на который я должен заниматься только. Независимо от того, что делается ниже, это не моя проблема. Потрясающие. Благодаря! – chiggsy