函數式編程語言F#:基于CLR的另一個頭等編程語言
近幾年來,編程語言的一個重要的主題已經轉向函數式編程的觀念。
諸如C#中的lambda表達式和.NET 2.0中的范型等語言特性都源于函數式語言,而LINQ更是直接基于函數式編程技術。通過LINQ和Parallel FX,函數式語言的想法正幫助我們解決當今業界所面臨的最大挑戰:從防止數據和對象之間的錯誤匹配,到多核與并行計算領域所帶來的挑戰。
微軟研究院已經著手在一些項目中研發這些關鍵技術中幾個技術。MSR目前所研發的很有前途的項目之一就是由Don Syme帶領的F#編程語言。F#起源于函數式編程的傳統(因此是“F”)。雖然它也從C#,LINQ和Haskell中獲取了經驗,但它也深深地植根于ML家族的語言。從一開始,F#就被設計成.NET家族的一等公民。這意味著F#是運行在CLR之上的,包含面向對象的編程,并確保了和.NET框架的平穩集成。(51CTO之前的相關報道:微軟計劃在開發平臺集成F#語言)
我是技術在研究組織和產品開發組織之間轉移的狂熱追求者。正因為這樣的技術轉移,我們才能夠將很好的研究想法“產品化”,并及時的交付給客戶。這是微軟從15年前創立微軟研究院至今發生的最好的事情之一。現在我們有了另一個技術轉換的例子。我們將與Don Syme以及微軟研究院的其他人一起合作,將F#語言完全集成進Visual Studio,并繼續對F#進行創新和改進。我認為,F#是基于CLR的另一個頭等編程語言。
有幾方面的因素激發了我們對F#的興趣。正如我先前所提到的,我們旨在把這樣好的想法從函數式編程的世界延續至主流的開發。此外,函數式編程有些數學傾向,這似乎很自然的吸引了那些用數學符號表述關鍵領域的專業人士,這些領域包括金融、科學和技術運算。強類型系統所帶來的一些保障是它語法上最大的吸引力。這些保障在以上這些領域中常常會很關鍵,而且還能通過Visual Studio帶來極好的工具體驗。
另一個動機是進行不斷的投資,使.NET框架成為學術領域的不錯選擇。現在,世界上許多計算機科學專業教授函數式編程語言。我們相信,通過F#和諸如IronPython、IronRuby之類的語言,我們能為學生和教育工作者們提供當前主流之外的其他選擇,并且能在課程中使用這些語言。這一點為教育工作者提供了一個選擇,使他們能在不同的課程中使用Visual Studio作為其一致的工具集。
51CTO編者:函數式編程這一概念的出現已經有了好幾個年頭,但是到目前為止,在開發者中間仍然不太受歡迎。有評論說函數式概念太復雜,“似乎只有拿著博士學位的人才玩得轉”;也有人對其贊賞不已,認為這種編程風格大大的簡化了代碼,令編碼過程更加清晰。除了F#之外,Scala語言也是一個比較廣泛為人所知的函數式編程語言,有興趣了解的讀者可以參考51CTO的Scala編程語言專題。
【相關閱讀】