Scala係一隻多範式嘅編程語言,設計初衷係要整合物件導向編程同埋函數式編程嘅各種特性。

Scala
編程範式多範型函數式物件導向指令式
設計者Martin Odersky英文Martin Odersky
編程員洛桑聯邦理工學院編程方法實驗室
第一次出現2004年1月20號, 20年之前 (2004-01-20)
穩定版本
3.0.0 / 2021年5月14號, 3年之前 (2021-05-14)
類型系統靜態類型推斷結構化英文Structural type system
實作語言Scala
系統平台JVMJavaScript[1]LLVM(實驗性)[2]
軟件授權3句版BSD授權條款[3]
副檔名.scala, .sc
網站www.scala-lang.org
啟發語言
EiffelErlangHaskell[4] Java[5]Lisp[6] Pizza英文Pizza (programming language)[7] Standard ML[5]OCaml[5]Scheme[5]SmalltalkOz
影響語言
Ceylon英文Ceylon (programming language)Fantom英文Fantom (programming language)F#KotlinLasso英文Lasso (programming language)Red英文Red (programming language)Swift[未記出處或冇根據]

平台同埋許可證

編輯

Scala運行喺Java平台Java虛擬機),仲兼容依家嘅Java程式。佢仲可以喺CLDC配置嘅Java ME入面運行。曾經有過另一.NET平台嘅實現[8],不過該版本已被放棄。[9]

Scala嘅編譯模型(獨立編譯,動態類加載)同Java同埋C#一樣,所以Scala代碼可以用Java類庫(要實現.NET就要用.NET類庫)。

Scala套件包括編譯器同埋類庫,以BSD許可證發布。 [10]

洛桑聯邦理工學院嘅Martin Odersky喺2001年基於Funnel英文Funnel (concurrent computing)嘅工作開始設計Scala。Funnel係將函數式編程思想同埋佩特里網相結合嘅一隻編程語言。[11] Odersky之前喺Java泛型英文Generic 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英文Wattzon已經公開宣稱,佢成個平台都已經係基於Scala基礎設施編寫嘅。[15]
  • 瑞銀集團將Scala用喺一般產品入面。[16]
  • Coursera將Scala當做伺服器語言用。[17]
  • 多鄰國,一個線上嘅免費語言學習平台,用 Scala編寫。

用Scala嘅框架

編輯

Lift係開源嘅Web應用框架,目的係提供類似Ruby on Rails嘅嘢。因為Lift用咗Scala,所以Lift嘅應用程式可以用到目前所有嘅Java庫同埋Web容器。

下面係用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嘅網站:

注意:預設嘅Scala庫SUnit已經喺2.8.0版入面整走咗。

參考

編輯
  1. "Scala.js". 原著喺2015-08-10歸檔. 喺2015-07-27搵到.
  2. "Scala Native". 原先內容歸檔喺2016-04-22. 喺2015-07-27搵到.
  3. "Scala 2.11.1 is now available!". 原先內容歸檔喺2016-08-27. 喺2016-08-29搵到.
  4. Fogus, Michael (6 August 2010). "MartinOdersky take(5) toList". Send More Paramedics. 原先內容歸檔喺2012-02-14. 喺2012-02-09搵到.
  5. 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搵到.
  6. "Scala Macros". 歸檔時間2020-10-25. 喺2020-09-26搵到.{{cite web}}: CS1 maint: bot: original URL status unknown (link)
  7. 7.0 7.1 7.2 Martin Odersky et al., An Overview of the Scala Programming Language, 2nd Edition
  8. "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.
  9. 檔副本。原先內容歸檔喺2017-07-29。喺2019-08-10搵到
  10. 檔副本。原先內容歸檔喺2009-08-21。喺2009-07-22搵到
  11. 11.0 11.1 11.2 Martin Odersky, "A Brief History of Scala" 互聯網檔案館歸檔,歸檔日期2009年9月25號,., Artima.com weblogs, June 9, 2006
  12. Martin Odersky, "The Scala Language Specification Version 2.7"
  13. "Scala 2.8 Preview". 原先內容歸檔喺2009-04-26. 喺2009-07-22搵到.
  14. 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搵到.
  15. Cloud, Jeremy (March 10, 2009). "Scala + WattzOn, sitting in a tree..." 原先內容歸檔喺2009-04-09. 喺2009-07-22搵到.
  16. 檔副本。原先內容歸檔喺2011-07-19。喺2012-01-14搵到
  17. 檔副本。原先內容歸檔喺2014-04-01。喺2014-04-15搵到

出面網頁

編輯