Programming languages 声明式编程最能解决哪些具体问题?

Programming languages 声明式编程最能解决哪些具体问题?,programming-languages,declarative,paradigms,Programming Languages,Declarative,Paradigms,我理解声明性语言必须提供什么,但我还没有把我为什么要使用它们的要点联系起来。例如,我不明白为什么描述一个问题比用命令式语言编写一个已经理解的问题的解决方案更有益(无法承受副作用) 这是而不是关于如何在声明式语言中创建一个好的应用程序的讨论。我只想了解情况和任何常见的、特定的项目需求,这些需求会让程序员说“我们真的应该为此使用声明性语言”。作为经验法则,我想当存在多个策略来实现一个目标时,声明性编程是有意义的。以声明方式编程what而不是how,让解析器/编译器/运行时找出哪种策略最好——它为您优

我理解声明性语言必须提供什么,但我还没有把我为什么要使用它们的要点联系起来。例如,我不明白为什么描述一个问题比用命令式语言编写一个已经理解的问题的解决方案更有益(无法承受副作用)


这是而不是关于如何在声明式语言中创建一个好的应用程序的讨论。我只想了解情况和任何常见的、特定的项目需求,这些需求会让程序员说“我们真的应该为此使用声明性语言”。

作为经验法则,我想当存在多个策略来实现一个目标时,声明性编程是有意义的。以声明方式编程what而不是how,让解析器/编译器/运行时找出哪种策略最好——它为您优化执行

声明性语言和优化的两个示例:

  • 正则表达式——您真的想为快速执行所需的底层DFA、NDFA操心吗
  • SQL查询——DBMS具有统计数据和缓存,并且(希望)能够找出最佳执行计划

@verilitude提供的链接值得一读

你经历过吗?虽然它可能不能完全回答你的问题,但在某种程度上至少你会得到一个基本的想法。。。stackoverflow.com/questions/129628/what-is-declarative-programming我以前看到过这个问题,所以起初我以为你提供了一个定义链接,但后来我向下滚动了一点,看到了我想你们希望我看到的答案。谢谢在正则表达式示例中,即使是DFA/NFA也有点delcarative。用loop+switch编写一个状态机是真正的命令等价物,而且手工编写更糟糕。