2008-10-14 90 views

回答

2

好吧,它从来没有伤害知道另一种编程语言,另一种看待事物的方式。由于F#现在不稳定,作为一种尚未正式发布的语言,它可能不是最好的时间;不过,我现在仍然在学习它。

0

如F#基本上是有许多相似的(也可能是更成熟的语言)的诸如“对于.NET函数编程”:

  • Scala:在JVM的函数编程。使用本机代码(或至少一个准系统运行时)进行函数式编程。
6

F#是一个通用的,面向对象的功能语言,没有任何事情是真实专为特定领域语言设计的,虽然你可能很容易地创建F#中的DSL。

如果你真的有兴趣学习像F#这样的东西,那么现在是时候了。如果你想学习一门新的语言来增加你受雇的机会,那么如果你还不熟悉函数式编程,F#可能不是一个好的选择。您可能想尝试JavaScript,Python,红宝石C#并使用匿名函数。

如果你想坚持的东西接近F#,有一个在ML族的语言,特别是OCaml的什么。 Haskell是一种纯粹的功能语言,因为没有副作用(除了在Haskell的monads)。还有Lisp系列,Nemerle和其他几个。

+2

我不同意“没有任何关于特定领域特定语言的设计”。恕我直言,报价,自定义工作流程,fslex和fsyacc属于“专门为DSL设计”的类别。 – Joh 2011-01-14 12:08:36

0

如果你想做功能性编程,去普通LISP。它是跨平台的,非常稳定,并且已经存在了很长时间。它也是LISP家族的一部分;最着名的功能语言之一。

2

函数式语言已经存在了很长一段时间,但一直缺乏实际的生态系统,使它们适用于所有,但很专科业务开发(例如,一个主要的投资银行,可以用来能够在复杂算法的函数式编程中投入一些资源)。

微软的努力是不同的,不是纯粹的F#语言,而是作为一级公民计划首次亮相的主要编程平台(.NET),并且采用程序员可能会产生非常低的摩擦遇到他/她将其添加到他/她的现有基础设施

在.NET中,可以在单个解决方案中从C#项目(反之亦然)引用VB项目。但由于C#或VB的中间语言几乎完全相同,所以今天的.NET程序员更喜欢用一种语言(C#或VB)进行粘连,并从事那些程序员从另一个(几乎相同)暗面。另一方面,F#将引入明显不同的语言工具。因此,您可以在您喜欢的.NET环境(C#或VB)中继续编程,但是当出现不同的功能子项目时,您仍然可以使用F#编程该子项目,同时仍然使用所有现有的C#/ VB资产。对于未来,许多人认为它不是一种适合所有语言的方式,而是在为子项目/任务选择正确的工具时降低摩擦。微软表示,它致力于将F#作为.NET家族的一部分提供,但目前仅发布了几个CTP(而非Beta版本),因此, d说现在不急于放弃所有学习F#的东西。 (再问我,当我看到一个测试版。)在2008年VB



XML文本可能是最明显的VB VS C#的差异。

1

F#不是编程语言的未来。事实上它深深扎根于过去。然而,它是一门伟大的技术,因为它很可能代表了一种完全不同的思维方式,而不是你习惯的方式。另外,随着动态类型化,函数式编程已经被定义为更大程度地包含在下一版本的c#语言中的概念之一。

但是,出去学习吧!

2

F#和函数式编程是未来。但面向对象语言,过程语言和声明式语言已经存在的丰富的植物群也是如此。在任何意义上,任何一个概念都不是新的。随着强大的运​​行时间整合,polyglot(多(编程)语言)系统的未来看起来很明亮,这可能是一个趋势,将改变景观。

是的,这是一个学习F#的好时机,社区很小且充满活力,平台很好地成熟(不要忘记F#开始于2002年),并很快成为Visual Studio的一部分。

至于其他语言,正如前面所说的,F#很大程度上从Ocml中借用到了一定程度上可以用一些小小的代码在两者之间交叉编译代码。 F#也借用Haskell的序列表达式和工作流(mondas)。斯卡拉是另一个在同一个利基中的有趣的语言。另外,函数式结构正在将它们变成“传统”语言,如C#3.0,C++(现在任何一天都可以获得lambdas ..)。 Python有很好的库来编写功能代码。 Linq和PLinq本质上是功能性/消遣性的。

Lisp是整个事情的爷爷,也相当自鸣得意!

5

我现在说的是好的上个星期我给fsbugs发了一个问题,答案在the man自己的几个小时内回来了。

现在尝试用c#...

1

重新“未来” - FP只是箱子里的另一个工具;有时FP解决方案是非常有用的,有时它不是那么重要。但请记住,C#在每次迭代中的功能方面越来越好[虽然它不太可能提供F#的某些非常特定的FP方面,例如歧视联合等]。同样,C#团队已经讨论过更简单的不变性,因此让我们继续为未来的C#版本交叉讨论。还要记住,并行扩展/并行LINQ将许多FP“杀手级特性”直接引入到每种.NET语言中。我个人非常怀疑它[F#]会膨胀,我们都会突然切换到F#对于大多数以业务为中心的目标,C#仍然使IMO更有意义,特别是如果设计用于可测试性(可以用任何语言编写错误的代码...)。但是如果你处于FP有意义的领域之一,并且你正在使用.NET,那么F#绝对值得调查。