如何學好Scala?請給出一條科學的時間線
學了c java python js 再看scala 感覺現在學語言就是拉過來直接用,猜一下應該怎麼寫,行不通看api
《快學scala》還不錯,我現在就在看這本書學,感覺學習還是不能一味圖捷徑,基礎不牢,地動山搖啊。
當然帶著目的去學習是最好了,不然難免會懈怠打盹,書上的小題目啊,做些小demo啊,應該會有幫助。以上許多答案分享了很多寶貴的學習經驗,特別是一些學習資料的分享,感覺受益匪淺。
這裡嘗試從學習目的的角度,談一談對編程語言學習方法的理解。
歡迎補充,謝謝!
1. 編程語言知識分類
這裡將編程語言知識分為以下幾類:設計思想,基礎語法,模式,最佳實踐。個人認為編程語言是從語義開始一步步向上演繹,最終形成各種各樣的工程實現。
了解設計思想,是了解語言設計者在設計時的各種取捨,從而可以更清晰的認識到這個語言的優勢和限制。
關於scala的語義知識,可以看看Vincent CREMET的文章《FOUNDATIONS FOR SCALA: SEMANTICS AND PROOF OF VIRTUAL TYPES》
https://infoscience.epfl.ch/record/85784/files/EPFL_TH3556.pdf
所謂基礎語法,就是諸如類型、語法規則等的知識。掌握了基礎語法理論上可以自行發送任何程序了。
這部分最重要的是對基礎概念的掌握,推薦scala的官方教程 Tutorials - Scala Documentation
所謂模式,是如庫、設計模式等一些工具和方法。
todo
所謂最佳實踐,簡單來說就是學習牛人的代碼。不斷學習不斷打磨自己的代碼。
就是看別人的代碼,lauris/awesome-scala
2. 學習路線
每種類別的知識側重點不同,深入進去都有很多很多可以擴展的點,而且相互之間並非孤立的。學習scala的時候首先需要搞清楚自己的學習目的是什麼。個人認為有一下幾個階段。
2.1 快速建立認知
比如像我這樣的搞Java的希望在工作中快速上手scala。推薦看下下面的文章,然後看下具體的工程代碼,以工程為切入點,一步步補齊基礎語法、常用庫等知識點。
從Java走進Scala:理解Scala的類語法和語義 - 51CTO.COM Guardian.co.uk Switching from Java to Scala
2.2 深入原理
如果已經對scala有一些認知,或者有充足時間的話。建議看下《FOUNDATIONS FOR SCALA: SEMANTICS AND PROOF OF VIRTUAL TYPES》了解下scala的基礎原理。進一步的需要了解計算模型相關知識。
2.3 積累最佳實踐
原理和語法只是基礎,知道這些是保證不了能寫出好的代碼的。所以一定要多看優秀的人的代碼。todo 這部分看得還少,沒有發言權
從C轉過來學習,到現在半年左右時間,就是多寫多練,語言學習沒有捷徑,這個是我學習過程中的一些整理:https://github.com/jacksu/utils4s 。
正在學,等我學會了在告訴你
按照上面說的,學好scala要三年至少。
哈哈,正在學習,等我有了自己的理解之後告訴你
scala目標是提供面向對象語言和函數式語言的特性。此外,屬於靜態強類型語言。
既然所謂學好,總的來說就是要對這兩種範式的思考方式都要熟悉,同時還要解決兩種範式結合帶來的多元化選擇。
至於語言特性,只是編程思想的在某個平台上的實現。思想一脈相承的語言往往差別不大。
不過函數式是個深坑,科學時間線什麼的我勸題主看開點。2016再新學習一下
V5
推薦閱讀:
※矽谷之路38:深入淺出Spark(三)什麼是Standalone
※數據科學家必知必會的7款Python工具,你會幾個?
※大數據分析美國大選——Twitter數據情感分析