函数式编程语言F#:基于CLR的另一个头等编程语言

开发 开发工具
本文源自Don Syme的博客。本博文写于2007年底,当时微软刚刚在其平台上集成了F#语言。而F#将在VS2010中被正式包括在内,可以说未来的F#将是.NET平台上函数式语言的代表。

近几年来,编程语言的一个重要的主题已经转向函数式编程的观念。

诸如C#中的lambda表达式和.NET 2.0中的范型等语言特性都源于函数式语言,而LINQ更是直接基于函数式编程技术。通过LINQ和Parallel FX,函数式语言的想法正帮助我们解决当今业界所面临的最大挑战:从防止数据和对象之间的错误匹配,到多核与并行计算领域所带来的挑战。

微软研究院已经着手在一些项目中研发这些关键技术中几个技术。MSR目前所研发的很有前途的项目之一就是由Don Syme带领的F#编程语言。F#起源于函数式编程的传统(因此是“F”)。虽然它也从C#,LINQ和Haskell中获取了经验,但它也深深地植根于ML家族的语言。从一开始,F#就被设计成.NET家族的一等公民。这意味着F#是运行在CLR之上的,包含面向对象的编程,并确保了和.NET框架的平稳集成。(51CTO之前的相关报道:微软计划在开发平台集成F#语言

我是技术在研究组织和产品开发组织之间转移的狂热追求者。正因为这样的技术转移,我们才能够将很好的研究想法“产品化”,并及时的交付给客户。这是微软从15年前创立微软研究院至今发生的最好的事情之一。现在我们有了另一个技术转换的例子。我们将与Don Syme以及微软研究院的其他人一起合作,将F#语言完全集成进Visual Studio,并继续对F#进行创新和改进。我认为,F#是基于CLR的另一个头等编程语言。

有几方面的因素激发了我们对F#的兴趣。正如我先前所提到的,我们旨在把这样好的想法从函数式编程的世界延续至主流的开发。此外,函数式编程有些数学倾向,这似乎很自然的吸引了那些用数学符号表述关键领域的专业人士,这些领域包括金融、科学和技术运算。强类型系统所带来的一些保障是它语法上最大的吸引力。这些保障在以上这些领域中常常会很关键,而且还能通过Visual Studio带来极好的工具体验。

另一个动机是进行不断的投资,使.NET框架成为学术领域的不错选择。现在,世界上许多计算机科学专业教授函数式编程语言。我们相信,通过F#和诸如IronPython、IronRuby之类的语言,我们能为学生和教育工作者们提供当前主流之外的其他选择,并且能在课程中使用这些语言。这一点为教育工作者提供了一个选择,使他们能在不同的课程中使用Visual Studio作为其一致的工具集。

51CTO编者:函数式编程这一概念的出现已经有了好几个年头,但是到目前为止,在开发者中间仍然不太受欢迎。有评论说函数式概念太复杂,“似乎只有拿着博士学位的人才玩得转”;也有人对其赞赏不已,认为这种编程风格大大的简化了代码,令编码过程更加清晰。除了F#之外,Scala语言也是一个比较广泛为人所知的函数式编程语言,有兴趣了解的读者可以参考51CTO的Scala编程语言专题

【相关阅读】

  1. Visual Studio 2010将正式包含F#
  2. Scala如何改变了我的编程风格:从命令式到函数式
  3. 关于测试和恢复性的争论:面向对象vs.函数式编程
  4. Scala编程语言
  5. Visual Studio 2010爆F#二进制兼容性问题
责任编辑:yangsai 来源: Don Syme的博客
相关推荐

2011-06-09 09:52:41

F#

2009-11-09 17:51:51

F#函数式编程

2010-01-07 10:04:18

F#函数式编程

2009-08-18 18:01:20

F#函数式语言

2010-07-07 13:11:20

ScalaF#C#

2010-07-09 14:12:00

ScalaF#C#

2021-08-23 15:05:21

PyretJavaScript编程

2021-08-02 08:21:53

Python编程语言开发

2012-08-23 14:23:33

函数式编程

2015-03-15 01:55:25

编程语言排行榜

2015-05-25 15:06:28

JavaScript函数式编程

2016-12-26 15:23:21

戴尔

2019-07-11 08:00:00

JavaScriptJulia编程语言

2012-11-06 10:01:35

ContinuatioF#

2022-02-19 22:47:46

编程语言开发C++

2017-11-14 11:12:50

Go语言编译器

2011-12-07 12:00:06

ibmdw

2011-03-28 14:02:07

MirahJava对手

2021-10-10 12:45:13

编程语言开发

2012-02-17 09:33:08

KotlinJavaJVM
点赞
收藏

51CTO技术栈公众号