【问题标题】:How do program in a declarative style?如何以声明式风格进行编程?
【发布时间】:2010-12-12 03:59:45
【问题描述】:

我喜欢puppet 声明式模型。我想尝试将更多内容合并到我的代码中。

但是,我目前使用 python 编程,并且在这样做时我倾向于进行命令式思考。这就像我的图形设计问题:我知道我喜欢在最终产品中看到什么,但不知道如何组装它。

我如何构造事物以使代码具有声明性?如果解决方案要具有可识别的“声明性”,应采取哪些初始步骤?

Functional, Declarative, and Imperative Programming我刚刚读过这篇文章,带来了一点见解。

虽然还不够,不能准确地说出来,我的困惑:(

编辑:话来了:为声明给出的示例总是根据其他一些高级事物给出:

Regexen 是声明性的,当然,但你用 C 语言制作引擎。

Make 是声明性的,当然,但它是用 C 编写的。

Puppet mainifests 当然是声明性的,但 Ruby 代码不是。

那么我在什么时候说:“好的,方法在这里,现在我可以开始声明部分了”?

【问题讨论】:

    标签: declarative-programming


    【解决方案1】:

    使用函数式语言时,请使用函数式风格;使用命令式语言时,请使用命令式风格;使用声明式语言时,请使用声明式风格。

    如上所述(不包括所有允许的“交叉样式”),当您使用一种语言写作时,您会使用一种语言的风格。在以“命令式”或“功能性”语言编写“声明式”的情况下,这通常会分解为编写声明式 DSL 和/或 API,而无需实际更改用于公开(甚至粘合)所述声明式友好的基本样式DSL/API。

    例如,make(或任何数量的 XML 语言,如 ant)只是声明性 DSL(有些模糊)。宿主语言并不重要。这可以推广到几乎所有图灵完备宿主语言。

    【讨论】:

    • 我需要一把扫帚,鳞片刚从我眼前掉下来。我从一种语言的角度来看待这个问题。邪恶。这是我应该只关心自己的下一层。无论在下面完成什么工作都不是我关心的。惊人的。谢谢!
    猜你喜欢
    • 2011-12-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多