创建的F#语言是什么?

时间:2011-04-12 22:42:59

标签: .net f#

我注意到越来越多的资源用于使用F#编程语言开发应用程序,并且想到了创建F#语言的问题。它是针对特定平台制作的,例如桌面,移动设备,Web应用程序吗?它还包括目前可用于开发.NET应用程序的其他编程语言中没有的功能吗?还可以使用F#为桌面,移动设备和Web创建应用程序,因为我们可以使用VB或C#吗?还有其他类似于F#的语言我可以用来交叉检查以更好地理解函数式编程的工作原理吗?

5 个答案:

答案 0 :(得分:69)

  

创建的F#语言是什么?   完成?

F#研究项目试图在.Net平台上创建运行OCaml语言的变体。剑桥MSR剑桥公司的一个相关项目也为标准ML做了同样的工作。 (OCaml和标准ML都是ML语言的变体。)其动机可能包括

  1. 显示它可以完成。
  2. 发表科学论文,表明可以做到。
  3. 因为ML非常酷。
  4. 这不应让您分心,因为F#产品是.Net平台的通用编程语言。 F#的好处扩展到所有域。可能会有更快速采用F#的用户 - 经常提到科学和金融编程 - 但真正的原因是因为这些组织更容易采用新技术(小团队,聪明人,少数管理人员)。

      

    是针对特定平台制作的   示例桌面,移动设备,Web   应用

    没有

      

    它也包括功能   可用于其他编程   目前可用的语言   用于开发.NET应用程序?

    是。它们包括:

    • 代数数据类型
    • 模式匹配
    • 类型推断
    • 简洁的语法
    • 序列表达式
    • 异步工作流程
    • 计量单位
      

    还可以创建   桌面,移动,   和使用F#的web,因为我们可以使用VB或   C#?

    是的,但VS2010中的工具不完整。特别是,涉及代码生成的任何事情都不能很好地支持,例如WPF代码隐藏和Winforms设计器。这在实践中可能不是问题。例如,带MVVM的WPF工作得相当好。

      

    还有其他类似的语言   到F#我可以用来交叉检查   反对以获得更好的理解   函数式编程如何工作?

    是。看看这些:

    • 标准ML
    • OCaml的
    • 的Haskell
    • Clojure的

    [编辑:在VS2010中添加了关于工具的评论。]

答案 1 :(得分:12)

创建F#是为了将函数式编程语言引入.NET。

它不适用于任何特定平台。根据{{​​3}},它“在面向数据的编程,并行I / O编程,并行CPU编程,脚本和算法开发方面具有特殊的优势”。 F#特别用于金融和科学应用。

C#是为Microsoft创建的,因为它们被限制扩展Java以利用Windows,因此它具有现代的类C语言。它被设计为面向组件的语言,并不以任何方式专门用于Web。

F#主要是一种函数式语言,而C#和VB主要是面向对象的。

另见:

答案 2 :(得分:4)

我找到了一些涉及我问题的资源:

What & Why Choose F#?

How will F# be used?

Nine reasons to use F#

Why should I use F#?

When does it make sense to use F# over C# or VB.NET

从看起来似乎没有明确的答案,通常在尝试确定使用特定语言时。虽然我以前从未使用过函数式编程,但我从一些例子中看到它可能非常有用。在开发.NET应用程序时,这似乎是另一个很好的选择。

答案 3 :(得分:3)

当试图利用函数式编程的思想,例如关注不变性以及可能来自此的优化(包括使用尾端递归)时,您会发现可以提高代码的可读性,提高可维护性。

但是,通过使用F#等语言可以更轻松地进行面向语言的编程(http://en.wikipedia.org/wiki/Language-oriented_programming),因为您创建了特定于域的语言,因此,例如,您可以编写一个小语言化学家,他们使用他们熟悉的术语来编写方程式,或模拟分子,程序可以解析它并对预期的行为作出反应。

因为C#是面向对象的,所以使语言使用起来变得更加困难,因为在F#中你可以跳过'。'在方法调用中,所以Jacob buys 100 shares of IBM因为一系列函数调用。

由于某些结构(例如前面提到的不变性),并发性更简单,因此,我们在F#中看到的一些功能可能有助于改进C#。

因此,F#帮助MS进入科学编程和建模等领域,因为这些优于C#,因为语言的这些和其他好处。

但是,您也可以使用.NET程序集,如果您编写好代码,可以在F#中执行数学密集型部分并让C#或VB.NET调用您的函数,这样我们就可以使用最好的语言每项任务。

<强>更新

在阅读了一些新评论之后,一个已成为问题的领域是如何编写利用多核CPU的优秀代码。因此,功能编程变得越来越流行,正如F#,Scala,Clojure所看到的那样,只有少数几个,所以MS进入这个以帮助程序员更好地利用新的芯片架构。

答案 4 :(得分:2)

如果您通过Don Syme观看this video,也许您会得到一些您正在寻找的答案。

<强>更新 观看视频之后,他似乎创造了它,因为当时(1998年)他不喜欢Java或他看到的C#,但喜欢像OCaml这样的函数式编程。自从他为MS研究工作后,他写了F#。

我认为针对cli(A#,ronPython,IronRuby等)的许多语言都很相似。