此博客文章停止维护,访问个人博客链接
“为什么使用F#”系列将带你领略F#的主要特性并展示F#如何在你日常开发中带来帮助。
C#不能比拟的优点
如果你已经对C#或Java非常熟悉,你可能会问为什么F#是一门值得我学习的语言?我将F#的一些主要优点归纳成下面几个主题:
- 简洁。 F#看上去更加的紧凑,因为它去除了像大括号,分号这些与代码没有太多关系的符号(作者把它叫做代码”噪声“)。你几乎不需要指定一个对象的类型,因为它有一个强大的类型推到系统。通常同样的问题F#只需要几行代码就可以解决。
- 方便。很多普通任务用F#去实现会变得非常的简单,比如创建和使用复杂的类型定义,列表处理,比较和判等,状态机等等。在F#中因为函数是一等公民,所它能很容易的通过创建一个函数然后将其它函数作为其参数来构建一个功能强大且重用性强的代码,或者通过合并已有的一些函数来构建一个新的功能。
- 正确性。F#有非常强大的类型系统它能够阻止很多常见的错误比如空引用异常。另外,你甚至可以用类型系统自身去对业务逻辑进行编码,那样的话就真正的不可能写出错误的代码,因为他可以在编译的时候捕捉到类型错误。
- 并发性。F#中有大量的内建工具和库帮你编写一些在一个时间点同时处理多件事的系统。异步编程直接得到支持,比如并发。F#拥有一个消息队列系统能够很容易的支持事件处理和响应编程。同时在F#中数据结构默认都是不可以修改的,共享状态和避免加锁变得非常容易。
- 完整性。尽管F#的核心是函数式编程,但它不是100%纯函数式编程,它同时也支持其他的范式编程,他能够很容易的和非纯世界的web,数据库,以及其等他应用程序进行交互。尤其是,F#被设计为混合了函数式、面向对象语言,因此他几乎可以做所有C#能做的事。当然F#也无缝的集成在.NET生态中,它提供了所有可以访问的第三方.NET库和工具。 最后他还是Visual Studio的一部分,这也意味着你有一个很好的编辑工具,他提供自能提示,调试和许多诸如单元测试,源代码控制以及其他开发任务的插件。
在接下来的一系列文章中,我将利用一些独立的代码片段来尝试阐述F#的每一个优点(我也会用一些C#的代码进行比较)。我会简要的覆盖所有F#的主要特性,包括模式匹配(pattern matching),功能函数组合以及并发编程。当你看完”为什么使用F#"系列后,我希望你会对F#的强大和优雅印象深刻,并促使你在下一项目中使用它。
如何阅读和使用例子代码
文章中所以的代码都是可以交互运行的,我强烈的建议你去理解每篇文章中的代码片段。对已大的代码文件我都提供了相应的连接。
这个系列不是教材,因此我不会太多的介绍为什么代码要这样工作。不用担心当你不理解其中的一些细节。这个系列正在的目的是向您介绍F#同时激起你想更深入学习他的欲望。
如果你已经有使用C#或Java经验。你会发现你很容易理解用类似语言编写的代码,即使你不熟悉其中的关键字或库。你可能会问“怎么去赋值一个变量”或“我怎么去做循环”,有了这些答案,你将会很快的进行一些基本的编程。
而这些在F#中就不奏效了,因为F#纯函数式编程中没有变量,没有循环和对象。但是不要气馁-这是很正常的现象,你想更深入的学习F#,可以参考“
learning F#”里面提了一些有帮助的建议。
注:本人英语有限,如有出入不吝赐教。感谢原作者(
scottw)
why use F#