我认为每种语言都是为特定目的而创建的。Scala是为什么而创建的,它最擅长解决什么问题?
我认为每种语言都是为特定目的而创建的。Scala是为什么而创建的,它最擅长解决什么问题?
马丁·奥德斯基在讲Scala方面提到的一件事是它是一种能够良好扩展以解决各种问题的语言。他并不是在谈论性能方面的扩展,而是指这种语言本身可以通过库的方式进行扩展。
val lock = new ReentrantReadWriteLock
lock withReadLock {
//do stuff
}
看起来处理 j.u.c
锁有一些特殊的语法糖。但事实并非如此,它只是以这种方式使用 Scala 语言,使其看起来像是有语法糖。代码更易读了,不是吗?
特别是 Scala 语言的各种解析规则使得创建类似于特定领域语言(DSL)的库非常容易。例如看看 scala-test:
describe("MyCoolClass") {
it("should do cool stuff") {
val c = new MyCoolClass
c.prop should be ("cool")
}
}
(这方面还有很多例子 - 我昨天发现了这个)。有很多讨论关于JDK7中Java语言将加入哪些新功能(coin项目)。其中许多功能都是特殊的语法糖,用于处理某些特定问题。Scala已经设计了一些简单规则,意味着不需要为每个小烦恼添加新关键字。
scala> "abc" map (x => (x + 1).toChar)
res1: scala.runtime.RichString = bcd
"abc" map (x => (x + 1))
res2: scala.collection.immutable.Vector[Int] = Vector(98, 99, 100)
原始设计目标之一是创建一种能够在Java虚拟机上运行并与Java类完全互操作的语言。这至少有两个优点:
由于它是功能性的并且使用了演员(如果我理解有误,请评论),因此它使得将几乎任何东西扩展到任意数量的CPU变得非常容易。
话虽如此,我认为Scala是一种新语言特性的试验平台。把所有东西都扔进去,看看会发生什么。
我的个人看法是,对于涉及超过3人团队的任何应用程序,您可以通过使用非常简单和限制性的语法来提高工作效率,因为整个工作变得更多地与他人互动而不仅仅是编写代码让计算机执行某些操作。
您添加的人越多,您花费的时间就越多,解释 ?: 的含义或两个布尔值之间的|和||的区别(在Java中,您会发现很少有人知道)。