我的团队目前正在使用C# .NET为我们公司开发企业应用程序。我们有Winforms的历史,但现在正在转向SilverLight。
我的老板最近在F#上看了一段视频,觉得很刺激,他让我去看看。我的问题是--在企业应用程序开发领域,函数式语言(如F#)比面向对象语言(如C#)有什么优势?
我真的很想知道是否有任何令人信服的理由开始考虑转变。一些F#和C#比较代码可能也不错。
发布于 2010-02-04 22:05:37
您可以在像F#这样的函数式语言中更简洁地表达许多概念。
函数是第一类对象,可以直接应用于集合,以更有效地执行转换/筛选。
函数语言鼓励不可变,这使得多线程代码更加可靠(您知道数据结构在您的下面没有改变)。
通过能够更可靠、更容易地编写多线程代码,可以更容易地利用多个处理器/核(现在摩尔定律越来越重要)。
请注意,您可以在C#中使用现有的F#对象。因此,您可能希望用F#编写代码的某些部分,用C#编写其他部分。您应该能够根据您的需求和每种方法的适合性进行混合和匹配。
发布于 2010-02-04 22:03:17
我刚刚订购了Manning '真实世界函数规划‘,它非常出色地解释了F#、函数式编程的所有角落和漏洞,特别是它与C#和OOP的比较。
我要说的是,函数编程通常会增加程序的“严谨性”,前提是您符合副作用无函数和不可变的原则。
此外,从解密意义上考虑代码似乎有好处,而不是必须意义上的代码。在面向对象程序设计( OOP )中,我倾向于考虑它完成某事所需的步骤,但在FP中,您似乎更关心如何将函数应用于数据以获得结果。
发布于 2010-02-04 22:13:39
首先,您会问"functional (如F#)放弃OO语言(如C#) i“,f#既是函数式的,又是面向对象的。您用c#编写的任何东西都可以直接翻译成f#。F#是一种多范式语言,但在我看来,其优势来自于功能部分。f#和其他功能语言在编写多线程应用程序方面是一个明显的赢家,因为编译器有更高的可能性来考虑什么可以安全地并行运行。
当涉及到web开发时,f#有一个非常酷的工具包,允许您用相同的语言(即f# )编写所有代码(如服务器端和客户端)。客户端将被web工具包转换为JavaScript。
https://stackoverflow.com/questions/2203554
复制相似问题