scala

昨天十分无聊。。看了看一个最近比较流行的新语言scala。。真是太强了。。
scala=Java+函数语言。。
我花了些时间学习了一下。。
scala有一些十分强悍的语言特性。。

1.
函数可以做参数。。这个java是不可以的。。C++和C是可以的。但没有scala这么漂亮。。
比如一个函数 是从Int到Int的(比如乘方啊。。*2啊之类的)。。
就是 (Int) => Int。。
如果是二元的。。就是
(Int,Int) => Int。。
用=>符号十分的形象。。
2.
a.method(b) <=> a method b
就是说一切这样的函数都是操作符。。比如对象a有个方法叫insert。。
那么 a.insert(x) <=> a insert x
3.
跟Java接轨。。可以使用一切java的库。。并且编出来的东西可以在JVM上运行。。
比Java更强大并且代码远远简单于Java。。效率差不多(一样的恶心。。)
4.
在面向对象方面也比java纯粹。。java中基本类型不是对象。。
scala中基本类型也是对象。是Any的子类。。
发一个scala的快速排序的代码:
5.
继承了Java的优良传统。。速度慢的跟鬼一样
函数式:
def sort(xs: Array[Int]): Array[Int] = {
if (xs.length <= 1) xs
else {
val pivot = xs(xs.length / 2)
Array.concat(
sort(xs filter (pivot >)),
xs filter (pivot ==),
sort(xs filter (pivot <)))
}
}
过程式。。感觉跟pascal有点像
def sort(xs: Array[Int]) {
def swap(i: Int, j: Int) {
val t = xs(i); xs(i) = xs(j); xs(j) = t
}
def sort1(l: Int, r: Int) {
val pivot = xs((l + r) / 2)
var i = l; var j = r
while (i <= j) {
while (xs(i) < pivot) i += 1
while (xs(j) > pivot) j -= 1
if (i <= j) {
swap(i, j)
i += 1
j -= 1
}
}
if (l < j) sort1(l, j)
if (j < r) sort1(i, r)
}
sort1(0, xs.length 1)
}
还有HelloWorld的程序。。
object HelloWorld {
def main(args: Array[String]) {
println("Hello, world!")
}
}还有一些就看scala的官网
http://www.scala-lang.org/ 上面有很多学习资料
还有wiki上的页面。。

4 thoughts on “scala

  1. 回复中国脑筋:嗯。。不过对OI都没什么用。。纯粹是无聊。。这玩意A+B Problem 都要2000MS这种NB的语言效率都低的吓人。。C++才是王道!

  2. 回复WJBZBMR:SPOJ上用其他语言还是很有意思的,另外,函数式语言运行时间并不是非常大的……下面的文字转自http://www.fleurer-lee.com/2009/09/08/缪论:c最高效/我用C,C++,ocaml,java和python分别实现了一遍LCS算法,来比对代码的复杂度以及运行效率。2000个元素的数组来做实验数据,所得的测试结果如下:C: 0.8 seconds.C++: 2.3 seconds.OCaml: 0.6 seconds interpreted, 0.3seconds fully compiled.Java: 1 minute 20 seconds.Python: over 5 minutes.

  3. 回复中国脑筋:python的for是可以用列表解析或者map函数替代的,这样会有很大的效率提升。列表解析是直接用c实现的,for是在pvm中模拟的

Leave a Reply to WJBZBMR Cancel reply

Your email address will not be published. Required fields are marked *