1. 程式人生 > >scala學習筆記(1)——為什麼要學習scala

scala學習筆記(1)——為什麼要學習scala

      自從大資料、人工智慧、區塊鏈等概念一炒再炒,python無疑成為了最為熱門的語言,常年盤踞程式語言前三,與此同時,活躍的社群、便於入門的程式碼也使得python成為進入人工智慧、大資料領域的最佳語言選擇,但是筆者在大資料領域的一個最深切感受卻是:如果要在大資料、機器學習、深度學習等領域更進一步,有必要去學習一下scala程式設計,原因如下:

1、scala與java可以無縫連結:儘管筆者不是java出身,但在網際網路領域java無疑是最具影響力的語言之一,良好的社群,規範優美的程式碼規則,都使得java成為近年來網際網路應用最為廣泛的語言,而scala與java幾乎可以稱作無縫連結,通過簡單的import就可以呼叫java中各式各樣的類和方法,同時,scala完成的演算法包也是以jar包的形式出現,同樣的語言實現都是經過JVM來實現,這使得scala相比於python就有先天的優勢,當你在使用python時,寫了一大堆mapper程式碼就是為了使得訓練資料和測試資料能夠得到同樣處理,以便生成的pmml檔案可以在java開發工程師手裡上線時,卻碰到自定義函式不能被識別的囧境時,你就會發現python仍然是python,pkl檔案仍然是pkl檔案,但java就在那裡,不悲不喜,這個問題對scala使用者則是完全不存在的。

2、與spark的天然血緣,眾所周知,spark的開發程式碼就是scala語言,那麼用開發語言來執行本身的程式,簡直不要太舒服,儘管為了讓spark顯得更親民一些,開發了pyspark等API,但這種API仍然像是隔著軍大衣在擁抱,pyspark沒有GraphX的整合,python跟spark本身的執行模式就是相抵觸的,pandas版本的DataFrame與spark版本的DataFrame名字一樣,但用法確實完全不一樣,體會過幾十萬資料進行toPandas操作時要宕機的崩潰時,就會明白,這也不是一個很有意思的事情,因為spark本身就代表著分佈,轉成pandas以後就是赤裸裸的本地,哪來的分散式思想。但scala就不同了,天生的分散式理念,從spark對於scala而言,就有點類似於pandas與sklearn對於python而言,只不過一個是分散式,一個是單機版,掌握了scala就能把spark用的風生水起,包括spark用於實時計算的streaming都可以用scala進行一站式操作,說到實時計算,即使是現在火熱的Flink也一樣可以用scala操作,所以這門語言對於大資料的離線資料操作和實時資料操作都是非常方便的。

3、相比於python,scala的編寫更為規範,尤其是那優美的大括號,當你寫上幾個以後,你就會愛上這種格式,暫時想到的就是這些。

筆者作為一個scala初學者,將會寫一個關於scala學習的系列部落格,記錄自己的學習過程,對自己也有一個督促。