技术趋势Functional Pogramming函数编程风云再起费.pdf

上传人:qwe****56 文档编号:70011039 上传时间:2023-01-14 格式:PDF 页数:17 大小:210.93KB
返回 下载 相关 举报
技术趋势Functional Pogramming函数编程风云再起费.pdf_第1页
第1页 / 共17页
技术趋势Functional Pogramming函数编程风云再起费.pdf_第2页
第2页 / 共17页
点击查看更多>>
资源描述

《技术趋势Functional Pogramming函数编程风云再起费.pdf》由会员分享,可在线阅读,更多相关《技术趋势Functional Pogramming函数编程风云再起费.pdf(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 DD 凤凰平台 技术趋势:技术趋势:FunctionalPogrammingFunctionalPogramming 函数编函数编程风云再起程风云再起 甫于日前落幕的 SoftwareDevelopment2.0 研讨会,来宾之一的 AndreiAlexandrescu 被问到未来编程语言的趋势时,他认为函数编程可能会再度兴起。我认同他的看法,我过去发表的 JavaFX 文章中,碰巧也有提到这一点。目前两大开发平台都开始出现函数编程思维的踪迹。Java DD 凤凰平台 平台的 JavaFX 语言,具备所有重要函数编程的特色,所以应该归类为函数语言;.NET 平台的 C#3.0 也存在相当多函

2、数编程的影子。微软的 LINQ 本来就源自于函数语言,更不用提微软官方的 F#语言,F#沿用相当多 ML 语言的语法,更是彻底的函数语言。根据 Tiobe 对于 2007 年 12 月语言需求所做的统计,面向对象语言占 54.4%,程序语言占 41.Array%,函数语言占2.0%,而逻辑语言占 1.8%。以上加起来刚好百分之百。DD 凤凰平台 但是,这样的分类并不精确。现在的语言很少是单一思维,几乎都是多重思维,特别是面向对象和函数编程,因为两者间并没有冲突的地方,许多面向对象语言会渐渐纳入函数编程的特色。例如,尽管 C#3.0 具有相当多函数语言的特色,但是依然会被 Tiobe 归类于面向

3、对象语言的类别。函数编程最重要的基础是 LambdaCalculus,在 C#3.0 称为Lambda 表示式,在 Python 称为Lambda 函数,在PowerShell 称为 Scriptblock,在 Java 称为匿名方法,不 DD 凤凰平台 同语言会用不同名词称呼它,但其实都是类似的东西。从这个角度来看,许多主流语言多少都具备函数编程的能力。这个趋势应该会延续下去,许多既有语言推出新版本时,会持续加入函数语言的特色。另外,我最喜欢的 REBOL,许多人工智能专家使用的CommonLisp,近年兴起的 Erlang,Perl 高手唐凤专精的Haskell,这些也都是函数语言。为什么

4、我们喜欢函数编程?因为函数编程可以让我们把时间花在有生产力的事情 DD 凤凰平台 上,而不是处理许多琐碎的事。简单地说,函数语言可以让我们用简单的方式写程序,但是威力又强大。编程语言专家 RaviSethi 教授认为简单与威力,正是函数编程的两大优势。简单,来自于以值为中心,不用理会下面平台是什么机器、内存要如何配置、如何指定。函数编程的威力,则来自于递归以及将函数视为First-class的值。自动内存管理虽然始于函数语言,但是近年来已经进入各 DD 凤凰平台 大主流语言。而将函数视为一等的数据型别,也开始进入各大主流语言。这些都要归功于函数语言,尤其是 Lisp。Lisp 是函数语言的始祖

5、,诞生于 1Array58 年,相当于 50年前。换算成人类年龄的话,Lisp 已经算是程序语言中的人瑞了。Lisp 的后继者众多,其中,至今仍然最活跃的是诞生于 1Array80 年代的 CommonLisp,它在 Tiobe 的排名是第十七名。在 PeterSeibel 写出 PracticalCommonLisp一书,并得到 JoltAward 之后,让大家逐渐对 CommonLisp DD 凤凰平台 一改印象,开始认为它不只是学术上的语言,而是一种务实的语言。一般来说,相较于 C、Pascal 这类命令式编程,函数编程的缺点是效率比较差,这也是函数语言一直无法流行的主因之一。不过,随着

6、处理器速度的提升,编译程序技术的进步,都让效率不再是问题,甚至在数学运算上,用 Clean与 OCaml 开发出来的程序,效率也不会比 C 差。尤其是在多核心处理器和分布式计算时代,函数编程更是 DD 凤凰平台 比 Imperative 编程具有更强的优势。例如近年来逐渐受到重视的 Erlang,正是将重点放在 Concurrency 与容错上。用 Erlang 可以轻松开发出来的系统,如果改用别种语言开发,可能会造成程序长度暴增以及不稳定的情况。如果你想学习函数编程,而且如果你使用.NET 平台,我会建议你使用F#;如果你使用Java平台,你可以考虑JavaFX;如果你没有 Java 与.N

7、ET 平台考虑的话,那么你可以选择CommonLisp 与 Erlang。DD 凤凰平台 若未曾使用过函数编程技术,思维就会受到传统Imperative 编程作法的拉扯,一开始时会很不习惯,但只要坚持下去,等到跨过门坎之后,函数编程其实更自然,生产力更高。甫於日前落幕的 SoftwareDevelopment2.0 研討會,來賓之一的 AndreiAlexandrescu 被問到未來編程語言的趨勢時,他認為函數編程可能會再度興起。我認同他的看法,我過去發表的 JavaFX 文章中,碰巧也有提到這一點。DD 凤凰平台 目前兩大開發平臺都開始出現函數編程思維的蹤跡。Java平臺的 JavaFX 語

8、言,具備所有重要函數編程的特色,所以應該歸類為函數語言;.NET 平臺的 C#3.0 也存在相當多函數編程的影子。微軟的 LINQ 本來就源自於函數語言,更不用提微軟官方的 F#語言,F#沿用相當多 ML 語言的語法,更是徹底的函數語言。根據 Tiobe 對於 2007 年 12 月語言需求所做的統計,面向對象語言占 54.4%,程序語言占 41.Array%,函數語言占 DD 凤凰平台 2.0%,而邏輯語言占 1.8%。以上加起來剛好百分之百。但是,這樣的分類並不精確。現在的語言很少是單一思維,幾乎都是多重思維,特別是面向對象和函數編程,因為兩者間並沒有沖突的地方,許多面向對象語言會漸漸納入

9、函數編程的特色。例如,盡管 C#3.0 具有相當多函數語言的特色,但是依然會被 Tiobe 歸類於面向對象語言的類別。函數編程最重要的基礎是 LambdaCalculus,在 C#3.0 稱為Lambda 表示式,在 Python 稱為Lambda 函數,在 DD 凤凰平台 PowerShell 稱為 Scriptblock,在 Java 稱為匿名方法,不同語言會用不同名詞稱呼它,但其實都是類似的東西。從這個角度來看,許多主流語言多少都具備函數編程的能力。這個趨勢應該會延續下去,許多既有語言推出新版本時,會持續加入函數語言的特色。另外,我最喜歡的 REBOL,許多人工智能專傢使用的Common

10、Lisp,近年興起的 Erlang,Perl 高手唐鳳專精的Haskell,這些也都是函數語言。為什麼我們喜歡函數編 DD 凤凰平台 程?因為函數編程可以讓我們把時間花在有生產力的事情上,而不是處理許多瑣碎的事。簡單地說,函數語言可以讓我們用簡單的方式寫程序,但是威力又強大。編程語言專傢 RaviSethi 教授認為簡單與威力,正是函數編程的兩大優勢。簡單,來自於以值為中心,不用理會下面平臺是什麼機器、內存要如何配置、如何指定。函數編程的威力,則來自於遞歸以及將函數視為First-class的值。DD 凤凰平台 自動內存管理雖然始於函數語言,但是近年來已經進入各大主流語言。而將函數視為一等的數

11、據型別,也開始進入各大主流語言。這些都要歸功於函數語言,尤其是 Lisp。Lisp 是函數語言的始祖,誕生於 1Array58 年,相當於 50年前。換算成人類年齡的話,Lisp 已經算是程序語言中的人瑞瞭。Lisp 的後繼者眾多,其中,至今仍然最活躍的是誕生於 1Array80 年代的 CommonLisp,它在 Tiobe 的排名是第十七名。在 PeterSeibel 寫出 PracticalCommonLisp DD 凤凰平台 一書,並得到 JoltAward 之後,讓大傢逐漸對 CommonLisp一改印象,開始認為它不隻是學術上的語言,而是一種務實的語言。一般來說,相較於 C、Pas

12、cal 這類命令式編程,函數編程的缺點是效率比較差,這也是函數語言一直無法流行的主因之一。不過,隨著處理器速度的提升,編譯程序技術的進步,都讓效率不再是問題,甚至在數學運算上,用 Clean與 OCaml 開發出來的程序,效率也不會比 C 差。DD 凤凰平台 尤其是在多核心處理器和分佈式計算時代,函數編程更是比 Imperative 編程具有更強的優勢。例如近年來逐漸受到重視的 Erlang,正是將重點放在 Concurrency 與容錯上。用 Erlang 可以輕松開發出來的系統,如果改用別種語言開發,可能會造成程序長度暴增以及不穩定的情況。如果你想學習函數編程,而且如果你使用.NET 平臺,我會建議你使用F#;如果你使用Java平臺,你可以考慮JavaFX;如果你沒有 Java 與.NET 平臺考慮的話,那麼你可以選擇 DD 凤凰平台 CommonLisp 與 Erlang。若未曾使用過函數編程技術,思維就會受到傳統Imperative 編程作法的拉扯,一開始時會很不習慣,但隻要堅持下去,等到跨過門坎之後,函數編程其實更自然,生產力更高。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁