2011-03-28 6 views
4

Что такое название следующей парадигмы программирования:Я хочу назвать это программирование побочных эффектов, но есть должен быть лучший термин для этого

код выполняется на основе набора логических тестов разрешающих истина (пункт). Предложение состоит из операторов и операндов. Каждый операнд является значением/объектом.

Вместо того, чтобы явно оценивать предложение, как это делается на императивных языках (например, нормальное управление потоком, например if(){}), предложение объявляется и привязывается к результирующему коду. Когда предложение будет выполнено, в любой момент в будущем код будет выполнен.

Итак, это в основном дерево зависимостей, которое переоценивает необходимость выполнения кода при изменении состояния зависимостей.

Е.Г.,

when(a && b && c < 3 && d.changes()) 
{ 
    runThisCode(); 
} 

Я ищу более официальное название и определение, и я не придумал ничего после поиска для него. Это где-то между декларативным и императивным, но я никогда не видел языка или парадигмы, которые позволяют делать это.

Спасибо, Шон

+0

Вы думаете о [аспектно-ориентированном программировании] (http://en.wikipedia.org/wiki/Aspect-oriented_programming)? – sarnold

ответ

2

Может быть, это dataflow programming? Или reactive programming?

+0

Основываясь на статье в Википедии для реактивного программирования, я чувствую, что то, о чем я прошу, следует за ней наиболее близко. Из базы знаний ничего не выводится. Это намного проще, чем этот, так же, как данный пример ячеек, которые автоматически обновляются в Excel при ссылках на ячейки при изменении формулы. – Sean

2

Звучит как Rule engine для меня. Например. в Jess вы можете определить такие декларативные правила и обратиться к императивному или объектно-ориентированному Java-коду.

+0

Я думаю, что вы правы, я бы назвал это «основанным на правилах программированием», а система, с которой я играл, с давних времен, [CLIPS] (http://en.wikipedia.org/wiki/CLIPS) , который, по-видимому, является предком для Джесс. Возможно, подобный материал можно сделать в [Prolog] (http://en.wikipedia.org/wiki/Prolog), я никогда не изучал это полностью. – bart

 Смежные вопросы

  • Нет связанных вопросов^_^