Questions tagged «paradigms»

计算机编程的基本样式。

5
接口的功能编程替代方案是什么?
如果我想以“功能性”风格进行编程,我将用什么替换接口? interface IFace { string Name { get; set; } int Id { get; } } class Foo : IFace { ... } 也许一个Tuple<>? Tuple<Func<string> /*get_Name*/, Action<String> /*set_Name*/, Func<int> /*get_Id*/> Foo; 首先使用接口的唯一原因是,我总是希望某些属性/方法可用。 编辑:有关我在想什么/尝试的更多详细信息。 说,我有一个方法,它具有三个功能: static class Blarf { public static void DoSomething(Func<string> getName, Action<string> setName, Func<int> getId); } 对于BarI 的实例,可以使用此方法: …


6
哪些功能特性值得为它们带来的好处感到困惑?
在使用Haskell和F#学习了函数式编程之后,OOP范例似乎在类,接口和对象方面倒退了。我的同事可以理解FP的哪些方面?是否有任何FP风格值得与我的老板谈谈对我的团队进行再培训,以便我们可以使用它们? FP的可能方面: 不变性 部分应用和咖喱 一流的功能(功能指针/功能对象/策略模式) 惰性评估(和Monad) 纯功能(无副作用) 表达式(相对于语句-每行代码都会产生一个值,而不是引起副作用,或者除了引起副作用之外) 递归 模式匹配 它是一种免费的所有人,我们可以在编程语言支持的范围内做任何事情吗?还是有更好的指南?

2
我对演员模型的描述正确吗?
据我了解,参与者模型就像对象模型一样,但是有一些区别: 每个对象都产生它自己的单独线程,即使有成千上万个对象,也不是问题。 参与者不是通过调用函数和获取返回值来进行交互,而是通过发送和接收消息来进行交互。 如果您不违反该模型,则您的应用将充分利用并发功能,而不会出现竞争状况的风险。 在OO中可以执行的所有操作都可以使用actor来完成,但更好的是,问题在于最近几年我们编写的所有内容都是基于OO的-但即将进行过渡。 因此,举例来说,假设我必须定义3d向量类/角色,创建两个实例,并对它们调用求和运算。 面向对象: class V3d { constructor V3d(x,y,z) //bla float x,y,z; function sum(V3d b) { return V3d(x+b.x,y+b.y,z+b.z); } } //using: mySum = V3d(1,2,3).sum(V3d(3,2,1)) //creates 2 instances, sum, returns instantly drawPoint(mySum) //uses the result 演员模型: actor V3d { constructor V3d(x,y,z) //bla float x,y,z; loop { receive 'sum',b:V3d …


3
为什么(不是)逻辑编程?
我还没有听说过软件行业中逻辑编程语言(例如Prolog)的任何用法,也不知道它在业余编程或开源项目中的用法。不过,它(Prolog)在某种程度上被用作学术语言(为什么在学术界使用它?)。 这让我感到奇怪,为什么要使用逻辑编程,为什么不呢?为什么没有得到可检测的行业使用率?

20
每个计算机科学专业的学生应该教什么编程语言?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 应该根据您的要求,在大学里为每位计算机科学专业的学生教授什么语言(或类的语言(如范式),再加上该类的推荐语言)?激励你的答案;为什么用这种语言?一个人将有什么用?它教什么概念(比X语言更好)? 注意/说明:这个问题是关于计算机科学的,重点是软件工程,而不是纯粹的计算机科学。重点仍然是计算机科学教育,而不是软件工程教育。

4
FP和OO正交?
我一次又一次听到,我试图理解和验证FP和OO是正交的。 首先,两个概念正交是什么意思? FP尽可能地鼓励不变性和纯度。OO似乎是为状态和突变而构建的(命令式编程的稍微组织的版本?)。而且我确实意识到对象可以是不可变的。但是OO似乎意味着对我声明/更改。 他们似乎是相反的。这是否意味着它们是正交的? 像Scala这样的语言可以轻松实现OO和FP两者,这是否会影响这两种方法的正交性?

1
功能反应/关系编程–有区别吗?
我一直在使用Reactive Cocoa(由GitHub提供),这是一种用于Cocoa库的功能性反应式编程API,现在已经使用了一段时间,但是我刚刚阅读了“ Out of the Tar Pit”,据称该论文介绍了其背后的概念,我有些困惑。 本文介绍了(据我所知)功能关系编程,其中数据之间的关系是由FRP系统应强制执行的条件创建的,以减少所需的“偶然”逻辑和状态。 我的问题是,这两个概念-FR(eactive)P和FR(elational)P本质上是同一件事(前者只是后者的实现),还是两者之间存在核心区别?不幸的是,目前我对该领域的了解还不足以让我足够区分它们。 如果存在差异,顾名思义,这似乎与数据更改有关系。当然,反应性可可粉(和C#中的Rx)具有创建信号的概念,该信号在数据变化时触发,并且可用于随时间连续修改值。 这有区别吗?如果没有,那是什么? (请原谅不良标签,我找不到相关标签,也无法创建它们-如果可以的话,请将标签更新为更合适的标签。)

2
函数式反应式编程-Fay的表达能力够吗?
因此,我正在做一个相当参与的javascript / html客户端,其中包含许多ajax调用和其他涉及回调机制的事情。我很高兴为此目的使用Fay。我知道榆树。尝试了一下,喜欢FRP元素。现在,我想知道在Fay中是否可能有类似的结构。 此时,Fay中是否有FRP的具体示例? 一些相关技术: 箭,JavaScript中的箭状玻璃钢 FlapJax,另一个javascript替代方案 Bacon.js,javascript中的FRP 一种可能的解决方案,使用培根。带演示。

5
面向语言的编程实用吗?
我阅读了有关面向语言的编程的文章。他指出了现代程序/ OOP编程方法中的一些弱点,并提出了可以解决这些问题的新编程范式 我只想了解那些松散耦合的小型程序部分:最好学习很多小的东西,而您只需要一点点地使用它们,而不是几个大的东西。 阅读这篇文章后,我觉得作者正在推广以下两项内容之一: 多种易于创建的脚本语言 单一的,易于扩展的语言,可以自行重写以满足程序员的需求 如果他建议第二个,我将回答“已经完成!” 并以Lisp为例。正如保罗·格雷厄姆(Paul Graham)所建议的,无论如何,语言似乎一直在朝着这个方向发展。 就第一个而言,我认为这是一个好主意,如果有将它们紧密联系在一起的基本语言。在我看来,这是薄弱环节:语言之间的交流。您会使用过程概念或消息传递的调用方式,使我想起进程间通信吗?如果很容易同时使用它们,我欢迎有机会使用特定于小型领域的语言。这种方法(LOP)是否可行?

7
选择编程范例来解决问题的经验证据
C2 Wiki讨论了面向对象编程的经验证据,该结论基本上得出结论,没有什么可以超越权威。这是在2008年最后一次编辑。这里的讨论似乎可以证明这一点:关于OO是否过时的问题,当函数编程是一个错误的选择,并且AOP的优缺点都可以由贡献者的意见来回答,而无需依赖证据。 当然,欢迎既有知名的从业人员的见解,也可以提供有价值的东西,但是当它们与实验数据一致时,它们似乎更加合理。这个证据存在吗?我知道基于证据的软件工程是一回事,但是我可以在这种情况下实践吗?具体来说,如果我有一个P想通过编写软件来解决的特定问题,是否存在大量的知识,研究和研究,这些知识,研究和研究会让我看到解决问题的结果如何P取决于编程范例的选择? 我知道哪种范式作为“正确答案”可以取决于特定研究关注的指标,研究保持不变或变化的条件,以及其他因素。这不会影响我寻找此信息并进行严格评估的愿望。 显而易见,有些人认为我正在寻找“曲柄”解决方案-某些香肠机将我的问题信息放入其中,而其中出现了“功能”或“结构化”之类的词。这不是我的意图。我正在寻找的是如何进行研究-尽管有很多警告和假设,但我不会在这里讨论,但是有很多关于此事的文献会-有关软件的某些属性的变化取决于问题和选择的范式。 换句话说:有人说“ OO可以提供更好的灵活性”或“功能程序的bug更少” –我要的(部分)证据就是这一点。其余人则要求提供证据证明这一点,或者要求这些假设正确的假设,或者表明这些考虑并不重要的证据。关于为什么一种范例比另一种范例更好的观点有很多。这些背后有什么目标吗?

4
为什么我们仍在浏览器而不是桌面模式中使用DOM
根据我的理解,Web界面被开发为使用HTML,因为当时由于带宽限制以及可能的处理能力,无法在浏览器中模拟桌面样式的应用程序,例如Silverlight和Flash的工作方式。 为什么过去不存在,而现在却越来越受到Flash / Silverlight等技术的接受和推动?根据我的经验,使用它们进行开发更令人高兴(当然,我认为),并且您不必处理跨浏览器合规性以及旧版浏览器(大部分情况下)。 与桌面应用程序的开发范例相比,处理回发,AJAX等似乎是多余的工作。DOM及其补充技术是否继续蓬勃发展,主要是因为Silverlight / Flash需要安装插件,而某些移动设备不支持该插件?

6
您看到“电子表格编程”的用法了吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 不久前,我偶然发现了使用电子表格(我的意思是单元格和公式而不是宏代码)作为指定编程逻辑的方法的概念。这个想法是: 用明确定义的计算流程创建电子表格(有时更适合于电子表格的“数据流”范式,而不是面向过程或面向对象的编程风格) 定义输入单元 定义输出单元 将整个内容编译为独立的可执行类(或函数,过程等) 在更广泛的软件项目中以常规代码使用它 使用电子表格作为源代码,以便随着时间的推移进行维护 想法是使用这种技术来解决真正适合模型的问题,这将导致文档自然且易于维护的代码。我很想知道您是否有使用该技术的经验以及用途。我想到的一个示例应用程序是保险费率计算器,通常由精算师在Excel表格上起草,创建和验证,然后才以某些难以维护的编程逻辑进行编码(这是一个痛苦的过程)。

6
我应该选择一种功能编程语言吗?
最近,我更加关注编写代码的方式。在阅读了几本关于设计模式的书(我敢肯定它们的过分执行)之后,我已经将思想大大地转向了封装那些改变的东西。我倾向于注意到我写的接口更少,而代码则更多地面向方法,在这里我喜欢用谓词,动作和其他委托任务将生活融入旧的类中。我倾向于认为通常是更改的动作,因此我将其封装。我什至经常(尽管不总是如此)将接口分解为单个方法,然后我更喜欢使用委托来完成任务,而不是强制客户端代码创建新类。 所以我想它然后打我。我应该进行函数式编程吗? 编辑: 我可能对函数式编程有一个误解。 目前,我选择的语言是C#,并且来自C ++背景。我是一名游戏开发人员,但目前没有工作。 我对建筑充满热情。我的优点是干净,灵活,可重用和可维护的代码。我不知道这些方法是否使我中毒,或者是否更好。我是发烧还是应该继续发烧?我了解这可能是关于“使用正确的工具完成工作”的问题,但是我想听听您的想法。 我应该选择一种功能语言吗?我担心的因素之一是离开Visual Studio的舒适感。

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.