《Scala實用指南》譯者序二

我是在開始學習Java的同時開始接觸Scala的,在此以前饒有興致地學過Scheme,也看過幾章《Haskell趣學指南》,所以對Scala中的一些函數式編程的概念並不陌生。我喜歡Scheme那種簡潔之美,可是很遺憾,使用Scheme構建應用程序每每缺磚少瓦,困難重重。而Haskell給人一種繁複艱深的感受,閱讀和編寫Haskell代碼的心智負擔比較大。Scala是一門理想的語言,既知足了編程語言愛好者不滅的好奇心,又恰到好處地彌補了Java語言所缺失的簡潔和表達力。得益於與Java良好的互操做,使用Scala能夠站在Java龐大的生態之上,迅速構建出應用程序。程序員

Scala的美在於精巧的內核,Scala的醜陋在於複雜的實現。做爲程序員,咱們不可能只品嚐精巧的美而忽視複雜的醜陋。本書的長處在於剋制,恰到好處地引導Java程序員進入Scala的世界,也指明瞭深刻學習的路徑。對已經熟悉Scala的程序員來講,本書也能夠做爲編寫易讀Scala代碼的指南。Scala是多範式的,從實際工做的角度,我我的比較推崇編寫貼近Java風格的Scala代碼,並適度地利用Scala的語言特性簡化代碼,我認爲這也是本書一以貫之的主題。編程

由於Java語言表現力有限,因此咱們須要使用各類設計模式提升代碼的抽象能力,固化編碼邏輯。Scala這門語言在設計之初就借鑑了大量現存的語言特性,並吸收了許多設計模式中的精華,所以表現力很是強大。就我我的所瞭解的,Spark Catalyst源代碼中利用邏輯計劃的模式匹配作執行計劃的優化,直觀明瞭,大大下降了SQL執行計劃優化器開發的門檻。很難想象,使用C或者C++,如何纔可以編寫出易於閱讀、易於維護的等價實現。segmentfault

Scala太靈活了,在學習的過程當中難以免會遇到很多艱深的小技巧,也會遇到各類陷阱。所以,一方面咱們編碼須要剋制,另外一方面咱們須要加深本身對JVM上代碼運行機制的理解。王宏江的博客是不可多得的學習資料,可以幫助咱們撥開語言特性的迷霧,直擊代碼運行的本質。本書與其一模一樣,也有很多深刻JVM字節碼的分析,模仿這種分析方式,結合GitHub上的Scala標準庫源代碼,咱們可以提高本身診斷問題的能力,加深對這門語言的理解。設計模式

本書誠如其名——實用。在內容的編排上,本書除了對語言自己的提煉,也同時介紹了Akka和單元測試,這對工程實踐來講有極大的幫助。對尚未參與過真正工程開發的讀者來講,掌握單元測試是必要的。在閱讀大型開源項目的時候,從單元測試入手,能夠窺得項目的設計輪廓和API完整的使用方法。越是優秀的開源項目,其單元測試越是完整、易讀。在翻譯本書的時候,我的尚未接觸過Akka,審閱合譯者翻譯的本書第13章以後,我理解了Actor模型中隔離的可變性。在最近的工做中,這些知識和Akka的文檔,幫助我發現了一個使用Akka的開源軟件中對IO操做和Actor模型誤用而致使的性能問題。編程語言

Scala官方也提供了Gitter的中文聊天室,貼代碼比較方便,任何Scala相關的問題均可以在聊天室交流。我( @sadhen)和 @何品 (@hepin1989)都在聊天室中。函數式編程

最後,感謝在翻譯過程當中挖財諸位同事在工做上的幫助,也很是感謝個人領導曹寶開明的管理風格和一向以來對技術好奇心和驅動力的鼓勵。固然,也很是感謝合做譯者何品大哥,何品大哥對技術的執着和熱情、在開源社區的參與度、技術深度和流暢嚴謹的譯筆,都深深地感染着我鼓勵着我。函數

沈達
2018年3月於杭州城西性能


返回閒話Scala專欄目錄單元測試

相關文章
相關標籤/搜索