English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Scala è l'acronimo di Scalable Language, è un linguaggio di programmazione a multiparadigma
Martin Odersky dell'École Polytechnique Fédérale de Lausanne (EPFL) ha iniziato a progettare Scala nel 2001 basandosi sul lavoro di Funnel.
Funnel è un linguaggio di programmazione che combina idee di programmazione funzionale e reti di Petri.
Il lavoro precedente di Odersky è Generic Java e javac (compilatore Java di Sun). Scala per la piattaforma Java è stata pubblicata alla fine del 2003/inizi del 2004. Scala per la piattaforma .NET è stata pubblicata a giugno 2004. La seconda versione del linguaggio, v2.0, è stata pubblicata a marzo 2006.
Fino a settembre 2009, la versione più recente è la versione 2.7.6. Le funzionalità previste per Scala 2.8 includono la riscrittura della libreria di Scala (Scala collections library), i parametri di nome dei metodi e i parametri predefiniti, gli oggetti di pacchetto (package object) e Continuation.
Nel aprile 2009, Twitter ha annunciato che ha迁移 la maggior parte dei suoi programmi backend da Ruby a Scala, e anche il resto è intenzionato a迁移. Inoltre, Wattzon ha dichiarato pubblicamente che la sua intera piattaforma è stata scritta utilizzando l'infrastruttura Scala.
Scala è un linguaggio orientato agli oggetti puro, ogni valore è un oggetto. Il tipo dei dati degli oggetti e il comportamento sono descritti dalle classi e dagli特质.
Ci sono due modi per estendere il meccanismo di astrazione delle classi: un modo è l'ereditarietà dei sottoclasse, l'altro è un meccanismo di mixin flessibile. Questi due modi possono evitare i problemi di ereditarietà multipla.
Scala è anche un linguaggio funzionale, le sue funzioni possono essere utilizzate come valori. Scala fornisce una sintassi leggera per definire funzioni anonime, supporta funzioni di alto livello, permette di nesting multipli di funzioni e supporta currying. La case class di Scala e il pattern matching integrato sono simili ai tipi algebrici utilizzati nei linguaggi di programmazione funzionale.
Inoltre, i programmatori possono utilizzare la combinazione di pattern matching di Scala per scrivere codice simile a espressioni regolari per elaborare dati XML.
Scala具备类型系统,通过编译时检查,保证代码的安全性和一致性。类型系统具体支持以下特性:
泛型类
协变和逆变
标注
类型参数的上下限约束
把类别和抽象类型作为对象成员
复合类型
引用自己时显式指定类型
视图
多态方法
Scala的设计秉承一项事实,即在实践中,某个领域特定的应用程序开发往往需要特定于该领域的语言扩展。Scala提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构:
任何方法可用作前缀或后缀操作符
可以根据预期类型自动构造闭包。
Scala使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。Actor可以复用线程,因此可以在程序中使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。
2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala,其余部分也打算要迁移。
此外,Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的。
瑞银集团把Scala用于一般产品中。
Coursera把Scala作为服务器语言使用。
以下列出了3个目前比较流行的Scala的Web应用框架: