F#简明教程一:F#与函数式编程概述

原创
开发 开发工具
F#是微软.NET平台上一门新兴的函数式编程语言,通过函数式语言,开发人员可以轻松应对多核多并发时代的并行计算和分布问题。本文是F#简明教程的第一章,带您走进F#和函数式编程。

【51CTO独家特稿】F#是微软.NET开发平台的一门编程语言,其最大的特点是对函数式编程(FP,Functional Programming)的引入;F#对面向对象(OOP)编程的支持也很出色,使用F#语言,开发人员可以自由选择函数式编程或面向对象编程来实现他们的项目。此外,F#还可以与.NET平台上C#、VB等其他编程语言紧密结合。

#T#CPU多核心化和云计算的背景下,函数式编程可以很好的解决多并发运算的问题(在处理并发问题方面,面向对象编程存在一定程度的固有缺陷,比如类和实例化过程中产生的一些副作用,详细请参考51CTO.com对另一门函数式编程语言Erlang的视频访谈《因并发而生 因云计算而热:Erlang专家访谈实录》)。微软看到了这个趋势,试图通过专门为函数式编程打造的F#语言提升.NET平台在并发处理、多核多并发方面的能力,进一步提升开发人员的生产力和代码运行效率。

在2009年的TechED上,51CTO.com就F#和函数式编程的问题视频采访了微软MVP赵颉老师,我们可以采访视频了解F#和函数式编程最近的发展,详细请参考《TechED 09视频专访:F#与函数式编程语言》。

F#小背景:看似年轻的F#已经有近10年的历史。最初由微软研究院的Don Syme于2002年立项研发;F#在2005年推出第一个版本,2007年底,微软宣布F#进入产品化阶段。在不断的改进中,F#从C#、Linq和Haskell中吸收了很多优点。

F#编程起步

F#可以运行在.NET Framework 2.0版本以上的平台。如果你的Visual Studio之前没有安装F#,可以从微软F# Developer Center获得(http://msdn.microsoft.com/en-us/fsharp/default.aspx)。

不能免俗,让我们来看看F#的Hello World代码:

  1. #light  
  2. System.Console.WriteLine(“This is one hello”)  
  3. printfn “This is another hello” 

 

将代码保存为hello.fs文件后,我们需要在命令行中通过fsc.exe编译生成一个.NET程序集。在命令行中的编译代码如下:

  1. fsc hello.fs 

通过上面的代码,我们就得到了常见的可执行文件(.exe文件),这就是我们F#的起步——hello.exe。

F#小提示:F#是.NET平台上的一个编译型语言,但仍然可以像脚本语言一样运行。可以使用Visual Studio或fsi.exe(在F#安装目录下的bin目录)进行F#脚本的执行。

代码解读

让我们来仔细看看hello.fs文件里的代码

◆程序首先以“#light”开始,在以后的F#之路上,我们会经常看到“#light”;大多数时候,“#light”总是出现在F#程序的开始位置,这是F#轻量级语法的标识;在最新的F#版本中,#light将作为默认选项。

◆“System.Console.WriteLine”调用一个.NET基础类(熟悉C#或VB.NET的朋友会相当熟悉)用来初始化一些必要的功能。

◆“printfn”是F#的一个常用函数,他会将双引号中的参数输出到控制台上显示。

跟其他程序的Hello World一样,这段F#代码简单易懂,看着跟其他语言写就的Hello World还有些相似;但作为函数式编程语言,F#的语法和编程中的思路却有很大的不同。在下周的章节中,我们将深入F#编程,讲解F#的类型系统及编译机制

责任编辑:佚名 来源: 51CTO.com
相关推荐

2010-01-26 08:25:06

F#语法F#教程

2010-01-15 08:33:13

F#F#类型推断F#教程

2011-06-09 09:52:41

F#

2009-11-09 17:51:51

F#函数式编程

2010-07-07 13:11:20

ScalaF#C#

2010-04-07 16:51:59

F#

2010-07-09 14:12:00

ScalaF#C#

2009-08-18 18:01:20

F#函数式语言

2012-11-06 10:01:35

ContinuatioF#

2009-09-10 14:18:59

Functional F#

2009-06-22 13:43:01

F#函数式编程

2009-08-13 17:39:48

F#数据类型Discriminat

2009-08-19 09:42:34

F#并行排序算法

2012-03-12 12:34:02

JavaF#

2018-05-23 08:41:14

编程语言Azure Searc数字化

2009-11-16 09:05:46

CodeTimer

2009-12-04 09:16:44

Visual Stud

2010-03-26 19:22:08

F#代理

2009-12-14 09:04:10

F#运算符

2009-08-13 17:25:21

F#入门
点赞
收藏

51CTO技术栈公众号