您所在的位置:开发 > Java > Java+ > Scala语言编程入门指南(1)

Scala语言编程入门指南(1)

2010-09-14 13:22 bbsmrdj译 51CTO 字号:T | T
一键收藏,随时查看,分享好友!

本文为《Programming Scala》的中文译文《Scala 编程指南》,经51CTO与本文译者联系认可,51CTO将连载《Scala 编程指南》的新鲜译文,供Scala学习者学习。

AD:

《Programming Scala》由O'reilly出版社出版,是一本开放的、不用于商业用途的Scala语言学习读物,与51CTO读书频道介绍的《Scala程序设计: Java虚拟机多核编程实战》虽然不同,但是有异曲同工之妙,原文地址为:programming-scala.labs.oreilly.com/ 。本文为《Programming Scala》第一章译文,从Scala语言编程入门介绍开始。

51CTO推荐专题:Scala编程语言

第一章 从0分到60分:Scala 介绍

为什么选用 Scala

当今的企业和互联网应用程序必须平衡一系列的要点。它们要有快速而可靠的实现。新的功能要能在短时间内通过周期渐进的方式加入。除了简单地提供商务逻辑之外,应用程序必须支持访问安全控制,数据持久化,事务,和其它的进阶功能。程序必须高度易用和可扩展,同时要求支持并发和分布式计算。应用程序会被网络化,并且提供人和机器都易于使用的接口。

要达成这些挑战,许多软件开发者在寻找新型的编程序言和工具。以往备受推崇的如:Java,C#,和C++ 已经不再是开发这些次世代应用程序的最佳候选。

如果你是一个Java 程序开发者

Java 是由Sun 公司在1995 年,互联网高速发展的时候正式引入的。 由于当时需要一个安全的,可移植的,开发者友好的程序语言,它被迅速地推崇为编写浏览器应用的理想语言。而当时的主流语言,C++,则并不适合这个领域。

今天,Java 被更多地使用在服务器端程序中。它是开发网络和企业应用的最流行的语言之一。

然而,Java 是它们那个时代的产物,至今也有一定年代了。在1995年,Java 为了拉拢C++开发者,提供了和C++ 足够相似的语法,同时也避开了C++ 语言上的缺陷和危险。Java 采纳了绝大多数那个时代对解决软件开发问题有用的概念,比如面向对象编程(OOP), 同时也丢弃了一些麻烦的充满问题的技术,比如人工的内存控制。这些设计决策在最小化复杂度和最大化开发生产力上达到了一个优异的平衡。然而,从Java 出生演化到现在,许多人认为它变得越来越复杂,而且并没有显著地解决新的程序开发过程中面临的问题和挑战。

程序开发者想要一种更精炼和更灵活的语言去提高他们的生产效率。这也是如今所谓的Ruby ,Python 这样的脚本(Script)语言大行其道的原因之一。

永无休止的需求驱动着架构向大规模并发开发进行。然而,Java 的并发模型是基于对共享的,可变的信号状态的同步存取,从而导致了复杂的,易错的程序。

当Java 渐渐老化时,运行它的 Java 虚拟机(JVM)却持续地散发着光芒。如今JVM 的性能优化是非凡的,它允许字节码(byte code)在许多情况下得到和本地编译的代码相同的性能。今天,许多程序开发者相信使用基于JVM 的新语言是正确的前进道路。Sun 显然是拥护这个趋势的,他们雇佣了JRuby 和Jython (Ruby 和Python 在JVM 上的实现)的主要开发者。

Scala 的出现对于Java 开发者来说提供了一个更加新式的语言。同时保留了JVM 的惊人的性能和开发了十几年的Java 库的宝贵财富。

如果你是一个Ruby,Python 的开发者

像Ruby,Python,Groovy,JavaScript,和Smalltalk 这样的动态类型语言,通常因为它们优雅的灵活性,强大的元编程能力(metaprogramming),提供了很高的生产力。

如果撇开它们在高产能上的优势,动态语言也许不是个万金油,特别对于大规模和高性能程序来说,不是最佳选择。在编程社区里,有一个对于动态类型和静态类型究竟谁更占有优势进行的冗长争论。很多的比较观点多少都有些主观。我们不会在这里讨论所有的这些争论,但是我们会提供一些对此的看法以供参考。

相比静态语言来说,优化动态语言的性能更富有挑战性。在静态语言中,优化器可以根据类型信息来进行决策。而在动态语言中,只有很有限的信息是可用的,这使得优化器的选择更加困难。虽然近年来在动态语言优化方面的提升渐渐浮现希望,但是它们还是落在静态语言的优化艺术的后面。所以,如果你确实需要很高的性能,静态语言或许是一个更保险的选择。

静态语言同样可以使开发过程获得好处。集成开发环境(IDE)的一些功能,比如自动完成(有时候被称为智能感知)在静态语言中更容易完成,因为那些类型信息都是可用的。而更加明显的类型信息在静态代码中促进了代码的自我解释,随着项目的发展,这对于开发者意图的互相交流是十分重要的。

当使用一种静态语言时,你必须时刻考虑使用恰当的类型。这迫使你在选择设计时更加小心。这虽然会拖慢日常的设计决策,但是长此以往,在应用程序中对类型使用的思考会带来更为清晰的设计。

静态语言的另外一个小的好处就是编译时期的额外检查。我们通常认为这个优势被夸大了,因为类型不匹配的错误只是日常见到的运行时错误中的一小部分。编译器无法发现逻辑错误,这显然更加重要。只有一个综合的,自动的测试组可以发现逻辑错误。对于动态语言来说,测试也必须覆盖可能的类型错误。如果你以前编写过动态类型语言,你会发现你的测试组其实会小一些,但不会小很多。

许多开发者发现静态语言太过冗长,抱怨静态类型是冗长的元凶,而事实上真正的原因是缺少类型推断。在类型推断的情况下,编译器会根据上下文推断值的类型。例如,编译器会识别在 x = 1 + 3 中x 是一个整型。类型推断能显著地减少代码的长度,使得代码更像是用动态语言编写出来的。

我们都曾经在不同的时间和静态语言和动态语言打过交道。我们发现两种类型的语言都因为不同的原因被广为关注。我们相信现代软件开发者必须掌握一系列的语言和工具。有时,动态语言会是完成工作的正确工具;而有时,一个静态语言,例如Scala,会是你正需要的。

内容导航
 第 1 页:为什么选用Scala  第 2 页:静态、混合范式的Scala
 第 3 页:安装Scala  第 4 页:初尝Scala
 第 5 页:初尝Scala并发



分享到:

热点职位

更多>>

热点专题

更多>>

51CTO旗下网站

领先的IT技术网站 51CTO 领先的中文存储媒体 WatchStor 中国首个CIO网站 CIOage 中国首家数字医疗网站 HC3i