Questions tagged «programming-paradigms»

2
功能反应式编程和Actor模型如何相互关联?
FRP是关于通过纯函数流式传输事件和行为。Actor模型-至少在Akka中实现-是关于通过可能不纯的对象(称为actor)流式传输不可变消息(可以认为是离散事件)。 因此从表面上看,它们似乎相关。 关于它们之间的关系,我们还能说些什么?另外,对于其中哪一个可能更适合于不同的应用程序域又能说些什么呢?


7
Lambda演算似乎并不抽象。我看不出重点
潜在的问题: 是什么演算为我们做,我们不能与基本功能属性和符号在中学代数一般学吗? 首先,抽象在lambda演算的上下文中是什么意思?我对“抽象”一词的理解与某种概念的概念概括-机器不同。 但是,lambda函数通过消除函数名称来防止某种程度的抽象。例如: f(x) = x + 2 h(x, y) = x + 5 y 但是,即使不定义这些功能的机制,我们也可以轻松地讨论它们的组成。例如: 1. h(x, y) . f(x) . f(x) . h(x, y) or 2. h . f . f . h 我们可以根据需要包含参数,也可以完全抽象以概述发生的情况。而且我们可以快速将它们简化为一个功能。让我们看一下构成2。我可以根据自己的重点来写一些学生的细节层次: g = h . f . f . h g(x, y) = h(x, …

8
OOP在实践中解决了哪些程序编程问题?
我已经读过《 C ++ Demystified》一书。现在,我开始阅读Robert Lafore的“ Turbo C ++第一版(第1版)中的面向对象程序设计”。除了这些书之外,我没有编程方面的知识。这本书已经有20年历史了,所以可能已经过时了。我确实有最新版本,因为我喜欢旧版本,所以我正在使用旧版本,主要是我只是通过Lafore的第一版研究C ++中使用的OOP的基本概念。 Lafore的书强调“ OOP”仅对较大和复杂的程序有用。在每本OOP书中(以及在Lafore的书中)都说过,程序范式容易出错,例如全局数据容易受到功能的影响。据说程序员可以用程序语言编写诚实的错误,例如通过创建一个意外破坏数据的函数。 老实说,我发布问题是因为我没有掌握本书给出的解释:C ++中的面向对象编程(第4版)我没有掌握Lafore本书中写的这些语句: 之所以开发面向对象的程序设计,是因为在早期的编程方法中发现了局限性。...随着程序变得越来越大,越来越复杂,甚至结构化编程方法也开始显示出紧张的迹象....分析原因这些失败表明程序范式本身存在弱点。不管结构化编程方法的实现程度如何,大型程序都变得过于复杂。……有两个相关的问题。首先,功能可以不受限制地访问全局数据。其次,不相关的功能和数据是程序范式的基础,为现实世界提供了糟糕的模型。 我已经学习了Jeff Kent的书“ dysmystified C ++”,我非常喜欢这本书,这本书中主要是对过程编程的说明。我不明白为什么程序(结构化)编程很弱! Lafore的书通过一些很好的例子很好地解释了这个概念。另外,通过阅读Lafore的书,我已经掌握了一种直觉,即OOP比过程编程要好,但是我很好奇,实际上,过程编程要比OOP弱。 我想看看自己在过程式编程中将面临的实际问题是什么,OOP如何使编程更容易。我想我只是沉思地阅读Lafore的书就能得到答案,但是我想亲眼看看程序代码中的问题,我想看看程序的OOP样式代码如何消除前面提到的错误。使用程序范例编写相同的程序。 OOP有很多功能,我理解没有人可以向我解释所有这些功能如何消除以程序样式编写代码会产生的上述错误。 所以,这是我的问题: OOP解决了程序编程的哪些限制,并且在实践中如何有效消除这些限制? 特别是,是否存在使用程序范例难以设计但易于使用OOP设计的程序的示例? PS:交叉发布于:https : //stackoverflow.com/q/22510004/3429430

2
是否存在以纯数据流样式构成“增量更新”功能的范例?
我不知道问这个问题的正确术语,所以我会用很多单词来描述它,请耐心等待。 背景,正好在同一页上:程序通常包含缓存-时间/内存的权衡。程序员的一个常见错误是在更改其上游源/先例之一后忘记更新缓存的值。但是数据流或FRP编程范例可以避免此类错误。如果我们有许多纯函数,并在有向依存关系图中将它们连接在一起,则节点可以缓存并重用其输出值,直到任何函数的输入发生变化。该系统体系结构在《基于数据流的环境中的缓存》一文中进行了描述,并且使用命令式语言或多或少地类似于记忆。 问题:当函数的输入之一确实发生变化时,我们仍然必须整体执行该函数,丢弃其缓存的输出并从头开始重新计算。在许多情况下,这对我来说似乎是浪费。考虑一个简单的示例,该示例生成一个“前5名”列表。输入数据是任何内容的未排序列表。它作为输入传递给输出排序列表的函数。依次输入到仅接受前5个项目的功能。用伪代码: input = [5, 20, 7, 2, 4, 9, 6, 13, 1, 45] intermediate = sort(input) final_output = substring(intermediate, 0, 5) 排序函数的复杂度为O(N log N)。但是请考虑在应用程序中使用此流程,在该应用程序中,输入仅通过添加1个元素而仅稍有变化。与其每次都从头开始重新排序,不如使用O(N)函数,它通过在正确位置插入新元素来更新旧的缓存排序列表,将更快。这只是一个示例-许多“从头开始”功能都具有这种“增量更新”功能。另外,也许新添加的元素甚至不会出现在final_output中,因为它位于第5位之后。 我的直觉表明,有可能以某种方式将这样的“增量更新”功能与现有的“从头开始”功能并排添加到数据流系统中。当然,从头开始重新计算所有内容必须始终具有与进行一系列增量更新相同的结果。系统应具有这样的特性:如果每个单独的原始FromScratch增量对总是给出相同的结果,然后由他们建造的大型复合功能也应该会自动给出相同的结果。 问题:是否可能有一个系统/体系结构/范式/元算法既可以支持FromScratch函数也可以支持它们的增量对等函数,并为提高效率而合作并组成大量流程?如果没有,为什么?如果有人已经研究了该范式并发布了它,那么它被称为什么,我能否简要了解它的工作原理?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.