1. 程式人生 > >大資料學習 ------ Scala入門

大資料學習 ------ Scala入門

1.1 為什麼要學Scala語言[1] 

1.優雅:這是框架設計師第一個要考慮的問題,框架的使用者是應用開發程式設計師,API是否優雅直接影響使用者體驗。

Martin OrderSke (scala發人)

  1. Epel瑞士科技大學
  2. JavacMatin編寫的
  3. 讓程式設計師高效簡潔優雅開發軟體
  4. SCALA Ruby Gtoovy高效
  5. Spark是又Scala編寫

2.速度快:Scala語言表達能力強,一行程式碼抵得上Java多行,開發速度快;Scala是靜態編譯的,所以和JRuby,Groovy比起來速度會快很多。

3.能融合到Hadoop生態圈

:Hadoop現在是大資料事實標準,Spark並不是要取代Hadoop,而是要完善Hadoop生態。JVM語言大部分可能會想到Java,但Java做出來的API太醜,或者想實現一個優雅的API太費勁。


  1. Martin OderskyScala程式語言的發明者。
  2. Martin OderskyEPFL(瑞士領先的技術大學)程式設計研究組的教授。
  3. Martin Odersky編寫了javac,這是目前大部分Java程式設計師所使用的編譯器
  4. Martin Odersky他在整個職業生涯中一直不斷追求著一個目標:讓寫程式這樣一個基礎工作變得高效、簡單、且令人愉悅。
  5. Scalajava的語言的發展方向,稱之為java的下一代語言
  6. ScalaGroovyRuby的殺手。Scala有完整的體系特徵,這使GroovyRuby看上去更像個玩具,Scala的效能遠高於GroovyRuby
  7. 20094月,Twitter宣佈他們已經把大部分後端程式從Ruby遷移到Scala
  8. Spark就是由scala開發的

1.2 什麼是 Scala[1] 

Scala需瞭解知識

程式設計正規化:

面向物件程式設計(Object-oriented programming)

物件為中心,理清物件之間關係。支援語言:java

封裝,繼承,多型等語法

程序式程式設計(Procedural programming)

過程為中心,理清事件執行步驟。支援語言:c語言語法

函式式程式設計(Functional programming)

函式為中心,理清函式之間的關係,支援語言:scala

函數語言程式設計特點:

A)函數語言程式設計的起源,是一門叫做範疇論(Category Theory)數學分支

B)在函數語言程式設計中,函式就是一個管道(pipe)。這頭進去一個值,那頭就會出來一個新的值,沒有其他作用(類似數學公式)

C)最主要的特徵是,函式是第一等公民

D)強調將計算過程分解成可複用的函式

擴充套件:範疇論概念:彼此之間存在某種關係的概念、事物、物件等等,都構成"範疇"隨便什麼東西,只要能找出它們之間的關係,就能定義一個"範疇"

Scala官網介紹

Scala 是 Scalable Language 的簡寫,是一門多正規化的程式語言。

Scala設計的初衷是要整合面向物件程式設計函數語言程式設計的各種特性。Scala運行於Java平臺(Java虛擬機器),併兼容現有的Java程式。(下圖來自scala官網)

1.3 Scala特點[1] 

Scala 是面向物件的

Scala是一個純面向物件的語言,所有的值都是物件,類和物件行為用類和特質來描述.

Scala 是函式式的

Scala中函式是高等公民,所有函式都是值.

Scala是靜態型別的

靜態語言:的資料型別是在編譯期間確定的或者說執行之前確定的,編寫程式碼的時候要明確確定變數的資料型別


  1. 面向物件和函式式,前面已經講過
  2. 介紹:靜態型別語言,可伸展



Scala 可伸展的語言

Scala語言的名稱來自於“可伸展的語言”。之所以這樣命名,是因為他被設計成隨著使用者的需求而成長。你可以把Scala應用在很大範圍的程式設計任務上,從寫個小指令碼到建立個大系統。