今天早上看到園子裡首頁上新聞鏈結,發現f#發布了ctp版本。這一版本的發布,可以說標誌著f#正式進入了.net程式設計師的視野。
don syme 在部落格裡講解了主要的變化。原文請看:
主要的變化有三方面:
1、更好的指令碼執行能力,更好地專案、語言服務支援。
這個沒有什麼可說的,早先已經有過相關報道,試用之後,覺得還是相當不錯的。不過,視窗設計器還是沒有在f#專案中增加,目前還要像過去一樣,使用c#新建乙個專案後,更改頁面語言為f#,並更改config檔案的方法來開發web程式。
2、在語言層面,這一版本最大的特色,就是增強了浮點數的支援。
新增了一種稱之為度量單位(unit of measure) 的語法,通過編譯器技術,對單位(unit)進行了強型別的支援。增加這種語法支援的動機,源於nasa(美國航空和宇宙航行局)的火星氣象衛星在2023年九月丟失,而丟失的原因是計量單位混淆。看來,f#專案組希望能夠在資料運算精度要求高的場景下也能夠很好的工作(金融、科學計算等領域)。不過,很奇怪的是這樣乙個新特性,並不在核心程式集中。
具體例子請看:
另外,乙個是新增了autoopenattribute屬性。
這個屬性用於在模組上,其所在的命名空間open時,模組自動開啟。這個特性用在可選型別擴充套件上非常適合(這個在 f#學習這路(3)如何組織程式下中討論了什麼是可選型別擴充套件)。
最後我注意的變化是新增了乙個圖表的支援。支援excel 的chart,還支援了xceed的圖表,程式集名為fsharp.powerpack.plot,fsharp.powerpack.plot.excel,fsharp.powerpack.plot.xceed。不明白f#專案組在目前還沒有搞好設計時支援的情況下,為什麼新增這些無關輕重的功能。
3、對**進行了重構,劃分為三大程式集。
核心程式集名為fsharp.core.dll,另乙個重要程式集名為fsharp.powerpack.dll,最後乙個重要程式集為fsharp.powerpack.linq.dll。
前面很講的度量單位,它的函式庫在fsharp.powerpack.dll中,命名空間為microsoft.fsharp.math。
注意點:
1、我們原先的一些相容ocaml的函式都被遷移到fsharp.powerpack.dll中了,這可能讓我們原先的**不能執行。需要我們新增程式集引用,重新編譯。
2、閱讀過我之前寫的系列部落格的朋友注意,之前的文章談到的某些內容可能已經失效了。例如之前談到的名字空間現在已經不可以使用非完全限定方法開啟了,並且命名空間也不可以取別名了,微軟解釋稱,這是為了與.net平台其餘的語言保持一致性,最佳的工程實踐。從目前改進來看,非常不錯,原先為了相容ocaml,又為了保持與.net平台的一致性,語法非常複雜、混亂。現在看來微軟採用優先與.net平台保持一致性來規範化、簡化f#語言。簡潔、一致才是美。
總的來說,ctp版的語言服務已經做的相當不錯了,智慧型提示、語法錯誤報告與c#基本一致了。但到ctp了,設計時體驗都沒有做,這是很失望的。
新加入的度量單位,是個不錯的嘗試,c#4.0可能會加入這個特性。
如果你想看看詳細的操作畫面,請看:這篇部落格
2、f# sample
雲時代的物聯網,主要帶來了哪些便利?
隨著近年來物聯網的發展,雲計算將加速資源整合和優化,根據不同的需求,在資源池中得到相應的資源支援,以此來節約成本,提高資源的利用率,助推社會結構調整,實現科學化發展,這是一種趨勢。如同這社會的主體,為資訊化發展提供源源不斷的動力。市場上所說的雲計算就是指iaas,paas和saas這三種服務。iaa...
5G為大資料的發展帶來了哪些幫助
首先,5g與大資料之間有著比較密切的關係,一方面5g通訊會進一步促進資料的生產和交換,為大資料提供更加多維度的資料 另一方面5g的技術體系也為大資料的價值化應用提供了新的出口,這會進一步提公升大資料的價值。從當前的技術體系結構來看,5g與大資料之間還有兩個重要的技術環節,乙個是物聯網技術,另乙個是人...
邊緣計算的爆發為安防全產業帶來了怎樣的變化?
隨著物聯網的快速發展以及資料處理 2.0 時代的來臨,邊緣計算很快成為了廣受追捧的熱門技術。idc 資料顯示,未來超過 50 的資料需要在網路邊緣側分析 處理和儲存,邊緣計算市場規模將超萬億,成為與雲計算平分秋色的新興市場。廣義的說法是在靠近使用者資料和訪問側,提供低延遲高可靠高可用就近彈性計算服務...