scala本身只是语法糖多,只看表象的人自然就会觉得复杂,其实随着学习的深入你会发现不然。scala 里,包括中缀运算(1+(2))加法只是整数对象的一个函数,for,from, to等等,都是语法糖,可以理解为嵌入在Scala里的DSL,之前在毕业设计里见到导师如此定义一个向量,from v1 to v2 along v3,这样的性质都是本身scala灵活的结果,Scala自己加糖这一特点比Haskell还要突出,在实践中可以极大地接近自然语言。楼上也有说看各种Langauge Reference的,我深深表示怀疑。Scala在设计上是精简的,远远精简于C++与Java,语法总结10页都不到。这个在连城在北京TW公司的会上也说过,Scala本身应该是一个比较简单的语言,只是杂糅了两OO与FP所以显得复杂,如果大家有OO跟FP分别的基础再来审视Scala其实会发现Scala并不是想像的那么复杂,并且恰恰相反。所以劝大家不了解不多就随意评论,最好只评论自己长期以来每天用的工具跟语言,因为作为一个研究Haskell的人见太多对Haskell跟GHC的错误评价与不公对待。一面说纯函数式的Haskell慢一面解释运行着Python跟Ruby。
至于本贴的题目,我想多半是吸引眼球的,我的理解Scala跟C++在各个方面都没什么太大关系,Clojure是JVM上的Lisp说得过去,C#是Net的Java也没人跟你争,但是Scala是JVM上的C++就太扯了,无逻辑可言。
回应一下Scala编译慢的问题,首先相信大公司百万行的代码并不是用PC编译的。另外,更多人没有考虑到实现同样的东西Scala会比Java少多少代码,当然这个需要根据实际项目而定,不过我觉得少1~10倍之前都是可能的,这在TW那次会上吴雪峰谈到了。那程序员是想花比较少的时间写Scala代码然后花1天编译,还是想多花一倍的时间再多写一倍的代码然后花半天时间编译?
回应Haskell有的东西Scala里都有。我怀疑说这种话的人对于Haskell与Scala有多少了解。首先GHC现在已经有100左右的Extension了,Scala看了一段时间,恕我Scala学得不多,不过Haskell里的任意Rank类型,Kind polymorphism,Type family在Scala里我都没看到。更加不知道怎么在Scala里做dependent type。Scala是一直向Haskell学习的一个语言,说Haskell有的Scala都有这种话太过不负责任与轻浮。现在Scala还年轻,不说别的,单说GHCi的功能可以甩Scala解释器几条街了,且不说Haskell凝聚了多少大师跟PhD的结晶,单说Haskell进化的包袱就比Scala少很多,很多特性GHC说不要就不要,很多库说deprecate就deprecate,Haskell的设计者也不在乎Haskell能否游行,Scala想追上这速度进化的Haskell短期内是不太可能的,Scala革命未成仍需努力。
C++已经根深树大,相信未来还需要使用他,但是一直羡慕GC、FP的特性,于是有了很多库来干这些事情,但是增加了学习的陡峭程度,性能上也有无法取代的优势,所以相信很长时间都不会死。
Java自Oracle收购不思进取,已经被C#甩出很远,但是一直鼓吹的可移植,以及各种Java开发者职位什么的会骗更多人进来。但是长久下来不思进取被C#跟Scala瓜分不无可能。
Scala会不断地让那些用Java烦躁的人进来,越来越大,相信Java用久了的人都会有烦躁的一天的。但想动摇Java成熟的社区已经开发氛围,短期内也是不可能的。
以上就是关于为什么说 Scala 是 JVM 上的 C++全部的内容,包括:为什么说 Scala 是 JVM 上的 C++、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)