學習Scala一段時間的感想
學了一段時間的Scala,總體感覺歸納如下:
揹負了太多Java平臺相容的包袱,為了大量利用Java平臺的強大功能,在設計方面處處考慮兩者的共通性。如語法方面:為了相容JavaBean規範,通過@BeanProperty註解來實現getter和setter,顯得古怪,也現實上增加了語法層面的複雜度 - 優點是缺點,缺點是優點......
以上這點,我估計Groovy、Clojure,也有類似的情況吧? 基於Java平臺,在享受Java強大支撐的同時,必然也要受限於Java平臺,這點我不是很喜歡,如果說做Java EE開發,舊有的知識已經很熟練的情況下,學習Scala的意義必然大大降低了,那麼,剩下來吸引我的語法糖,其獨特之處到底在哪兒?實際上,函式式的影子,在Ruby上已經展現地很好了......
而於效能,估計要不同場景不同分析,在需要充分考慮效能的場景下(不是每時每刻都需要著重考慮效能的,只有在少數情況下,效能問題才會浮現),Scala具備一定場景應用優勢,就是其招牌式的併發能力,進一步講,我認為是方便併發程式設計的能力,因為它在這方面封裝地很好,便於使用,但千萬別搞錯了,絕不是併發能力,因為,Scala跳不出Java平臺的掌控。
另一方面,說是Scala進軍了.Net平臺?但我查了下,好像許久未更新了?退一步而言,就算是在.Net平臺落地生根、開花結果,也只是把上面一句話變變而已:“基於.Net平臺,在享受.Net強大支撐的同時,必然也要受限於.Net平臺”。
據此,我已深信不疑,Scala絕對取代不了Java。通過這種植入式(如JSR-223規範)的實現,永遠都不可能取代Java,再好(至少從目前來看)也是綠葉配紅花。即使是在語言層面,除非官方原生直接支援或吸取借鑑,否則也不可能取代。但我們應該看到,光從語法角度看(因為我是語法糖控),Scala很“現代”,Java已“老舊”,Java的後續版本,是不是也會借鑑一些“時髦點的東西”呢?我覺得這是肯定的。
很遺憾,不管你喜不喜歡Java,它還是會擺在哪兒。但Scala給了你多一種選擇,你可以選擇它,一行搞掂getter/setter,或者像這樣:
"Hello".foldLeft(List[BigInt]())((b,a) => a :: b).reverse.reduce(_ * _)
而不用寫羅羅嗦嗦的Java語句。但自己心裡一定要明白,你喜歡的東西並不能取代Java,你也不應該否認Java,雖然你可以罵Java、討厭Java。
如果你第一次接觸函式式語法,恰好又是通過Scala,你會喜歡上Scala;同樣道理,如果你是通過Ruby第一次接觸函式式語法,估計你深深喜歡上的就是Ruby了。無論如何,你接觸第二門類似語法語言的時候,你的熱情必然不太可能燃燒起來 - 所以,如果你想擴充套件視野,你選一門差不多的語言來學就好了。
回到Java上來說,立志於Java平臺開發的,還是應該首先掌握Java語言本身,走穩了,再學飛。
基於興趣來看待Scala比較現實些 - 有興趣就學,沒興趣就算了。我需要Scala嗎?
相關文章
- Scala 的學習
- Scala學習(五)---Scala中的類
- Scala學習(六)---Scala物件物件
- scala學習
- SVG:初步學習感想SVG
- Scala學習(八)---Scala繼承繼承
- 最近一段時間的總結
- 學習感想——自己簡陋的作品
- Scala學習總結(from scala for the Impatient)
- Scala學習 2 Scala物件導向物件
- Scala學習(三)練習
- Scala學習(四)練習
- Scala學習(五)練習
- Scala學習(六)練習
- Scala學習(七)練習
- word_count的scala學習
- Scala學習筆記筆記
- Scala基礎學習
- 《http權威指南》學習感想HTTP
- 對學習程式語言的的小感想
- 使用Go語言一段時間的感受Go
- JAVA學習的第二天感想Java
- Scala集合學習總結
- Scala基本語法學習
- 學習Scala IF…ELSE 語句
- Scala學習記錄01
- Scala學習筆記2筆記
- 怎麼估算一段時間裡,幾條SQL所佔用的時間SQL
- QT學習 實時顯示時間QT
- 【Mysql 學習】時間型別MySql型別
- 學習Scala 方法與函式函式
- scala學習筆記:控制抽象筆記抽象
- Scala學習(七)---包和引入
- 《C#併發程式設計經典例項》學習筆記—2.1 暫停一段時間C#程式設計筆記
- 玻璃還要保持弱勢一段時間
- Docker容器學習梳理 - 容器時間跟宿主機時間同步Docker
- Python學習需要多長時間?學習週期Python
- 查詢過去一段時間內某條sql使用的臨時表空間大小SQL