阅读更多

19顶
0踩

编程语言

原创新闻 Scala2.8预览——值得期待

2009-04-24 09:30 by 见习编辑 Eastsun 评论(16) 有6966人浏览
  Scala在2.7.4之后的下一个重要版本将会是2.8。相对以前的版本,该版本将作出飞跃性的改进:包括一些期盼已久的特性,一些重大的修改和增添。

  Scala2.8中包含的特性:
1.重新设计的集合框架。
  Scala的集合类的层次结构被重新设计,以更加规范,易用,高效。将会有一份白皮书阐述该设计。用户大部分已有的代码不会受到影响,但是那些对集合类的实现代码,比如sequence,set,map,etc.需要修改以适应新的集合框架。

2.命名参数与默认参数。
  方法的参数能够通过参数名传递,并且参数能具有默认值。

3.Package object。
  现在不仅可以在源文件中定义package,而且可以使用一些特殊的object来定义package,该object内列出的成员属于该package。譬如,你可以在这样的object中添加一些类型别名(type alias),这些类型别名将作为该package的成员从而可见。新的集合框架中使用该功能以保证向后兼容性。比如,List类在新的库中位于scala.collection.immutable package中,而之前是位于scala package中。通过定义如下的package object使得之前使用List的代码在新的集合框架中任然可用:
package object scala {
  type List[+A] = scala.collection.immutable.List[A]
  val List = scala.collection.immutable.List
    ...
}


4. 增强的Scala Swing库。
  scala.swing包中将增添一些新的功能,并且将具有更好的文档说明。

5.Support for continuations.
  A compiler plugin will support continuations as an optional feature of Scala, using a type-directed continuation passing transform. Continuations are useful to implement advanced control constructs, for instance for asynchronous I/O, user interface event handling, or dataflow concurrency.

6.类型特殊化。
  引入一个使用于类型参数的annotation:@specialize。该annotation能够针对泛型代码中的基本类型生成特殊的代码,这样可以避免昂贵的boxing 和 unboxing操作,以显著提高代码的执行速度。

7.改善的REPL。
  Scala的交互命令控制台添加了一些新的功能,特别的命令完成功能将可以使用。

8.Packrat parser combinators
  Scala's combinator parser library will be upgraded to "packrat parsing". This helps efficiency and also permits more grammar styles to be expressed as parsers. For instance, left-recursive productions can now be handled.

  之前版本中大部分被标为deprecated的类与方法在2.8中将被去除,并且不再支持Java1.4。class文件的格式会发生改变,因此Scala2.8与之前版本二进制文件不兼容。但很大程度上保持了源代码兼容性。
  按照计划,Scala2.8的第一个beta版将在6月初发布。只有6个多星期了,期待吧!
19
0
评论 共 16 条 请登录后发表评论
16 楼 Eastsun 2009-04-25 23:42
我把自己使用Scala做Project Euler上前79题的解法做成了pdf电子书,有兴趣的可以看看。
15 楼 robert 2009-04-25 22:07
Eastsun 写道

robert 写道比起语法复杂的 scala更喜欢和看好极简和针对并行的 clojure对于大多数熟悉C++/Java编程语言的人来说,会更习惯Scala的语法而不是Lisp那种括号语言吧


Lisp 的括号海洋确实需要习惯一下。不过这是 Lisp 的程序即数据的基础,也是 clojure 强大的根源,想想看自己定义语言特性(macro)的强大吧。等看惯了就觉得可读性也是非常强的啦。
14 楼 RednaxelaFX 2009-04-25 13:53
parser combinator就是把递归下降解析器用组合子的方式来表达,并不高深。既然是递归下降解析器,它就会碰到一些传统的问题,例如无法支持左递归,直接递归和间接递归都不行;又例如当语法是LL(1)时递归下降解析器写起来很简单,对任何给定的k(k > 1)的LL(k)则麻烦许多,如果是LL(*)但无法用任何给定的k来表达lookahead个数的话,又会非常麻烦——这种时候就需要回溯(backtrack),而一般的做法是回溯的部分需要重新解析,所以至少会带来O(n^2)的时间性能。
Packrat parsing是一种memoize技术,它会跟踪并记住递归下降经过的每一步,保证了即使需要回溯也只需要线性时间(因为回溯的部分不需要重新解析)。这样,即使是LL(*)语法也能在线性时间里解析完。代价是内存占用量非常大
Scala上的parser combinator应用packrat之后内存占用状况会是个什么表现,值得关注。
13 楼 night_stalker 2009-04-25 13:39
http://pdos.csail.mit.edu/~baford/packrat/icfp02/packrat-icfp02.pdf
我猜意思大致就是组合子(combinator)的解析库用了一个先进的技术,这个东西能在保持线性时间的同时,完成 LL 或者 LR 的语法解析。
像我这样的一般人,也不关心底下发生了什么事情,意译的话,就是“编译变快了,而且可以添更多语法”?
12 楼 Eastsun 2009-04-25 13:15
文章中第5条
5.Support for continuations.
与第8条
8.Packrat parser combinators
我没有翻译,因为对这两个东东不甚了解。
刚才google一下continuations,稍稍看了些资料,貌似是个很有意思的东西。
这里是关于continuations的英文wiki,这里有一篇关于Ruby中continuations的介绍。
11 楼 shxiao 2009-04-25 09:29
robert 写道

比起语法复杂的 scala更喜欢和看好极简和针对并行的 clojure

我也看好clojure
(没用过 “'” ,第一次使用竟然搞错了,哈哈)
10 楼 shxiao 2009-04-25 09:28
Jekey 写道

GROOVY SCALA,哪个更有前途?


我也看好clojure,
9 楼 night_stalker 2009-04-25 01:02
scala 比较有前途,出来比 groovy 晚,但 tiobe 4月份排名(28)比 groovy(36) 高。
从 google trends 也可以看到 groovy 一直在往下掉。
8 楼 jamesqiu 2009-04-25 00:38
scala 2.7的语法啥的还好, 挺合理的;
就是编译器太.......太慢了, 受不了, 和jdk1.1时代的javac有一拼, 不得不放弃.
7 楼 Eastsun 2009-04-25 00:14
robert 写道

比起语法复杂的 scala更喜欢和看好极简和针对并行的 clojure


对于大多数熟悉C++/Java编程语言的人来说,会更习惯Scala的语法而不是Lisp那种括号语言吧
6 楼 robert 2009-04-24 23:01
比起语法复杂的 scala
更喜欢和看好极简和针对并行的 clojure
5 楼 Jekey 2009-04-24 18:01
GROOVY SCALA,哪个更有前途?
4 楼 fujohnwang 2009-04-24 16:42
混血儿,呵呵
3 楼 whaosoft 2009-04-24 14:37
是什么啊 不是java里的东西吗
2 楼 gqf2008 2009-04-24 13:10
非常看好scala,期待
1 楼 wenjixiao 2009-04-24 10:35
新生的scala比java更为灵活和自由——它有更广泛的空间和经验。
看好!

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • 深度学习——第2章 深度学习开发环境搭建

    单行代码样式: print("深度学习") 多行代码样式: for i in range(10): print(i) 2.3.3.7 水平分割线 使用"—"表示分割线 我在分隔线的上方 我在分隔线的下方 2.3.2.8 表格 使用一根竖线来分隔各个单元格,使用...

  • Scala之——Scala容器库(Scala’s Collections Library)

    简介(Introduction)Martin Odersky和Lex Spoon在许多人看来,新的集合框架是Scala 2.8中最显著的改进。此前Scala也有集合(实际上新框架大部分地兼容了旧框架),但2.8中的集合类在通用性、一致性和功能的丰富性上...

  • Scala容器库(Scala’s Collections Library)

    随笔 - 29 文章 - 381 评论 ...[转]Scala容器库(Scala’s Collections Library) 原文:https://code.csdn.net/DOC_Scala/chinese_scala_offical_document/file/Introduction.md#anchor_0    /

  • 深度学习框架的来龙去脉——史上最全面最新的深度学习框架对比分析

    基于Java和Scala的开源的分布式深度学习库Deeplearning4J在深度学习领域缺少像Python这样强大的社区支持,日本公司Preferred Networks开源的Chainer曾经是动态计算图的首选框架,特别适用于自然语言处理,但后来...

  • 从TensorFlow到DL4J——主流深度学习框架对比分析

    文章目录从TensorFlow到DL4J——主流深度学习框架对比分析一、深度学习框架概述与深度学习技术的四大阵营二、主流开源深度学习框架的来龙去脉2.1 TensorFlow2.2 Keras2.3 Pytorch2.4 Theano2.4 Caffe2.5 Caffe22.6 ...

  • Flink从1.7到1.12版本升级汇总

    2.8. 本地恢复 Apache Flink 1.7.0 通过扩展 Flink 的调度来完成本地恢复功能,以便在恢复时考虑之前的部署位置。如果启用了本地恢复,Flink 将在运行任务的机器上保留一份最新检查点的本地副本。将任务调度到之前...

  • Flink从1.7到1.14版本升级汇总

    2.8. 本地恢复 Apache Flink 1.7.0 通过扩展 Flink 的调度来完成本地恢复功能,以便在恢复时考虑之前的部署位置。如果启用了本地恢复,Flink 将在运行任务的机器上保留一份最新检查点的本地副本。将任务调度到之前...

  • IDEA学习笔记

    第四步:设置插件 这一页展示了IDEA已经集成的插件,选择下一步即可 设置 IDEA 中的各种插件,可以选择自定义设置、删除,或者安装本身不存在的插件(比如:支持 Scala 的插件)。这里不设置,后面也可以通过界面...

  • python 修饰类对象_python类修饰符

    文章 sjf0115 2015-03-07 1350浏览量 《Python面向对象编程指南》——2.8 __new__()方法和不可变对象 本节书摘来自异步社区《Python面向对象编程指南》一书中的第2章,第2.8节,作者[美]Steven F. Lott, 张心韬...

  • 抽奖活动啦!5本SpringMVC+MyBatis相关、3本Android Studio相关、6本Kafka相关

    ╰2.5.1 安装与配置Scala运行环境 /38 ╰2.5.2 安装与配置Gradle /39 ╰2.5.3 了解Kafka源代码的编译过程 /40 2.6 实例7:将Kafka源代码导入编辑器 /42 ╰2.6.1 导入IntelliJ IDEA编辑器 /42 ╰2.6.2 导入Eclipse...

  • 腊八节福利送上 , 抽奖活动来啦!5本SpringMVC+MyBatis相关、3本Android Studio相关、6本Kafka相关

    ╰2.5.1 安装与配置Scala运行环境 /38 ╰2.5.2 安装与配置Gradle /39 ╰2.5.3 了解Kafka源代码的编译过程 /40 2.6 实例7:将Kafka源代码导入编辑器 /42 ╰2.6.1 导入IntelliJ IDEA编辑器 /42 ╰2.6.2...

  • Flink 从1.7 到1.12版本升级汇总

    Flink中的Scala 2.12支持2.2. 状态变化2.3. Exactly-once语义的S3 StreamingFileSink2.4. Streaming SQL中支持MATCH_RECOGNIZE2.5. Streaming SQL中的 Temporal Tables 和 Temporal Joins2.6. 版本化REST API2.7. ...

  • 【VS Code】Windows10下VS Code安装配置、功能介绍和各种语言、项目环境配置目录(持续更新中!)

    VS Code配置各种语言环境 3.1 C/C++、Rust语言环境 3.2 Java、Kotlin、Scala语言环境 3.3 Clojure、Common Lisp、Racket、Scheme、Emacs Lisp语言环境 3.4 Coq、Haskell、Idris、Latex、Mathematics(Walfram ...

  • 测试测试车

    >微信公众号排版工具。问题或建议,请公众号留言。**[程序员翻身](#jump_8)** ...请阅读下方文本熟悉工具使用方法,本文可直接拷贝到微信中预览。 ## 1 Markdown.com.cn 简介 - 支持自定义样式的 Markdown

  • 深度学习的1000+篇文章总结

    http://www.ai2news.com/blog/2333083/ 深度学习的理论基础——机器学习 http://www.ai2news.com/blog/2152645/ 1.2 机器学习与深度学习 http://www.ai2news.com/blog/2155415/ 1.1.4 机器学习与深度学习 ...

  • 安装NumPy教程-详细版

    附件是安装NumPy教程_详细版,文件绿色安全,请大家放心下载,仅供交流学习使用,无任何商业目的!

  • 语音端点检测及其在Matlab中的实现.zip

    语音端点检测及其在Matlab中的实现.zip

  • C#文档打印程序Demo

    使用C#完成一般文档的打印,带有页眉,页脚文档打印,表格打印,打印预览等

Global site tag (gtag.js) - Google Analytics