我注意到越来越多的资源用于使用F#编程语言开发应用程序,并且想到了创建F#语言的问题.它是针对特定平台制作的,例如桌面,移动设备,Web应用程序吗?它还包括目前可用于开发.NET应用程序的其他编程语言中没有的功能吗?还可以使用F#为桌面,移动设备和Web创建应用程序,因为我们可以使用VB或C#吗?还有其他类似于F#的语言我可以用来交叉检查以更好地理解函数式编程的工作原理吗?
pet*_*ebu 74
创建的F#语言是什么?
F#研究项目试图在.Net平台上创建运行OCaml语言的变体.剑桥MSR剑桥公司的一个相关项目也为标准ML做了同样的工作.(OCaml和标准ML都是ML语言的变体.)这可能包括的动机
这不应让您分心,因为F#产品是.Net平台的通用编程语言.F#的好处扩展到所有域.可能会有更快速采用F#的用户 - 经常提到科学和金融编程 - 但真正的原因是因为这些组织更容易采用新技术(小团队,聪明人,少数管理人员).
它是针对特定平台制作的,例如桌面,移动设备,Web应用程序吗?
没有.
它还包括目前可用于开发.NET应用程序的其他编程语言中没有的功能吗?
是.他们包括:
还可以使用F#为桌面,移动设备和Web创建应用程序,因为我们可以使用VB或C#吗?
是的,但VS2010中的工具不完整.特别是,任何涉及代码生成的内容都不受支持,例如WPF代码隐藏和Winforms设计器.这在实践中可能不是问题.例如,带MVVM的WPF工作得相当好.
还有其他类似于F#的语言我可以用来交叉检查以更好地理解函数式编程的工作原理吗?
是.看看这些:
[编辑:在VS2010中添加了关于工具的评论.]
Mar*_*ade 13
创建F#是为了将函数式编程语言引入.NET.
它不适用于任何特定平台.根据微软研究院的说法,它"在面向数据的编程,并行I/O编程,并行CPU编程,脚本和算法开发方面具有特殊的优势".F#特别用于金融和科学应用.
C#是为Microsoft创建的,它具有现代的C语言,因为它们被限制扩展Java以利用Windows.它被设计为面向组件的语言,并不以任何方式专门用于Web.
F#主要是一种函数式语言,而C#和VB主要是面向对象的.
也可以看看:
我找到了一些触及我的问题的资源:
从表面上看,在尝试确定使用特定语言时,通常没有明确的答案。尽管我之前从未使用过一些示例中的函数式编程,但它非常有用。在开发 .NET 应用程序时,这似乎是另一个不错的选择。
当试图利用函数式编程的思想,比如对不变性的关注,以及由此产生的优化,包括使用尾端递归,你会发现可以提高代码的可读性,改进可维护性。
但是,通过使用诸如 F# 之类的语言,可以更轻松地进行面向语言的编程 ( http://en.wikipedia.org/wiki/Language-orientation_programming ),因为您创建了特定领域的语言,因此,例如,您可以为化学家编写一种小型语言,让他们使用他们熟悉的术语来编写方程式或对分子进行建模,然后程序可以对其进行解析并对预期行为做出反应。
由于 C# 是面向对象的,因此很难让语言如此简单易用,因为在 F# 中,您可以跳过“.”。在方法调用中,Jacob buys 100 shares of IBM因为一系列的函数调用。
由于某些构造(例如前面提到的不变性),并发性更简单,因此,我们在 F# 中看到的某些功能可能有助于改进 C#。
因此,F# 帮助 MS 进入科学编程和建模等领域,因为在这些方面它比 C# 更好,因为该语言具有这些和其他好处。
但是,您也可以使用 .NET 程序集,如果您的代码编写得很好,您可以在 F# 中完成数学密集型部分,并让 C# 或 VB.NET 调用您的函数,因此我们可以为每个任务使用最好的语言。
更新:
在阅读了一些新评论后,一个成为问题的领域是如何编写利用多核 CPU 的好代码。因此,函数式编程变得越来越流行,如 F#、Scala、Clojure 所见,仅举几例,因此 MS 进入此领域是为了帮助程序员更好地利用新的芯片架构。