Scala 不是改良的 Java,你会考虑使用 Scale 吗?

绿悠悠 发布于 2010/07/28 13:02
阅读 3K+
收藏 2

Scala 本身就基于 Java 平台,却要来跟 Java 比较,这有点不靠谱。

Scala编程语言拥有所有Java的语言特征,而且还支持所有的新兴的有趣的概念,例如闭包,higher-kinded类型,内联XML。如果你要创建一个JVM上的新项目,你是否会考虑使用Scala?

Scala编程环境非常的有意思,在2.8版本中,编译器会为带有unboxed的基本数据类型的函数编译出多个版本——这样泛型函数就免去了性能昂贵的unboxing和boxing操作了。

Scala允许操作符重载,通过它隐含的机制,你甚至能在实例化后的对象里动态的添加新的方法。

这些功能使你编码时感到更方便。你基本上不需要再显式的把数组和其它的序列类型区分开,不需要把未封装的double类型和其它数字类型区分开。JVM上的数组、基本数据类型和其它相关类型的“平常化“在某种程度上减少了使用这些类型的复杂度。

但这些理念从根本上与Java之所以成为Java的原因相抵触。Scala把自己定位为旨在以一种简洁、优雅的方式表现常见编程模式的多范式编程语 言。Java从文化上反对这些理念:Java慎重的简单。 Java设计团队研究了“现代”C和C++语言的各个方面后才决定了在现代面向对象编程语言环境中哪些功能特征应该被取消,同时又要保留C++相类似的语 法。

特别的,一个已知的原则,任何事情都必须非常的直接明了: C和C++里一个主要的麻烦是,你需要在大量的语境中去理解他人的代码:在理解一段程序之前,你必须阅读所有相关的头文件,所有相关的#defines, 所有相关的typedefs。本质上,使用#defines和typedefs编程会导致每个程序员都像是在发明一种新编程语言,只有开发的人自己能理 解,这种情况不符合好的编程过程的设计目标。

这种对好的编程过程的理念正是Scala极力反对的。在核心中集成领域特定语言(domain specific languages)的能力被Scala当作一种积极因素被提倡。

按我的观点,判断好的编程过程的依据应该考虑是否能产生好的结果这个因素。HotJava实验失败后,我们应该承认,所有的三种主要的web浏 览器(Mozilla Gecko, Webkit, 和 Internet Explorer)都是用C++写成的,这是人们根据结果来选择编程语言的行为,而不是根据了一种习惯经验。

Java被认为是从小语言慢慢长壮大的,是一种从Lisp和Smalltalk之类的语言获取了积累经验的果实。 Scala自豪于拥有强大的higher-kinded类型,Java自豪于去除了多重继承。它们更本不是相互的竞争者:它们的文化取向差异巨大。

也许Scala可以推动JVM跟其它的平台进行竞争。它有一些好的Web公司支持它(例如Fourquare),作为一种具有强类型校验的面向对象的脚步语言,它是很称职的。

Java是有意设计成非面向程序员的。这就是Java的特点——它是专门被设计成防止那些有问题的程序员给自己制造麻烦。如果你讨厌JVM,我想问题应该是:多少防护措施对你的程序员是合适的?Scala给出的答案本质上和Java是相反。

原文链接:http://www.aqee.net/2010/07/25/scala-is-not-a-better-java/

加载中
0
renwofei423
renwofei423

红薯会用Scala 吗?想听听资深JAVA开发人的看法!

0
红薯
红薯

引用来自#2楼“renwofei423”的帖子

红薯会用Scala 吗?想听听资深JAVA开发人的看法!

没玩过哦

0
曾建凯
曾建凯

我支持Scala,如果叫我用愚蠢的Java做开发,我宁愿放弃JVM这么出色的平台。

0
e
earls

Scala和Java还是有可比性的。Scala毕竟是要编译成class在JVM上运行的,那么编译的class质量如何就有待探讨了。

Scala比Java简洁,又能完全融于Java,所以是Java很不错的一个伴侣。

0
神魔

绝对不会

0
大东哥
大东哥

scala的编译质量不用怀疑了,因为scalac编译器就是当初写javac的那位大人。

0
大东哥
大东哥

再补充一句,scala的类型系统,是java5的泛型作者大人开发的。

都是些java权威人士弄的,你们还担心什么呀。

0
曾建凯
曾建凯

其实对于传统的Java开发人员来说,Mirah会是更好的选择,你可以使用Ruby那种自由、开放的语法特性,包括元编程等,Mirah前身是Duby,是JRuby项目衍生而来的,使用dubyc可以将*.duby脚本编译成.class或.java。

无论JRuby或Scala,都不是一朝一夕而成,Duby相对年轻,Scala的历史则相当久远了,应该来说Martin是一个学院派的典型,他从一开始的目的,就是为了优化改造Java,并将函数式编程和泛型带入到Java中。他对Java编译器的熟悉程度,也许更具有典型特点,因为他们开发的GJ编译器,自1.3之后就被作为标准的Javac编译器了。

Scala以前还经历过另一个版本的实验,叫什么来着忘记了,不管了。其实Scala到今天,意义已经超出了JVM平台了,再说Scala是更好的Java其实已经不太合适。Scala.NET也已经成为社区追逐的目标了,就Scala的语法以及特点来说,实现只是时日的问题。可参考:http://lamp.epfl.ch/~magarcia/ScalaCompilerCornerReloaded/

不过Scala主团队貌似还是集中在Scala核心路线上的研发,这对JVM平台的开发人员来说,无疑是个好消息。

0
aoyanfeng
aoyanfeng

我对新东西还是充满热情的。

0
xiaowenliang
xiaowenliang

你用哪门语言吃饭是一回事,你喜欢用哪门语言干活又是一回事。再说,工作里也不是你说换一门语言就能换的吧,喜欢的话,自己就学学呗。我觉得scala超级棒的~  至于和java怎么样,不要人云亦云,自己去体验下吧。

返回顶部
顶部