您的浏览器不支持JavaScript语法,但是并不影响您获取本网站的内容 网页设计,网页设计公司,网页程序设计,网站程序设计,台北网页设计,无障碍网页设计,3d互动网页设计, 720度环场,网站建置,主机代管,电子商务,政府机关网页设计,公家机关网页设计,网站制作公司
网页设计,网页设计公司,网页程序设计,网站程序设计,台北网页设计,无障碍网页设计,3d互动网页设计, 720度环场,网站建置,主机代管,电子商务,政府机关网页设计,公家机关网页设计,网站制作公司
网页设计程序设计网站规划虚拟主机与主机代管关于网绎我们的服务我们的客户无障碍网页网站优化SEO联络我们
网页设计,网页设计公司,网页程序设计,网站程序设计,台北网页设计,无障碍网页设计,3d互动网页设计, 720度环场,网站建置,主机代管,电子商务,政府机关网页设计,公家机关网页设计,网站制作公司
Logo 排版用图片
:::回首页网站地图繁体中文ENGLISH日本语rss
:::
关于网绎
我们的客户
我们的服务
无障碍网页
SEO网站优化
信息与知识库
联络我们
关于网绎装饰用图片
无障碍网页的专家
透过网绎将您的网站轻松的通过无障碍网页检测标准,达到转换网页无障碍,扩充单元无障碍,新增内容无障碍的功能。
:::
信息与知识库
标题 F#:微软下一代重量级语言
主题分类 系统与程序设计
原文章出处 蔡学镛-技术顾问

微软从2002年开始研发F#,2005年推出第一个版本,现在的F#已经接近成熟。2007年底,微软宣布将F#从研究室的项目转移到产品部门,进入产品化的阶段,在下一个版本的Visual Studio中,F#将会成为正式的一员,和C#、Visual Basic平起平坐。目前,F#也已经和Visual Studio做了初步的整合。

一个新语言的诞生,有它的时代背景,对F#来说,自然是函数式编程(FP,Functional Programming)的因素。事实上,除了具备FP的能力,F#在命令式编程语言(Imperative Programming)与对象导向编程(OOP)方面的能力,也是不打折的。因此,利用F#写程序,你可以享有高度自由,想用什么样的Paradigm,可以自己作主。但如果完全不使用FP,那么使用F#的意义便不大,还不如回头用C#。

虽然F#比其它FP语言(Haskell、Erlang、Common Lisp)似乎更好学(因为语法比较不奇怪),但是一般人要善用F#并不容易,主要是因为FP的Paradigm和我们惯用的OOP与Imperative Programming不同。因此,在熟悉F#的过程中,一开始最好强迫自己只用FP的方式写F#程序。

函数式编程常用到的技巧包括:Higher-Order Function、Currying、Lazy Evaluation、Continuations、Pattern Matching、Closure、List Processing、Meta-Programming。令人惊讶地,F#对上述的支持都相当不错。许多FP语言在这些方面可能还比不上F#完整。一开始写F#程序,尽量多用这些技巧,宁可矫枉过正,这是学习的必经阶段。

如果你想要开始习惯用F#写FP程序,可以试着这么做:
● 将Object为主的程序代码,转回Procedure的方式:将Object化成Record;将Method转成Function;将this(或self)当作Function的参数;把Function集中放到Module(模块)。

● 使用循环的地方,尽量转成递归(Recursion)。先不要管执行效率的问题。

● 将用到if/else或switch/case的地方,改用Pattern Matching(模式比对)。

只要做到这三件事,你的F#程序会具有浓浓的FP风味。

F#由于是建构在.NET平台上,所以当然和.NET有天衣无缝的整合。
事实上,F#所提供的交互式环境,对于学习.NET API来说,是相当不错的工具,会比PowerShell更适合程序员使用。

由于F#的开发相当早(2002年),加上F#比较属于静态,而不是动态的语言,所以目前F#并没有以.NET的DLR(Dynamic Language Runtime)为平台。至于未来F#会不会搬到DLR上头?目前情况还不明朗。

以往用FP开发的系统多以科学和财务为主,现在有了F#和.NET,应该可以为FP开拓更广的应用领域。我相信,改用F#写.NET各种应用(ASP.NET、GUI、LINQ)的做法,会逐渐形成风气。

F#也是一种语言导向编程(Language-Oriented Programming)的语言。所谓的「语言导向编程」,就是Meta-Programming,也就是「可以建立自己的DSL(Domain-Specific Language)」。我写过一篇关于「GPL & DSL」的文章,但是这篇文章并没有引起太多读者的注意,显然大家尚未意识到Meta-Programming的重要性,相当可惜。

F#对于Meta-Programming的支持相当好,有多种方式可以实作出DSL。有了F#,你不需要用到ANTLR这样的外部工具,也可以建立自己的DSL。

如果你现在想学习F#的话,要特别注意,目前F#的文件写得并不好──不完整、未更新而且凌乱。想透过阅读官方的在线数据学习F#,效果可能不佳,你必须搭配阅读APress出版的《Expert F#》,作者之一的Don Syme是F#计划的负责人。

尽管目前文件上有缺失,但是F#已经转移到产品部门,所以我相信不用多久,这些问题就会逐渐解决。

虽然F#已经推出3年,但是过去仅算是实验室的项目,并不是商品。在TIOBE排行榜中,F#并入ML,目前ML排名第39,并没有特别好的表现。不过,随着F#商品化之后,应该就会改善,未来这几年,F#势必会渐渐逼近前20名。

整体来说,F#是很不错的语言,程序开发人员如果能熟悉F#,应该可以提升软件开发的生产力。身为微软.NET家族的唯一FP语言,F#的地位相当特殊且重要。以F#的先进与方便,未来「说不定」会成为C#的强大竞争对手。有人甚至认为,使用过F#之后,就不会想用其它.NET语言,这是真的──至少对我来说是如此。

作者簡介:
蔡學鏞-技術顧問
清華大學資訊工程碩士,曾任華碩集團軟體工程師、元智大學資訊系講師、美商歐萊禮出版社技術編輯、臺灣微軟特約專欄作家。

文章整理: 网绎数字科技 Murray
关键词: 微软新语言,F#

go to top
通过第三优先等级无障碍网页检测
   
网绎数码科技网页设计 地址:台北市复兴南路一段321号3楼 Tel: (02)2704-1758(代表号) Fax: (02)2704-0372 Email:e-service@eki.com.tw
网页设计程序设计网站规划虚拟主机与主机代管关于网绎我们的服务我们的客户无障碍网页网站优化SEO联络我们