扫码关注官方订阅号
如题,还是说两个侧重点不同?如果是,希望大神能指点一下。
相对于Java而言,Scala的代码更为精简(减低犯错),而且功能更为广泛(Scala其实是Scalable Language 的简称,意为可扩展的语言),许多Scala的特性和语法都是针对Java的不足和弱点来设计的。
Scala的特点是有很多函数程式语言的特性(例如ML,Miranda, Scheme,Haskell),譬如惰性求值,list comprehension, type inference, anonymous function, pattern matching 等等,同时也包含 Object-Oriented 的特性(OO 能与 FP 混合使用是 Scala 的亮点)。此外,许多相似于高级编程语言的语法也渗入其中(例如 Python),不仅提高了 Scala 代码的可读性,维护、修改起来也较为省时省力。
Scala 与 Java 语法上的明显差异有:
def
return
在此值得提醒的是,统计显示,Scala 的代码运行速率仅为 Java 的 8 成。
功能多啊,语法复杂啊,号称是JVM上的C++啊,话说搞Java的你不多学几个JVM上的语言都不好意思出门啊!什么?你说JRuby?这种渣脚本你也好意思拿出来说事?Groovy?丫不就一批处理么?BeanShell?丫还不如批处理呢?Clojure……好吧这个逼格比Scala高…………
Java 把编程简化到是个人都可以立马上手,通过静态语法检查,简明的语义等等约束使得开发不是一件难事。
这种简化必然导致开发效率的降低,因为它是通过语法层面的繁琐来降低开发的难度,所以它的抽象程度是不够的,但是也正是这种做法成就java近十年来最受欢迎的语言。
但是对于一些智商超群的牛人来说,用这种语言不是拉低他们的身份吗?所以类似Scala 这种语言出现了,高程度的抽象了语法,提升了开发的效率。 因为是高程度的抽象,必然会提供出很多语法糖,受到那些收java繁琐之苦的人的欢迎。最简单的例子就是它对于并发的抽象,大大降低了写并发的难度。
所以用Scala 还是 Java关键吗? 不关键,不要人云亦云,说什么新特性,那不是一点点糖而已。学一门,学深就够了。
楼上说得好,我再做点补充: *1. 自动类型推导,val和var很爽,用Java写Map<String, Map<String, List>>会不会想哭?
*2. 一切都是表达式,明显减少了语法限制,能玩出花来。 比如if条件里面可以写好几行
else if ({ val a = getA(...) val b = getB(...) (a, b) match {...} }) { //do something }
一句初始化可以写好几行
val service = { import aaa.bbb.Configuration val conf = Configuration().setX("x").setY("y") val serv = Service(conf) serv.start() serv }
*3. 利用FP+语法糖可以编程实现简单的AOP,无需反射+代理。
def service(args) = transactional { doBusinessThings(args) }
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
相对于Java而言,Scala的代码更为精简(减低犯错),而且功能更为广泛(Scala其实是Scalable Language 的简称,意为可扩展的语言),许多Scala的特性和语法都是针对Java的不足和弱点来设计的。
Scala的特点是有很多函数程式语言的特性(例如ML,Miranda, Scheme,Haskell),譬如惰性求值,list comprehension, type inference, anonymous function, pattern matching 等等,同时也包含 Object-Oriented 的特性(OO 能与 FP 混合使用是 Scala 的亮点)。此外,许多相似于高级编程语言的语法也渗入其中(例如 Python),不仅提高了 Scala 代码的可读性,维护、修改起来也较为省时省力。
Scala 与 Java 语法上的明显差异有:
def开头(与 Python、Ruby 相同)return可以省略在此值得提醒的是,统计显示,Scala 的代码运行速率仅为 Java 的 8 成。
功能多啊,语法复杂啊,号称是JVM上的C++啊,话说搞Java的你不多学几个JVM上的语言都不好意思出门啊!什么?你说JRuby?这种渣脚本你也好意思拿出来说事?Groovy?丫不就一批处理么?BeanShell?丫还不如批处理呢?Clojure……好吧这个逼格比Scala高…………
Java 把编程简化到是个人都可以立马上手,通过静态语法检查,简明的语义等等约束使得开发不是一件难事。
这种简化必然导致开发效率的降低,因为它是通过语法层面的繁琐来降低开发的难度,所以它的抽象程度是不够的,但是也正是这种做法成就java近十年来最受欢迎的语言。
但是对于一些智商超群的牛人来说,用这种语言不是拉低他们的身份吗?所以类似Scala 这种语言出现了,高程度的抽象了语法,提升了开发的效率。
因为是高程度的抽象,必然会提供出很多语法糖,受到那些收java繁琐之苦的人的欢迎。最简单的例子就是它对于并发的抽象,大大降低了写并发的难度。
所以用Scala 还是 Java关键吗? 不关键,不要人云亦云,说什么新特性,那不是一点点糖而已。学一门,学深就够了。
楼上说得好,我再做点补充:>>会不会想哭?
*1. 自动类型推导,val和var很爽,用Java写Map<String, Map<String, List
*2. 一切都是表达式,明显减少了语法限制,能玩出花来。
比如if条件里面可以写好几行
一句初始化可以写好几行
*3. 利用FP+语法糖可以编程实现简单的AOP,无需反射+代理。