Описательный декларативный язык ядра - PullRequest
1 голос
/ 10 декабря 2011

В этом вопросе я ссылаюсь на книгу Ван Ройса и Сейфа Хариди - «Концепции, методы и модели компьютерного программирования» .

Справочная информация (интерпретируется моими собственными словами из упомянутойкнига):

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


Программируемый уровень описывает компонент (контекст и поведение)


  • Iхотели бы, чтобы другие объяснили мне, что такое описательная описательная программа и что она определяет?
  • Я также хотел бы отметить отношение (разницу) между описательными и программируемыми уровнями в практике (языки программирования)

Этот вопрос возник при чтении упомянутой книги , главы о декларативном программировании.(Страница 115 рассказывает о классификациях декларативного программирования, где определение описательной декларативности немного неясно, по крайней мере для меня)

1 Ответ

2 голосов
/ 14 декабря 2011

Описательная декларативная программа Oz - это программа, которая использует только переменные и значения.Он не использует никаких структур управления или рекурсии.Например:

A = 42

или

B = person(name:"Hans" age:20)

или даже (создание «бесконечной» записи):

C = loop(data:42 link:C)

HTML-документ (без использования расширений)как встроенный Javascript) также будет описательной декларативной программой.Чисто описательный язык не является полным по Тьюрингу.Чисто описательные программы представляют собой реальное подмножество программируемых декларативных программ.

Программируемая декларативная программа может содержать рекурсию и многие другие элементы управления.Модель описана в главе 2 книги.Важным свойством является «ссылочная прозрачность», т.е. независимо от того, в какой ситуации или как часто вы вызываете функцию, она всегда будет возвращать один и тот же результат при одинаковых параметрах.Чисто-функциональная программа на Haskell также может быть примером программируемой декларативной программы.

Для подобных вопросов я также рекомендую список рассылки пользователей Mozart и, возможно, форум «Lambda the Ultimate».В этих местах на ваши вопросы могут даже ответить авторы книги.

...