艾叔:Scala編程基礎入門教程(001)-Scala和Java比較、Scala對於初學者的缺點

1.1  Scala是一門強大的語言,那麼,它和其它主流的編程語言相比,有什麼特點?

1)Scala支持面向對象,在Scala上完全可以像C++/Java那樣,使用面向對象的特性;

2)Scala兼容Java庫,Scala程序是基於JVM運行的,Scala代碼編譯後,輸出文件是可以在JVM上運行的字節碼,因此,它與豐富的Java庫是完全兼容的,在Scala代碼中,可以無縫調用Java庫所提供的接口;

3)Scala有一個REPL工具,REPL是read-eval-print-loop的縮寫,因爲它實現了Scala代碼的編譯、運行、顯示,不斷循環。正是有了這樣一個工具,調試Scala代碼變得非常直接和方便,常規的編譯型語言,即便只需要在代碼中改動一個字符,也需要重新編輯代碼、重新編譯代碼、重新運行程序,有了REPL,直接在控制檯上輸入代碼,回車後就可以看到結果。正是這樣的便利性,Spark選擇了Scala作爲其開發語言,整個Spark框架就是採用Scala語言開發的;

4)Scala支持函數式編程,所謂函數式編程,是相對命令式編程而言的,典型的命令式編程語言,如C語言,雖然是一種高級語言,對計算機進行了抽象,但是,它還是一種非常接近計算機底層的語言,C語言無論是從語法、編程思維都接近於更底層的彙編語言,而彙編語言經過彙編器,就成爲機器指令了,因此,一條C語言語句,從語義上講,是可以最終直接映射爲一組機器指令的,因此,C程序可以認爲是由一條條指令組合而成,這就是命令式編程語言的特點;而函數式編程語言,對於開發者來說,它看不到了底層的計算機,它看到的是一個個函數,利用函數的變換、推理來實現最終的功能,函數是實現程序功能的最小單元,因此,函數式編程語言中,其程序是由一個個函數組成的。Scala爲了支持函數式編程,將函數列爲Scala的第一要素,提供了很多的便利來使用函數,例如函數的定義、傳遞、使用等非常方便、函數可以聲明爲變量,可以像變量一樣傳參,還可以使用匿名函數等等;

5)Scala的語法非常簡潔,同樣的功能,如果使用Java實現,可能需要100行,而使用Scala可能就只要10行,代碼的高度簡潔,帶來了代碼的優雅,這也是很多人接觸Scala後愛不釋手的原因。Scala代碼的簡潔原因,主要是利用了Scala編譯器的智能推斷,它能根據已有的信息,儘可能地推斷出其它信息,從而省去在代碼中加入這些冗餘的信息,例如,它可以根據函數的返回值,推斷返回值類型,這樣,在定義函數時,就不需要事先聲明函數返回值類型了。

1.2  Scala對於初學者來說,又有什麼特點?

以上是Scala相對其它編程語言的一些特點,凡事有利也有弊,Scala的這些特性也有不好的地方,尤其對於初學者,總結如下。

1)學習曲線陡峭,因爲Scala特性太多,語法糖非常多,高度抽象,這些對於初學者來說,往往會無所適從,不知從何學起,或者抓不到重點,從而導致效果欠佳,從而影響進一步學習;

2)協作效率不高,因爲Scala太靈活,爲開發者提供了更多的選擇,同樣是Scala,不同的開發者寫出的代碼,可能完全看不懂,這個不像Java,這是因爲沒有那麼靈活,這樣大家在風格、編寫上更容易統一;

3)程序運行效率差異大,Scala爲開發者提供了很大的便捷性,從而也向開發者屏蔽了許多的細節,同樣的一個功能,Scala可能有10種實現方法,但這10種方法的效率可能有上百倍的差異,因此,Scala程序的效率高度依賴於Scala開發者的經驗。

總之,Scala是一門非常強大的語言,當我們掌握後,會變得非常喜歡它,再回過頭看其它語言,更能感覺到Scala的魅力和優雅,但前提是,我們要有足夠的耐心,能夠敲開進入Scala的大門。

 

原創文章,轉載請註明: 轉載自大數據學習網,作者:艾叔

艾叔:Scala編程基礎入門教程(001)-Scala和Java比較、Scala對於初學者的缺點?

艾叔:Scala編程基礎入門教程(002)-Scala和Spark的關係、Spark爲什麼用Scala來開發?

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章