F#學習過程中的一點看法

來源:互聯網
上載者:User

接觸F#其實已經很久,因為沒有用,也就沒有仔細去學,現在在公司的一部分工作也是負責新技術的研究,在弄VS2011過程中發現MVC4中有模型層直接用F#的模板,看來微軟有點要實際推F#的感覺,於是決定系統的學習一下F#。下面聊聊這幾天學習F#的一些感覺:
1)函數式編程其實並不是什麼新的玩意,可以看做是一種過程式語言,屬於結構化編程,面向過程。這其實也符合我原來對面向過程和物件導向編程的一些看法(可以參考我原來的博文),其實面向過程很適合哪些問答式,來料加工式應用情境的應用編程(比如Web編程,資料庫編程),物件導向和面向過程也是相互可以替代,辯證統一的。

2)F#的文法在進行函數式編程時很多地方確實比較方便,但方便也不能亂用,比如遞迴,如果F#內部不對遞迴做一定最佳化,其實很多時候在數學上的遞迴表達還是需要轉換成迭代來實現,否則效率和效能都是大問題,比如斐波拉切數計算.

3) 對於微軟來講,F#應該不是簡單的函數式編程這麼簡單,而是微軟主打併行計算的一種語言.比如,F# 預設就不支援變數,只支援標識(可以看做是c#中的const變數,常量),本質就是為了消除並行計算中的記憶體訪問並發問題.F#對函數定義的文法支援非常到位,(就像寫數學公式),這也是並行計算所需要的.

4)F#對序列,元組,集合等類型的支援雖然很大,看起來簡單,但程式員的自主控制性比較差。F#學到現在,我覺得就match with(條件分支,類似C#的switch)和並行計算支援是亮點,其它每感覺到什麼很特別的地方。

5)F#的一個特色就是取消了{}這種語言塊標誌,{}現在變成了對象邊界(類似json格式對象),語言塊的確定主要靠縮排和分號(;)來表達,感覺對於語句多點的程式碼群組織非常不利,至少不是非常直觀。當然,從另外一個角度講,這就從根本上要求你寫程式比較採用良好的縮排風格,否則你得到的是語法錯誤,這算是一點點的好處。

6) 其實縱觀這麼多進階程式設計語言,其實都是大同小異,各自側重不同,在編程思想上沒有突破的情況下,各個程式設計語言廠商不得不一邊在文法上下功夫,加些文法糖來避免審美疲勞,一邊嚮應用靠近,提供一些企業級的庫支援.這就使得程式員的學習成本在不斷上升,雖然是文法糖,但你也不得不去學.另外也使得語言套件越來越大,開發架構人為的越來越複雜,開發出來的程式發布和部署的體積也是越來越大,而效率和效能則在硬體商的升級中遮蓋了過去。

.......

PS:做程式員很辛苦,明知道大同小異,但也不得不學!

另外Apress,.Foundations.of.F.Sharp.(2007).BBL.[1590597575].pdf這本書有些地方講得還是不錯,但非常坑爹的地方是一是有些文法解釋不到位,另外就是很多範例程式碼無法運行,文法都是錯誤的.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.