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















 
 
 




 
 
 
 