Scala是强大的软件工具,它是对音乐旋律,音质,声调的调整和微分音有实验性。
-
官方版查看
-
3.5 官方版查看
-
1.0 官方版查看
-
1.0 官方版查看
-
官方版查看
Scala是强大的实验性软件,用于音乐旋律。例如调整声调的音阶,同一时代的微分音为微分音阶和非西方旋律相互比较。它支持旋律的创作,编辑,对照,分析,储备,电子乐器的旋律,MIDI文件的产生和旋律的交流。所有这些一体化成为一个简单的应用,一个用宽泛的数学的常规去创作音阶的方法。Scala是理想的工具除了为探索旋律和复杂的概念趋于常见化以外,它还是储量丰富的音阶博物馆被用于分析和创作。
Scala是一门多范式的编程语言,一种类似java的编程语言,设计初衷是实现可伸缩的语言、并集成面向对象编程和函数式编程的各种特性
Scala发展历史:
联邦理工学院洛桑(EPFL)的MartinOdersky于2001年基于Funnel的工作开始设计Scala。Funnel是把函数式编程思想和Petri网相结合的一种编程语言。Odersky先前的工作是GenericJava和javac(SunJava编译器)。Java平台的Scala于2003年底/2004年初发布。.NET平台的Scala发布于2004年6月。该语言第二个版本,v2.0,发布于2006年3月。
截至2009年9月,最新版本是版本2.7.6。Scala2.8预计的特性包括重写的Scala类库(Scalacollectionslibrary)、方法的命名参数和默认参数、包对象(packageobject),以及Continuation.
2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala,其余部分也打算要迁移。此外,Wattzon已经公开宣称,其整个平台都已经是基于Scala基础设施编写的。
特性
面向对象特性
Scala是一种纯面向对象的语言,每一个值都是对象。对象的数据类型以及行为由类和特征(Trait)描述。类抽象机制的扩展有两种途径。一种途径是子类继承,另一种途径是灵活的混入(Mixin)机制。这两种途径能避免多重继承的种种问题。[4]
函数式编程
Scala也是一种函数式语言,其函数也能当成值来使用。Scala提供了轻量级的语法用以定义匿名函数,支持高阶函数,允许嵌套多层函数,并支持柯里化。Scala的CaseClass及其内置的模式匹配相当于函数式编程语言中常用的代数类型(AlgebraicType)。
更进一步,程序员可以利用Scala的模式匹配,编写类似正则表达式的代码处理XML数据。在这些情形中,顺序容器的推导式(comprehension)功能对编写公式化查询非常有用。
由于JVM不支持尾部递归,Scala也不能完全支持尾部递归优化。不过,在简单的情况下,Scala编译器可以把尾部递归优化成循环。
以下代码以函数式风格实现了快速排序算法,可以与Erlang快速排序的例子做个比较:
defqsort(list:List[Int]):List[Int]=
listmatch{
caseNil=>Nil
casepivot::tail=>
qsort(for(i<-tailifi<pivot)yieldi)