Scala
編程範式 | 多範型:函數式、物件導向、指令式 |
---|---|
設計者 | Martin Odersky |
編程員 | 洛桑聯邦理工學院編程方法實驗室 |
第一次出現 | 2004年1月20號 |
穩定版本 | 3.0.0
/ 2021年5月14號 |
類型系統 | 靜態、強、類型推斷、結構化 |
實作語言 | Scala |
系統平台 | JVM、JavaScript[1]、LLVM(實驗性)[2] |
軟件授權 | 3句版BSD授權條款[3] |
副檔名 | .scala, .sc |
網站 | www |
啟發語言 | |
Eiffel、Erlang、Haskell、[4] Java、[5]Lisp、[6] Pizza、[7] Standard ML、[5]OCaml、[5]Scheme、[5]Smalltalk、Oz | |
影響語言 | |
Ceylon、Fantom、F#、Kotlin、Lasso、Red、Swift[未記出處或冇根據] | |
Scala係一隻多範式嘅編程語言,設計初衷係要整合物件導向編程同埋函數式編程嘅各種特性。
平台同埋許可證
[編輯]Scala運行喺Java平台(Java虛擬機),仲兼容依家嘅Java程式。佢仲可以喺CLDC配置嘅Java ME入面運行。曾經有過另一.NET平台嘅實現[8],不過該版本已被放棄。[9]
Scala嘅編譯模型(獨立編譯,動態類加載)同Java同埋C#一樣,所以Scala代碼可以用Java類庫(要實現.NET就要用.NET類庫)。
Scala套件包括編譯器同埋類庫,以BSD許可證發布。 [10]
史
[編輯]洛桑聯邦理工學院嘅Martin Odersky喺2001年基於Funnel嘅工作開始設計Scala。Funnel係將函數式編程思想同埋佩特里網相結合嘅一隻編程語言。[11] Odersky之前喺Java泛型同埋javac做嘢。Java平台嘅Scala喺2003年底/2004年初發布。[11].NET平台嘅Scala喺2004年6月發佈。[7][11][12]呢隻語言第二個版本,v2.0,喺2006年3月發佈。[7]
Scala 2.8嘅特性包括重新寫過嘅Scala容器庫、命名參數同埋默認參數、包對象,仲有延續性。[13]
2012年1月,出咗版本2.9.1。
2012年4月,出咗版本2.9.2。
用Scala嘅軟件
[編輯]- 2009年4月,Twitter宣布佢哋已經將大部分後臺程式由Ruby搬去Scala,剩返嘅部分到打算要搬埋。 [14]
- Wattzon已經公開宣稱,佢成個平台都已經係基於Scala基礎設施編寫嘅。[15]
- 瑞銀集團將Scala用喺一般產品入面。[16]
- Coursera將Scala當做伺服器語言用。[17]
- 多鄰國,一個線上嘅免費語言學習平台,用 Scala編寫。
用Scala嘅框架
[編輯]Lift係開源嘅Web應用框架,目的係提供類似Ruby on Rails嘅嘢。因為Lift用咗Scala,所以Lift嘅應用程式可以用到目前所有嘅Java庫同埋Web容器。
Hello World例子
[編輯]下面係用Scala編寫嘅典型Hello World程式:
object HelloWorld extends App {
println("Hello, world!")
}
或者
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}
如果呢個程式保存咗做HelloWorld.scala文件,咁樣之後就可以用下面嘅命令行進行編譯:
> scalac HelloWorld.scala
如果要運行:
> scala -classpath . HelloWorld
呢行命令編譯同運行Java嘅「Hello World」程序非常相似。事實上,Scala嘅編譯同埋執行模型同Java係等效嘅,所以佢都可以兼容喺Java嘅構建工具,例如Ant。
直接用Scala解釋器都可以運行呢個程式,用選項-i(從文件加載代碼)同埋選項-e(如果要運行額外嘅代碼,就要實際執行HelloWorld對象嘅方法)就可以:
> scala -i HelloWorld.scala -e 'HelloWorld.main(null)'
試用
[編輯]下面係可以畀你試用Scala嘅網站:
- ScalaTestWayback Machine嘅版面存檔備份
- ScalaCheckWayback Machine嘅版面存檔備份,類似喺Haskell嘅QuickCheckWayback Machine嘅版面存檔備份嘅庫
- specsWayback Machine嘅版面存檔備份,用喺Scala嘅行為驅動嘅開發工具庫
- JUnit
注意:預設嘅Scala庫SUnit已經喺2.8.0版入面整走咗。
書
[編輯]- Programming in ScalaWayback Machine嘅版面存檔備份(ISBN 978-0-9815316-0-1) - 一本由 Martin Odersky, Lex Spoon, 同埋 Bill Venners 寫嘅 Scala 書,最啱比初學者睇。
- Beginning Scala(ISBN 978-1-4302-1989-7) - 一本由 David Pollak 寫嘅 Scala 書,主要講 Scala 嘅實際應用。
- Programming Scala(ISBN 978-1-934356-31-9) - Venkat Subramaniam 喺 Java 平台上發明咗高度可擴展、高度並發嘅應用程式。
- Programming Scala (ebook)Wayback Machine嘅版面存檔備份
參考
[編輯]- ↑ "Scala.js". 原著喺2015-08-10歸檔. 喺2015-07-27搵到.
- ↑ "Scala Native". 原先內容歸檔喺2016-04-22. 喺2015-07-27搵到.
- ↑ "Scala 2.11.1 is now available!". 原先內容歸檔喺2016-08-27. 喺2016-08-29搵到.
- ↑ Fogus, Michael (6 August 2010). "MartinOdersky take(5) toList". Send More Paramedics. 原先內容歸檔喺2012-02-14. 喺2012-02-09搵到.
- ↑ 5.0 5.1 5.2 5.3 Odersky, Martin (11 January 2006). "The Scala Experiment - Can We Provide Better Language Support for Component Systems?" (PDF). 原先內容歸檔 (PDF)喺2016-06-23. 喺2016-06-22搵到.
- ↑ "Scala Macros". 歸檔時間2020-10-25. 喺2020-09-26搵到.
{{cite web}}
: CS1 maint: bot: original URL status unknown (link) - ↑ 7.0 7.1 7.2 Martin Odersky et al., An Overview of the Scala Programming Language, 2nd Edition
- ↑ "Scala on .NET". 洛桑聯邦理工學院編程方法實驗室. 2008-01-07. 原著喺2007-10-09歸檔. 喺2008-01-15搵到.
Scala is primarily developed for the JVM and embodies some of its features. Nevertheless, its .NET support is designed to make it as portable across the two platforms as possible.
- ↑ 〈存檔副本〉。原先內容歸檔喺2017-07-29。喺2019-08-10搵到。
- ↑ 〈存檔副本〉。原先內容歸檔喺2009-08-21。喺2009-07-22搵到。
- ↑ 11.0 11.1 11.2 Martin Odersky, "A Brief History of Scala" 互聯網檔案館嘅歸檔,歸檔日期2009年9月25號,., Artima.com weblogs, June 9, 2006
- ↑ Martin Odersky, "The Scala Language Specification Version 2.7"
- ↑ "Scala 2.8 Preview". 原先內容歸檔喺2009-04-26. 喺2009-07-22搵到.
- ↑ Greene, Kate (April 1, 2009). "The Secret Behind Twitter's Growth, How a new Web programming language is helping the company handle its increasing popularity". Technology Review. MIT. 原著喺2012年4月17號歸檔. 喺April 6, 2009搵到.
- ↑ Cloud, Jeremy (March 10, 2009). "Scala + WattzOn, sitting in a tree..." 原先內容歸檔喺2009-04-09. 喺2009-07-22搵到.
- ↑ 〈存檔副本〉。原先內容歸檔喺2011-07-19。喺2012-01-14搵到。
- ↑ 〈存檔副本〉。原先內容歸檔喺2014-04-01。喺2014-04-15搵到。
出面網頁
[編輯]- Scala websiteWayback Machine嘅版面存檔備份
- ScalachinaWayback Machine嘅版面存檔備份
- Scala Tour,開源Scala指南
- Scala教學Wayback Machine嘅版面存檔備份