为什么要学习Scala

为什么还需要一个新的语言呢?我们希望程序更简洁,更易读,更不容易出错,充分利用现代处理器的多核特性,可以相对容易地实现分布式应用。

专家推荐

Groovy创始人James Strachan曾经说过:

我认为将来可能替代Java的就是Scala 。它实在太让我印象深刻了。我甚至可以诚实地说,如果有人在2003年把那本《Programming in Scala》拿给我看了的话,那我根本就不会再去发明Groovy了。

JavaOne会议期间,在一个参加的讲座中有人向Java之父James Gosling提了一个有意思的问题:

除了Java之外,你现在还使用JVM上的那些语言?"

Java之父的回答很迅速同时也很让人意外

Scala

编程范式

Scala和其他很多语言根本的区别就是它融合了面向对象和函数式编程这两种编程范式。

Scala是一个面向对象的。和Java有primitive type不同,Scala所有东西都是对象。你可以使用所有熟悉的面向对象的编程范式和和模式。不仅如此,Scala对于面向对象有不少创新的贡献。例如Scala中特质(trait)的概念。它类似于Java中的接口(Interface),但是可以具有方法实现和字段。一个对象可以混入(mixin)多个特质。它比多继承(比如C++) 更加灵活,同时也没有多继承中二义性的问题。

Scala是函数式的。函数式编程不是一个新的概念,50年代的Lisp就是函数式编程的始祖。此后,又有Scheme,Haskell,F#等后来者。但是函数式编程一直十分小众,直到最近几年才突然流行。下面简单介绍一下函数式编程的基本概念,和其流行的原因。

在函数式编程中,函数是一等公民。和int,string一样,你可以将函数作为参数传递给另一个函数,将函数作为返回值。这样做的一个好处是程序更加简洁易读。另外,函数可以事先定义,稍后触发。这也是目前最为流行的事件驱动(event driven)或者反应式(reactive)编程的基本应用场景。

在函数式编程中,数据的操作是将输入映射为输出,而不改变任何输入。这样immutable的方法杜绝了side effect。如果你读过Effective Java,应该记得很多地方讨论过immutable的好处。在函数式编程的世界里,immutablity是默认的。当然,很多时候这样的方式会带来数据的拷贝和浪费。然而,随着计算和存储能力的不断提高,immutable编程的优势会逐步凸显。此外,和一些纯函数的语言不同,Scala也允许mutable的值,使得编程十分灵活。

具体特性

Scala可以和Java很好的衔接。Scala可以使用所有的Java库,同时对于一些Java类做了无缝的扩展。例如你可以使用str.toInt而不是Integer.parseInt(str)

Scala更加简洁。一个方面它尽量避免使用Java中的重复代码,比如无穷无尽的get和set。另一方面,丰富的库函数和函数式编程的结合,使得很多操作的实现异常简练。比如,要检验一个名字中是否含有大写字母,只需要一行代码

val nameHasUpperCase = name.exists(_.isUpper)

Scala是静态类型的语言。具备所有静态类型的优势如编译时类型检查,安全重构,代码即文档。另一方便,Scala同时在你不给出类型时,可以“聪明”地猜测类型。一定程度上具备动态类型语言的灵活性。

应用趋势

Scala是个通用的编程语言。目前其Web Framework Play已经在很多企业得到应用。Scala的Akka也被不少企业应用于大型分布式应用的开发。大数据领域的新星Spark就是用Scala编写的。Twitter内部应用大量使用Scala。在国内,使用Scala的公司还不是很多。但可以预见,Scala将会越来越流行。虽然Java 8的一些新特性和Scala很相似,但也有它的局限。这一点,我以后会详细讲解。

不可否认,Scala的学习曲线相对比较陡。往往有很多方法来解决一个问题。如果没有充分理解和合理使用,Scala编写的程序也会不伦不类。我希望通过一个系列,由浅入深,来讲解Scala。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,047评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,807评论 3 386
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,501评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,839评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,951评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,117评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,188评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,929评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,372评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,679评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,837评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,536评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,168评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,886评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,129评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,665评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,739评论 2 351

推荐阅读更多精彩内容