`
dcaoyuan
  • 浏览: 306248 次
社区版块
存档分类
最新评论

Scala-对Java的修正和超越-Presentation

    博客分类:
  • Java
阅读更多
这是在SD2China上的中文Presentation,对Scala在设计时的一致性作了些介绍
分享到:
评论
13 楼 shoru 2010-08-30  
最新的netbeans scala插件无法安装到6.9中呀,求支持。
Some plugins require plugin Common Scripting Language API (new) to be installed.
The plugin Common Scripting Language API (new) is requested in implementation version 1.  The following plugin is affected:       Scala Editor
Some plugins require plugin Common Scripting Language API (new) to be installed.
The plugin Common Scripting Language API (new) is requested in version >= 1.9 (release version 1) but only 2.5.1.2.1.1.4 (of release version different from 1) was found.  The following plugin is affected:       Scala Debugger Projects Integration
Some plugins require plugin Editor Library to be installed.
The plugin Editor Library is requested in version >= 1.30 (release version 1) but only 2.10.2.10.2 (of release version different from 1) was found.  The following plugins are affected:       Scala Debugger Projects Integration       Scala Editor
Some plugins require plugin Parsing API to be installed.
The plugin Parsing API is requested in implementation version 2.  The following plugin is affected:       Scala Editor  Some plugins not installed to avoid potential installation problems.
12 楼 alanwu 2009-10-30  
night_stalker 写道
讲一次多少钱啊,能透露下么……


据说钱不多,现在这个大会在中国最牛了,爱来不来的。
但能到这个大会讲一下的,身价会提高。
11 楼 wzjin 2009-10-28  
暂时没有考虑学习,等有一定市场再看!
10 楼 dcaoyuan 2009-10-26  
jasspier 写道
对scala有点兴趣,有没有入门的推荐教程?


第一本
http://www.scala-lang.org/docu/files/ScalaTour.pdf

第二本
http://www.scala-lang.org/docu/files/ScalaByExample.pdf

第三本
http://programming-scala.labs.oreilly.com/

另外martin, bill等著的"Programming In Scala"应该很快会引进中国。不过这本我推荐为第四本

9 楼 jasspier 2009-10-26  
草原兄,听了你的课,对scala有点兴趣,有没有入门的推荐教程?
8 楼 dcaoyuan 2009-10-26  
fineqtbull 写道
强!要是JVM方面也能做相应的改善就好了,不知Java7上会不会好一点,比较担心扫描过多影响编译速度。


scalac的编译速度比javac肯定要慢,但还是可以接受的,我的一个项目从java改为scala后,编译时间大约为原来的3-4倍
7 楼 dcaoyuan 2009-10-26  
starfeng 写道
PDF第11页,不是不写错了?

“如果Tsub或Tsup是T的子类或超类,C[Tsub]或C[Tsup]都不是List[T]类”

List[T] 是不是应为 C[T] ?


你提的对,是我写错了。新上载的文件改过来了,谢谢。
6 楼 whaosoft 2009-10-26  
很好的资料,对Scala还不是十分了解
5 楼 starfeng 2009-10-26  
PDF第11页,不是不写错了?

“如果Tsub或Tsup是T的子类或超类,C[Tsub]或C[Tsup]都不是List[T]类”

List[T] 是不是应为 C[T] ?

注,我第一次看Scala,也可能是我理解问题了
4 楼 night_stalker 2009-10-25  
讲一次多少钱啊,能透露下么……
3 楼 fineqtbull 2009-10-25  
dcaoyuan 写道
好的。我虽然不怎么加入圈子,但经常也去看看。

Scala圈子的目的就是提供je上Scala爱好者的交流场所,欢迎经常来看看

对于你所提到的一致性我也颇有同感,与Java相比,虽然由于Scala融合了OO和FP带来了不可避免的复杂度,但是理解了这些Java所欠缺的一致性之后,自我感觉在很大程度上能够提高学习(特别是统一概念加深理解方面)效率,并且就语言本身而言也多了一分美感。

dcaoyuan 写道
后台的具体实现复杂到什么程度呢?这么说吧,Scala的编译器从词法分析到最后产生JVM的Bytecode大约要做24遍扫描。

强!要是JVM方面也能做相应的改善就好了,不知Java7上会不会好一点,比较担心扫描过多影响编译速度。

dcaoyuan 写道
另外,我刚发了NetBeans 6.8beta下的版本,配合Scala-2.8.0 snapshot的,详情请看:
http://wiki.netbeans.org/Scala68v1

scala-2.8我个人还没有用过,不过强烈期待中,特别是scala.swing方面的改善。非常高兴,世界领先的Scala IDE是由中国人开发的,如有需要,很乐意为她的发展和推广做一些力所能及的支持。
2 楼 dcaoyuan 2009-10-25  
fineqtbull 写道
另外我在Scala圈子里建立了一个本文的链接,还请包涵。


好的。我虽然不怎么加入圈子,但经常也去看看。

这次会上讲PPT时间有点不够,但这个PPT中提到的每句话都是仔细想过的,强调的是Scala中一些概念的一致性,比如,有关Scala的文章中常提到“值都是对象”,准确地说,应该是“值都是对象的实例”,还有,“操作、函数、参数可以互相转化,都是值,都是实例的对象”,这其实是Scala可以扩展的关键,也是OO+FP能够比较好地在Scala中结合的关键。

还有就是Scala的类型体系,看上去复杂,其实是为了修正Java中类型体系的一些问题,并且带了了一个JVM上的完整一致的类型体系。弄清了几个概念后,也就不觉得复杂了,反倒是比Java的简单。

总之,我看到的Scala的简单性都是由其一致性带来的,虽然设计者为了开发人员的习惯作了一点点妥协,但还是非常坚持他的设计理念。

Martin不是一个简单的人,为了在JVM上实现他的设计理念,其后台的具体实现其实是相当复杂和困难的,但他坚持并不断实践,有时候甚至不惜把原来的实现推倒重来,终于在2.6以后有了我们现在看到的相当理想的结果。

后台的具体实现复杂到什么程度呢?这么说吧,Scala的编译器从词法分析到最后产生JVM的Bytecode大约要做24遍扫描。这也是为什么Scala的IDE比较难做的原因之一,因为,IDE必须考虑用户键入时的反应速度,但同时提供尽可能多的信息,那么对于IDE来说,扫描的步骤什么时候做、做到哪一步,都必须仔细权衡。比如为了判断debugger的断点应该设置到哪个位置(类名、源文件名、行号等),可能需要做到第13遍扫描才能得到全部的信息,但那样的话,性能就很差了。还有就是Java/Scala混合的项目中的互可见性,也需要做一系列的映射,这些工作也不能等到全部扫描完成才做。

新的NetBeans插件中,我比较好地解决了大部分问题,并且,至少在此刻,我可以说,这个插件是现在世界上最好的Scala IDE。

另外,我刚发了NetBeans 6.8beta下的版本,配合Scala-2.8.0 snapshot的,详情请看:
http://wiki.netbeans.org/Scala68v1
1 楼 fineqtbull 2009-10-24  
支持一下。看了你一些其它关于Scala IDE的文章,很佩服你在这方面对Scala作出的贡献 ,希望今后能够互相交流。另外我在Scala圈子里建立了一个本文的链接,还请包涵。

相关推荐

    scala-java8-compat_2.11-0.7.0-API文档-中英对照版.zip

    赠送jar包:scala-java8-compat_2.11-0.7.0.jar; 赠送原API文档:scala-java8-compat_2.11-0.7.0-javadoc.jar; 赠送源代码:scala-java8-compat_2.11-0.7.0-sources.jar; 赠送Maven依赖信息文件:scala-java8-...

    scala-java8-compat_2.11-0.7.0-API文档-中文版.zip

    赠送jar包:scala-java8-compat_2.11-0.7.0.jar; 赠送原API文档:scala-java8-compat_2.11-0.7.0-javadoc.jar; 赠送源代码:scala-java8-compat_2.11-0.7.0-sources.jar; 赠送Maven依赖信息文件:scala-java8-...

    scala-parser-combinators_2.12-1.1.0-API文档-中英对照版.zip

    赠送jar包:scala-parser-combinators_2.12-1.1.0.jar; 赠送原API文档:scala-parser-combinators_2.12-1.1.0-javadoc.jar; 赠送源代码:scala-parser-combinators_2.12-1.1.0-sources.jar; 赠送Maven依赖信息...

    scala-parser-combinators-2.11-1.0.4-API文档-中文版.zip

    赠送jar包:scala-parser-combinators_2.11-1.0.4.jar; 赠送原API文档:scala-parser-combinators_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-parser-combinators_2.11-1.0.4-sources.jar; 赠送Maven依赖信息...

    scala-compiler-2.11.8-API文档-中英对照版.zip

    赠送jar包:scala-compiler-2.11.8.jar; 赠送原API文档:scala-compiler-2.11.8-javadoc.jar; 赠送源代码:scala-compiler-2.11.8-sources.jar; 赠送Maven依赖信息文件:scala-compiler-2.11.8.pom; 包含翻译后...

    scala-xml_2.12-1.0.6-API文档-中文版.zip

    赠送jar包:scala-xml_2.12-1.0.6.jar; 赠送原API文档:scala-xml_2.12-1.0.6-javadoc.jar; 赠送源代码:scala-xml_2.12-1.0.6-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.12-1.0.6.pom; 包含翻译后的API...

    scala-xml_2.11-1.0.4-API文档-中英对照版.zip

    赠送jar包:scala-xml_2.11-1.0.4.jar; 赠送原API文档:scala-xml_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.4-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.4.pom; 包含翻译后的API...

    scala-xml_2.11-1.0.1-API文档-中文版.zip

    赠送jar包:scala-xml_2.11-1.0.1.jar; 赠送原API文档:scala-xml_2.11-1.0.1-javadoc.jar; 赠送源代码:scala-xml_2.11-1.0.1-sources.jar; 赠送Maven依赖信息文件:scala-xml_2.11-1.0.1.pom; 包含翻译后的API...

    scala-2.12.14.zip&scala-2.12.11.tgz Linux版本压缩包.rar

    在压缩包中,我们只看到了"scala-2.12.14"这一条子文件名,这可能是指Scala的二进制分发包,其中包括Scala解释器、编译器和其他工具。安装这个版本的Scala通常涉及以下步骤: 1. 解压缩文件:使用`tar -zxvf scala-...

    mongo-scala-drive的使用demo

    在 Scala 中与 MongoDB 进行交互,通常我们会使用 `mongo-scala-driver`,而不是 `mongo-java-driver`,因为 Scala 驱动提供了更符合 Scala 语言特性的 API 设计。本示例将详细介绍如何使用 `mongo-scala-driver` ...

    scala-parser-combinators_2.11-1.0.4-API文档-中英对照版.zip

    赠送jar包:scala-parser-combinators_2.11-1.0.4.jar; 赠送原API文档:scala-parser-combinators_2.11-1.0.4-javadoc.jar; 赠送源代码:scala-parser-combinators_2.11-1.0.4-sources.jar; 包含翻译后的API...

    scala-compiler-2.11.12-API文档-中文版.zip

    赠送jar包:scala-compiler-2.11.12.jar; 赠送原API文档:scala-compiler-2.11.12-javadoc.jar; 赠送源代码:scala-compiler-2.11.12-sources.jar; 赠送Maven依赖信息文件:scala-compiler-2.11.12.pom; 包含...

    scala-intellij-bin-2016.3.9

    它以其强大的代码自动补全、重构工具和对多种编程语言的支持而闻名。"scala-intellij-bin-2016.3.9"是针对Scala语言的一个特定版本的IntelliJ IDEA插件,该版本为2016.3.9。这个插件是专门为Scala开发者设计的,旨在...

    scala-compiler-2.11.0-API文档-中文版.zip

    赠送jar包:scala-compiler-2.11.0.jar; 赠送原API文档:scala-compiler-2.11.0-javadoc.jar; 赠送源代码:scala-compiler-2.11.0-sources.jar; 赠送Maven依赖信息文件:scala-compiler-2.11.0.pom; 包含翻译后...

    scala-library-2.11.8-API文档-中文版.zip

    赠送jar包:scala-library-2.11.8.jar; 赠送原API文档:scala-library-2.11.8-javadoc.jar; 赠送源代码:scala-library-2.11.8-sources.jar; 赠送Maven依赖信息文件:scala-library-2.11.8.pom; 包含翻译后的API...

    scala-ide-plugin-eclipse

    scala eclipse插件.对应scala版本:2.10--2.11,对应eclipes版本:4.4--...update site:http://download.scala-ide.org/sdk/lithium/e44/scala211/stable/site 下载地址:http://scala-ide.org/download/current.html

    scala-compiler-2.12.7-API文档-中英对照版.zip

    赠送jar包:scala-compiler-2.12.7.jar; 赠送原API文档:scala-compiler-2.12.7-javadoc.jar; 赠送源代码:scala-compiler-2.12.7-sources.jar; 赠送Maven依赖信息文件:scala-compiler-2.12.7.pom; 包含翻译后...

    scala-compiler-2.12.7-API文档-中文版.zip

    赠送jar包:scala-compiler-2.12.7.jar; 赠送原API文档:scala-compiler-2.12.7-javadoc.jar; 赠送源代码:scala-compiler-2.12.7-sources.jar; 赠送Maven依赖信息文件:scala-compiler-2.12.7.pom; 包含翻译后...

    scala-compiler-2.11.0-API文档-中英对照版.zip

    赠送jar包:scala-compiler-2.11.0.jar; 赠送原API文档:scala-compiler-2.11.0-javadoc.jar; 赠送源代码:scala-compiler-2.11.0-sources.jar; 赠送Maven依赖信息文件:scala-compiler-2.11.0.pom; 包含翻译后...

    Scala-2.11.1.zip

    Scala 2.11.x系列的一个主要目标是提升与Java 7和8的兼容性,同时引入对并行和分布式计算的支持。 首先,让我们深入了解Scala的核心概念: 1. **类型系统**:Scala具有强类型系统,支持类型推断,使得代码更加简洁...

Global site tag (gtag.js) - Google Analytics