BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Scala十岁了

| 作者 Alex Blewitt 关注 4 他的粉丝 ,译者 臧秀涛 关注 2 他的粉丝 发布于 2014年1月23日. 估计阅读时间: 3 分钟 | 都知道硅谷人工智能做的好,你知道 硅谷的运维技术 也值得参考吗?QCon上海带你探索其中的奥义

十年之前的1月20日,Michel Schinz宣布了Scala编程语言的第一个实现。在宣布之时,Scala被描述为“一种平滑地集成了面向对象编程和函数式编程的语言”,而且“是为以简洁、优雅且类型安全的方式表达常见编程模式而设计的”。

当时是这么说的:

我们宣布,Scala编程语言的第一个实现已经可用。Scala平滑地集成了面向对象编程和函数式编程。它是为以简洁、优雅且类型安全的方式表达常见编程模式而设计的。Scala引入了一些创新性的语言构件。例如:

  • 抽象类型和mixin统一了来自对象和模块系统的理念。
  • 类层次结构之上的模式匹配统一了函数式和面向对象的数据存取。它极大地简化了XML 树的处理。
  • 灵活的语法和类型系统支持构造高层的库和新的领域特定语言。

与此同时,Scala还兼容Java。无需胶水代码和额外声明,Java的类库和框架都可以使用。

Scala当前的实现运行在JVM上。它需要JDK 1.4,可以在Windows、MacOS、Linux、Solaris及其他多数操作系统上运行。Scala的一个.net版本正在开发之中。

尽管.net版本已经不再维护,但当时之所以要开发这个版本,其目标是提供一种能够运行在这两种虚拟机之上的、可以在不同操作系统间移植的公共语言。然而,随着JVM的JIT的改进,以及对Java字节码的依赖不断的增加,到Scala 2.10发布时,.net版本就中断了。

Scala将函数式编程带入了主流JVM语言中,而且直接刺激了Java 8即将带来的lambda表达式(往往被不正确地称为闭包)和接口默认方法等特性。Scala很早就通过函数和Traits提供了对这些特性的支持,它们为以更简洁、可测试性更好的方式编程提供了新方法。

在Scala取得成功的同时,复杂性也随之而来,因为这些特性是把双刃剑,代码的可读性可谓冰火两重天。Scala允许将任何Unicode标识符用作方法名和函数(包括符号),标准Scala类库已经发展到包含=:=、:+和:\等函数。Scala的取舍是以潜在的可读性损失为代价,改进编写的灵活性。

最后,Scala仍然把自己看作一门研究性语言,一直在尝试新特性并弃用较旧的功能(比如原始的Actors包,它为Scala带来了和Go语言的coroutine类似的声望)。在不同版本之间,生成的字节码也有所变化,这意味着为当前的Scala 版本编译的开源项目数量很有限,而且尽管2.10已经发布一年有余了,但是主要Scala版本之间的过度往往还是非常痛苦。

将于今年发布的Java 8会把Scala的一个特性子集带向JVM,那么看一下Scala下一步会添加什么特性,将会非常有趣。二进制兼容会给语言带来稳定,但是看上去现在离二进制兼容之遥远,几乎和十年前一样,不过时间会证明一切。

下一个十年,你认为Scala会走向何方呢?

查看英文原文:Scala Turns Ten Today

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

十年了,还是没有推开。。。 by 曦 杨

十年了,还是没有推开。。。

Re: 十年了,还是没有推开。。。 by 周 美华

需要普及么?本来就是高手的玩意

Re: 十年了,还是没有推开。。。 by wang xu

十年后,一样推不开,所谓的高手玩不需要推开的人都是扯淡

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

3 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT