函式式程式語言F

2021-05-28 17:29:26 字數 1379 閱讀 2828

文/高昂

作為微軟支援的第乙個函式式語言,f#在專案中被越來越多的開發者選用,8月的tiobe排行榜,f#挺進前二十。

源於微軟研究院的f#語言因其優良的設計和強大的並行程式設計能力,正得到越來越多.net開發者的選用。在8月的tiobe語言流行度排行榜中,f#語言首次進入了前二十位。f#是微軟.net框架環境下的靜態型別化函式式程式語言,支援以物件導向或泛型程式設計等多種風格來撰寫程式**。

f#基於函式式程式語言objective caml(ocaml)設計,具有ocaml常用的核心語言功能,以及函式式程式語言的其他特性。ocaml是在perl之外,又一門以駱駝為吉祥物的程式語言。ocaml被選中的部分原因是它提供了函式式、命令式和物件導向的混合程式設計風格支援。在ocaml語言中,函式式能夠像變數一樣方便地在程式中傳遞,並且ocaml是能夠自動偵測程式范型的函式式程式語言。

f#語言最初由微軟研究院的首席研究員don syme設計,設計者don syme於2023年從劍橋大學計算機實驗室獲得博士學位,他還參與了c#泛型和.net clr的設計工作。在語法設計上f#具備優雅的結構,同時f#被設計為型別安全且具備良好效能的編譯語言。在微軟決定將f#進一步推廣應用之後,f#被轉移到微軟專門的開發部門維護和更新,並在.net framework和visual studio 2010開發環境中為f#提供了全面支援。此外,開發者還能夠在visual studio 2008中使用f#,或借助mono在linux系統上使用f#。

作為微軟支援的第乙個函式式語言,f#在專案中被越來越多的開發者選用,這與f#對程式併發和非同步程式設計的良好支援密不可分。微軟為f#新增了不少簡化開發者處理程式並行和非同步程式設計的便捷特性,以輔助開發者輕鬆完成多核併發和web分布式系統的應用開發。在常見的開發模式下,f#用於撰寫安全併發和非同步處理相關的程式元件,使用者介面則使用visual basic或c#來編寫,而最終產品由f#實現元件和其他.net開發語言組織而成。

不僅如此,f#目前還廣泛用於xbox 360遊戲平台上的**開發中,為開發者提供了在xna game studio環境下的f#程式設計支援。微軟研究院曾使用f#、trueskill以及xna開發了一款名為「the path of go」、具備故事情節的3d圍棋遊戲,以展示f#在遊戲開發和人工智慧領域方面的併發程式設計能力。

感興趣的開發者可以閱讀don syme及其他幾位f#語言設計者共同撰寫的《expert f# 2.0》一書,深入學習並使用f#語言。也可以閱讀遊戲開發者giuseppe maggiore撰寫的friendly f# with game development and xna一書,學習f#語言在遊戲開發中的應用。

作者高昂,中國標準化研究院助理研究員,從事資訊科技標準化研究工作。關注開源社群,也是osgeo中國和infoq中文站成員。

F 函式式程式語言 學習過程

首先,我要宣告 為什麼要學習f 我們在物件導向的程式設計過程中看到,物件技術是多麼的優越 接近生活。但是,軟體程式設計,畢竟不是生活 如何能夠最大幅度的提高軟體開發的效率,才是真正我們要考慮的。一 我看中了它的非同步程式設計能力。一切都是函式,變數也是 所以,多執行緒執行下不需要擔心 死鎖和臨界區 ...

F 程式設計 函式式程式設計之Records

當你想把資料組成乙個結構化的格式,而不需要太複雜的語法時,你可以使用f 中的record型別。record型別與c語言的struct型別基本一樣,儲存一組型別的值,通過欄位的值來獲取。定義乙個record型別很簡單,只需要在大括號內定義系列的名稱 型別就可以。要例項化乙個record,只需要提供對應...

函式式程式語言python 函式式程式設計

函式是python內建支援的一種封裝,我們通過把大段 拆成函式,通過一層一層的函式呼叫,就可以把複雜任務分解成簡單的任務,這種分解可以稱之為面向過程的程式設計。函式就是面向過程的程式設計的基本單元。而函式式程式設計 請注意多了乙個 式 字 functional programming,雖然也可以歸結...