1.2 通往實用函數編程之路

來源:互聯網
上載者:User

標籤:使用   os   資料   art   io   代碼   

1.2 通往實用函數編程之路

 

函數式編程的思想發源要早於第一台電腦,其曆史可追溯到上世紀三十年代,當時 Alonzo Church 和 Stephen C. Kleene 引入一種理論,叫 lambda 演算,屬於數學基礎研究。雖然它未能實現其初衷,但仍有一些邏輯分支在使用,並發展出有用計算理論。為了學習函數式編程的基本原理,有必須簡單瞭解一下lambda 演算(下一章)。發明電腦以後,Lambda 演算放棄了它原來的領域,成為早期函數式程式設計語言的靈感。

 

1.2.1 函數語言

 

到 2008 年,第一個函數式程式設計語言走過了 50 年的曆史。LISP,由約翰麥卡錫(John McCarthy)於 1958 年建立,直接基於 lambda 演算理論。LISP,一種極其靈活的語言,提出了許多今天仍在使用的編程思想,包括資料結構、垃圾收集和動態類型。

上世紀七十年代,羅賓米爾納(Robin Milner)開發了一種語言,ML,它是包括現在F# 語言系列中的第一個。受類型化 lambda 演算的啟發,ML 添加了類型的概念,甚至能夠像我們現在 .NET 中處理泛型的做法一樣寫泛函數;ML 還有強大的類型推斷機制,這是 F# 能寫出簡潔程式的關鍵。OCaml 出現於 1996 年,是對 ML 語言的務實擴充,它也是最早把的物件導向和函數式方法結合起來的語言之一。F# 深受OCaml 的啟發,為了成為一流的 .NET 語言,且是真正的函數語言,必須將這些範式結合起來。

其他重要的函數語言還有 Haskell (一種純正、優雅的數學語言)和 Erlang (因訊息並發傳遞而著名,我們將在第十六章討論)。我們學習Haskell 和 LISP,更多是有關優於F# 的主題,但首先看一下 F#  的曆史。

 

1.2.2 .NET 平台上的函數式編程

 

第一個版本的 .NET 於 2002 年發布,和 F# 語言誕生於同一年。F# 最早是唐賽姆(Don Syme)和同事合作的一個微軟研究項目,其目標是把函數式編程引入 .NET。F# 和類型化函數式編程通常會更加對 .NET 中泛型的需要分量,F# 的設計人員深入參與.NET 2.0 和 C# 2.0 中泛型的設計與實現。

由於在核心架構中實現了泛型,F# 進展更快,在F# 中使用的編程風格也開始改變。它開始是作為支援對象的函數語言,但作為成熟的語言,取兩種風格中的長處似乎更自然。因此,F# 現在更精確地說是一種多範式(multiparadigm)語言,結合了函數式和物件導向的方法,還有一套工具,能夠編寫互動方式指令碼。

 

[MICROSOFT F#]

 F# 是針對 .NET 架構的函數式程式設計語言,它將函數式編程的簡潔性、表現性和組合性風格與.NET 的運行庫、庫、互通性、物件模型結合在一起。[F# 首頁]

 

F# 自誕生之初就一直是 .NET 的一等公民,它不僅能夠訪問所有標準的 .NET 組件,而且,同樣重要的是,所有其他 .NET 語言也能夠訪問用 F# 開發的代碼,這樣,既可以用 F# 開發獨立 .NET 應用程式,也可以開發大型項目的一部分。F# 一直受Visual Studio 支援,在 2007 年,F# 開始從研究項目轉變為完全產品級的語言;2008 年,微軟宣布 F# 將成為隨 Visual Studio 2010 發布的語言之一。就這一點而言,也應該成為關注 F# 和整個函數範式很好的理由,但現在讓我們看看更務實的原因。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.