艾叔:Scala编程基础入门教程(001)-Scala和Java比较、Scala对于初学者的缺点

1.1  Scala是一门强大的语言,那么,它和其它主流的编程语言相比,有什么特点?

1)Scala支持面向对象,在Scala上完全可以像C++/Java那样,使用面向对象的特性;

2)Scala兼容Java库,Scala程序是基于JVM运行的,Scala代码编译后,输出文件是可以在JVM上运行的字节码,因此,它与丰富的Java库是完全兼容的,在Scala代码中,可以无缝调用Java库所提供的接口;

3)Scala有一个REPL工具,REPL是read-eval-print-loop的缩写,因为它实现了Scala代码的编译、运行、显示,不断循环。正是有了这样一个工具,调试Scala代码变得非常直接和方便,常规的编译型语言,即便只需要在代码中改动一个字符,也需要重新编辑代码、重新编译代码、重新运行程序,有了REPL,直接在控制台上输入代码,回车后就可以看到结果。正是这样的便利性,Spark选择了Scala作为其开发语言,整个Spark框架就是采用Scala语言开发的;

4)Scala支持函数式编程,所谓函数式编程,是相对命令式编程而言的,典型的命令式编程语言,如C语言,虽然是一种高级语言,对计算机进行了抽象,但是,它还是一种非常接近计算机底层的语言,C语言无论是从语法、编程思维都接近于更底层的汇编语言,而汇编语言经过汇编器,就成为机器指令了,因此,一条C语言语句,从语义上讲,是可以最终直接映射为一组机器指令的,因此,C程序可以认为是由一条条指令组合而成,这就是命令式编程语言的特点;而函数式编程语言,对于开发者来说,它看不到了底层的计算机,它看到的是一个个函数,利用函数的变换、推理来实现最终的功能,函数是实现程序功能的最小单元,因此,函数式编程语言中,其程序是由一个个函数组成的。Scala为了支持函数式编程,将函数列为Scala的第一要素,提供了很多的便利来使用函数,例如函数的定义、传递、使用等非常方便、函数可以声明为变量,可以像变量一样传参,还可以使用匿名函数等等;

5)Scala的语法非常简洁,同样的功能,如果使用Java实现,可能需要100行,而使用Scala可能就只要10行,代码的高度简洁,带来了代码的优雅,这也是很多人接触Scala后爱不释手的原因。Scala代码的简洁原因,主要是利用了Scala编译器的智能推断,它能根据已有的信息,尽可能地推断出其它信息,从而省去在代码中加入这些冗余的信息,例如,它可以根据函数的返回值,推断返回值类型,这样,在定义函数时,就不需要事先声明函数返回值类型了。

1.2  Scala对于初学者来说,又有什么特点?

以上是Scala相对其它编程语言的一些特点,凡事有利也有弊,Scala的这些特性也有不好的地方,尤其对于初学者,总结如下。

1)学习曲线陡峭,因为Scala特性太多,语法糖非常多,高度抽象,这些对于初学者来说,往往会无所适从,不知从何学起,或者抓不到重点,从而导致效果欠佳,从而影响进一步学习;

2)协作效率不高,因为Scala太灵活,为开发者提供了更多的选择,同样是Scala,不同的开发者写出的代码,可能完全看不懂,这个不像Java,这是因为没有那么灵活,这样大家在风格、编写上更容易统一;

3)程序运行效率差异大,Scala为开发者提供了很大的便捷性,从而也向开发者屏蔽了许多的细节,同样的一个功能,Scala可能有10种实现方法,但这10种方法的效率可能有上百倍的差异,因此,Scala程序的效率高度依赖于Scala开发者的经验。

总之,Scala是一门非常强大的语言,当我们掌握后,会变得非常喜欢它,再回过头看其它语言,更能感觉到Scala的魅力和优雅,但前提是,我们要有足够的耐心,能够敲开进入Scala的大门。

 

原创文章,转载请注明: 转载自大数据学习网,作者:艾叔

艾叔:Scala编程基础入门教程(001)-Scala和Java比较、Scala对于初学者的缺点?

艾叔:Scala编程基础入门教程(002)-Scala和Spark的关系、Spark为什么用Scala来开发?

你可能感兴趣的:(Scala教程,Scala,vs,Java,Scala学习,Scala入门,Scala优缺点)