Scala 簡(jiǎn)介

scala 簡(jiǎn)介

scala 是 scalable language 的簡(jiǎn)寫,是一種類似 java 的面向?qū)ο蟮暮瘮?shù)式編程語言,設(shè)計(jì)初衷是要集成面向?qū)ο缶幊毯秃瘮?shù)式編程的各種特性。

聯(lián)邦理工學(xué)院洛桑(epfl)的martin odersky于2001年基于funnel的工作開始設(shè)計(jì)scala。

funnel是把函數(shù)式編程思想和petri網(wǎng)相結(jié)合的一種編程語言。

odersky先前的工作是generic java和javac(sun java編譯器)。java平臺(tái)的scala于2003年底/2004年初發(fā)布。.net平臺(tái)的scala發(fā)布于2004年6月。該語言第二個(gè)版本,v2.0,發(fā)布于2006年3月。

截至2009年9月,最新版本是版本2.7.6 。scala 2.8預(yù)計(jì)的特性包括重寫的scala類庫(scala collections library)、方法的命名參數(shù)和默認(rèn)參數(shù)、包對(duì)象(package object),以及continuation。

2009年4月,twitter宣布他們已經(jīng)把大部分后端程序從ruby遷移到scala,其余部分也打算要遷移。此外, wattzon已經(jīng)公開宣稱,其整個(gè)平臺(tái)都已經(jīng)是基于scala基礎(chǔ)設(shè)施編寫的。

 

1. scala 特性

1) 面向?qū)ο筇匦?/h3>

scala是一種純面向?qū)ο蟮恼Z言,每個(gè)值都是對(duì)象。對(duì)象的數(shù)據(jù)類型以及行為由類和特質(zhì)描述。

類抽象機(jī)制的擴(kuò)展有兩種途徑:一種途徑是子類繼承,另一種途徑是靈活的混入機(jī)制。這兩種途徑能避免多重繼承的種種問題。

2) 函數(shù)式編程

scala也是一種函數(shù)式語言,其函數(shù)也能當(dāng)成值來使用。scala提供了輕量級(jí)的語法用以定義匿名函數(shù),支持高階函數(shù),允許嵌套多層函數(shù),并支持柯里化。scala的case class及其內(nèi)置的模式匹配相當(dāng)于函數(shù)式編程語言中常用的代數(shù)類型。

更進(jìn)一步,程序員可以利用scala的模式匹配,編寫類似正則表達(dá)式的代碼處理xml數(shù)據(jù)。

3) 靜態(tài)類型

scala具備類型系統(tǒng),通過編譯時(shí)檢查,保證代碼的安全性和一致性。類型系統(tǒng)具體支持以下特性:

  • 泛型類
  • 協(xié)變和逆變
  • 標(biāo)注
  • 類型參數(shù)的上下限約束
  • 把類別和抽象類型作為對(duì)象成員
  • 復(fù)合類型
  • 引用自己時(shí)顯式指定類型
  • 視圖
  • 多態(tài)方法

4) 擴(kuò)展性

scala的設(shè)計(jì)秉承一項(xiàng)事實(shí),即在實(shí)踐中,某個(gè)領(lǐng)域特定的應(yīng)用程序開發(fā)往往需要特定于該領(lǐng)域的語言擴(kuò)展。scala提供了許多獨(dú)特的語言機(jī)制,可以以庫的形式輕易無縫添加新的語言結(jié)構(gòu):

  • 任何方法可用作前綴或后綴操作符
  • 可以根據(jù)預(yù)期類型自動(dòng)構(gòu)造閉包。

5) 并發(fā)性

scala使用actor作為其并發(fā)模型,actor是類似線程的實(shí)體,通過郵箱發(fā)收消息。actor可以復(fù)用線程,因此可以在程序中可以使用數(shù)百萬個(gè)actor,而線程只能創(chuàng)建數(shù)千個(gè)。在2.10之后的版本中,使用akka作為其默認(rèn)actor實(shí)現(xiàn)。

 

2. 誰使用了 scala

  • 2009年4月,twitter宣布他們已經(jīng)把大部分后端程序從ruby遷移到scala,其余部分也打算要遷移。
  • 此外,wattzon已經(jīng)公開宣稱,其整個(gè)平臺(tái)都已經(jīng)是基于scala基礎(chǔ)設(shè)施編寫的。
  • 瑞銀集團(tuán)把scala用于一般產(chǎn)品中。
  • coursera把scala作為服務(wù)器語言使用。

 

3. scala web 框架

以下列出了兩個(gè)目前比較流行的 scala 的 web應(yīng)用框架:

  • lift 框架
  • play 框架

下一節(jié):scala 安裝

scala 教程

相關(guān)文章
亚洲国产精品第一区二区,久久免费视频77,99V久久综合狠狠综合久久,国产免费久久九九免费视频