当前位置:  开发笔记 > 数据库 > 正文

编程语言定义问题而不是解决方案?

如何解决《编程语言定义问题而不是解决方案?》经验,为你挑选了4个好方法。

是否有任何编程语言用于定义给定问题的解决方案,而不是定义解决方案的指令?因此,可以定义解决方案或最终结果应该是什么样的,语言解释器将确定如何得出该结果.看一下编程语言列表,我不知道如何开始研究它.

我目前可以想到的最好的例子来帮助说明我想要问的是SQL和MapReduce,尽管这些都是用于检索数据的迷你语言.但是,在编写SQL或MapReduce语句时,您将定义最终结果,并且DB会决定到达最终结果集的最佳操作过程.

我可以看到这些类型的语言,如果它们存在,用于处理大量数据或寻找一组方程的解.梦想语言可以解释定义的问题,识别哪些部分是可并行化的,并跨多个进程/核心/框执行解决方案.



1> Karl Voigtla..:

声明式编程怎么样?维基百科文章摘录(重点补充):

在计算机科学中,声明性编程是一种编程范式,它在不描述其控制流的情况下表达计算的逻辑.应用这种风格的许多语言都试图通过描述程序应该完成的内容来最小化或消除副作用 ,而不是描述如何完成它.这与命令式编程形成对比,命令式编程需要明确提供的算法.



2> Savvas Dalki..:

最接近你可以得到这样的东西是使用像Prolog这样的逻辑语言.在这些语言中,您可以对问题的逻辑进行建模,但同样不是魔术.



3> Meredith L. ..:

这听起来像是对声明性语言(特别是逻辑编程语言)的描述,其中最着名的例子是Prolog.我不知道Prolog是否可以并行化.

根据我的经验,Prolog非常适合解决约束满足问题(必须满足一系列条件的问题) - 定义输入集,定义约束(例如,必须强加于先前无序的排序)输入) - 但病理情况是可能的,有时逻辑演绎过程需要很长时间才能完成.

如果您可以根据布尔公式定义问题,可以在其上抛出SAT求解器,但请注意3SAT问题(三变量子句上的布尔变量赋值)是NP完全的,并且它的一阶逻辑大兄弟,量化布尔公式问题(使用存在量词以及通用量词),是PSPACE完全的.

在OCaml和其他FP语言中有一些非常好的定理证明; 这里有一大堆.

当然,通过单纯形法总是进行线性编程.


Prolog非常平行.条款的评估顺序可以按任何顺序发生,甚至可以同时发生.

4> Ionuț G. Sta..:

这些语言通常被称为第5代编程语言.我链接到的维基百科条目中有几个例子.

推荐阅读
N个小灰流_701
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有