我的团队目前正在使用C#.NET为我们公司开发企业应用程序。我们有Winforms dev的历史,但现在正转向SilverLight。
我的老板最近看到一个关于F#的视频,并认为它看起来非常令人兴奋,他让我查看它。我的问题是 - 在企业应用程序开发领域,函数式语言(如F#)有哪些优势可以超越OO语言(如C#)?
我真的想看看是否有任何令人信服的理由甚至开始考虑转变。一些F#和C#比较代码也可能很好看。
答案 0 :(得分:10)
你可以在像F#这样的函数式语言中更简洁地表达很多概念。
函数是第一类对象,可以直接应用于集合,以更有效地执行转换/过滤。
在函数式语言中鼓励不变性,这使得(例如)多线程代码更加可靠(您知道数据结构在您之下不会发生变化)。
通过能够更可靠,更容易地编写多线程代码,可以更轻松地利用多个处理器/内核(现在摩尔定律越来越重要,不太适用)。
请注意,您可以在F#中使用现有的C#对象。因此,您可能希望在F#和C#中的其他部分中编写代码的某些部分。您应该能够根据您的要求和每种方法的适用性进行混合和匹配。
答案 1 :(得分:4)
我刚刚订购了Manning'Real World Functional Programming',它很好地解释了F#的所有角落和缝隙,功能编程,特别是它与C#和OOP的比较
我要说的是,函数式编程通常会增加程序的“严谨性”,假设您遵循副作用自由函数的原理和不变性。
此外,在声明的意义上思考代码似乎有好处,而不是强制性意义。在OOP中,我倾向于考虑完成某些事情所需的步骤,但在FP中,您似乎更关心如何将函数应用于数据以获得结果。
答案 2 :(得分:3)
首先你要问“函数语言(比如F#)给出OO语言(比如C#)i”f#既有功能又有OO。你在c#中写的任何东西都可以直接翻译成f#。 F#是一种多范式语言,但优势来自于我认为的功能部分。 f#和其他功能语言在编写多线程应用程序时是一个明显的赢家,因为编译器有更高的可能性来推断可以安全地并行运行的内容。
在Web开发方面,f#有一个非常酷的工具包,允许您使用相同的语言f#编写所有代码(如服务器端和客户端)。客户端将由Web工具包翻译成JavaScript。