-
0 votesanswersviews
如何管理程序的多个输入组合?
我们假设我的程序需要四个变量, a , b , c 和 d . 它们彼此相关为 c = a*b 和 d = b*b/c . 因此,鉴于其中任何两个,我可以计算其余两个 . 该程序的用户可以自由地提供任何两个输入 . 因此,在这种情况下,选项是 (a,b) , (a,c) , (a,d) , (b,c) , (b,d) 和 (c, d) . 在像C / Fortran / Python(命令式... -
418 votesanswersviews
声明式编程和命令式编程有什么区别? [关闭]
我一直在网上寻找声明性和命令式编程的定义,这将为我提供一些启示 . 但是,我发现的一些资源中使用的语言令人生畏 - 例如在Wikipedia . 有没有人有一个现实世界的例子,他们可以告诉我可能会给这个主题带来一些看法(也许在C#中)? -
4 votesanswersviews
是否存在比命令式算法更快的功能算法?
我正在寻找功能风格的算法(或这种算法的参数),这比命令式更快 . 我喜欢功能代码,因为它具有表现力,而且比它的命令性吊坠更容易阅读 . 但我也知道这种表现力可能会花费运行时开销 . 并不总是由于尾递归等技术 - 但往往它们更慢 . 编程时我不考虑功能代码的运行时成本,因为现在PC非常快,开发时间比运行时更昂贵 . 此外,对我而言,可读性比性能更重要 . 然而,我的程序足够快,所以我很少需要以命令式... -
1 votesanswersviews
如何使鼠标事件处理更容易?
有时候我必须实现像自定义拖放这样的功能 . 代码可能如下所示: bool mouse_down = false; Vec2 mouse_pos; void on_mouse_down() { mouse_down = true; mouse_pos = cursor_pos(); } void on_mouse_move() { if(mouse_down) { Vec2f c... -
28 votesanswersviews
编译器优化的功能代码比命令式代码执行得更好的示例
无副作用函数编程的承诺之一是可以对这些代码进行广泛优化 . 引用Wikipedia: 在许多情况下,通过允许编译器在命令式语言中做出不安全的假设,数据的不可变性可以提高执行效率,从而增加了强调内联扩展的文本机会 . 我希望看到一个示例,其中函数式语言编译器通过生成更好的优化代码来优于命令式编译器 . Edit: 我试图给出一个特定的场景,但显然它并没有尝试以不同的方式解释它 . 程序员将想法(... -
2 votesanswersviews
功能编程风格与Ruby中的性能[关闭]
我喜欢函数式编程,我也喜欢Ruby . 如果我能够以功能样式而不是命令式样式编写算法,我会这样做 . 我倾向于不尽可能地更新或重用变量,避免使用"bang!"方法并使用"map","reduce"和类似函数而不是"each"或危险循环等 . 基本上我尝试遵循此article的规则 . 问题在于,通常情况是 much s... -
0 votesanswersviews
认知建模语言(CML)与命令式编程与声明式编程
我正在阅读John Funge关于计算机游戏认知建模的这篇文章:http://www.qrg.northwestern.edu/resources/aigames.org/1999/fungegame99.pdf并在此URL中进一步详细阅读:http://www.msci.memphis.edu/~classweb/public_html/comp7990/Spring2000/Wally/Pre... -
0 votesanswersviews
数据竞争是命令式编程所固有的,也是并行计算的障碍?
老实说,我不研究这个计算领域 . 实际上我的参考文献是一些网络和学术文章然后我不安全但对并行计算的一些概念感到好奇 . 我已经制定了两个句子,并想验证它 . First one: 命令式语言使用变量来抽象计算机的硬件内存 . 如果有两个并行线程并且至少有一个执行写操作,而没有同步机制,则会发生 data race . 我们可以认为数据竞争是命令式编程范式的内在特征吗? Second one:... -
2 votesanswersviews
声明性编程中的实习字符串
以下场景显示了一个抽象,在我看来,无法以声明方式实现 . 假设我想创建一个Symbol对象,它允许您创建具有可比较字符串的对象,如Symbol.for() in JavaScript . JS中的简单实现可能如下所示: function MySymbol(text){//Comparable symbol object class this.text = text; this.equal... -
1 votesanswersviews
Prolog反向查找和输入验证同时进行
我最近开始学习prolog,尽管摆脱函数式编程很令人耳目一新,但事情似乎仍然非常陌生 . 我无法理解如何编写谓词,检查其参数是否符合某一组规则,同时如果给定变量,则将其设置为满足这些规则的可能值 . 我试图解决圆桌座位问题,你可以为人们定义一组让他们坐在一起的条件 . 因此,知识库包含10个人,他们说的语言和目标是让他们坐在一起,使两个坐在一起的人必须说同一种语言 . 我定义了一个谓词 speak...