您所在的位置:开发 > Java > Java+ > Scala的类型系统 比Java更灵活(1)

Scala的类型系统 比Java更灵活(1)

2009-06-03 09:08 Alpha 编译 51CTO.com 字号:T | T
一键收藏,随时查看,分享好友!

Scala是一种针对 JVM 将函数和面向对象技术组合在一起的编程语言。Martin Odersky创建这个语言之时,希望它能够解决Java语言中的一些问题。Scala现在还相对比较小众,但也已经拥有了相当忠实的拥护群体。

AD:

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

【51CTO独家特稿】51CTO之前已经陆续发出了两篇Scala之父Martin Odersky的访谈。在Artima方面,访谈仍在继续,内容则逐渐向Scala语言的特性方面发展。如果您是Java程序员,或者C/C++程序员,对Scala这样与Java极其类似但又有所改进的语言感兴趣,那么推荐您阅读以下文章:

Scala创始人:创造比Java更好的语言:“你总是不得不使用具有泛型类型的非泛型类型,即所谓的raw(原始)类型。还有,你不能改变数列行为,否则就会有未经检查的警告。最重要的是,你不能利用数组做你想做的很多事情,比如生成一个具有类型参数的数组。后来在Scala,我们知道了实际上能如何实现这些事情……”

Java程序员,你为什么要关注Scala:“使用Scala我们最后所做的事是直接确定类的参数。你只需要在类名后写一个参数列表,这些就成为类的参数。不存在独立可变域和构造函数的概念,这些实际上转变成了一些我们必须要解决的问题。”

下面继续开始Martin Odersky的访谈之旅。今天,Martin Odersky将继续讲解Scala的特性,包括Scala的可扩展,以及类型的重要性。

Scala的可扩展性

Frank Sommers: 去年您在JavaOne大会的报告中,说Scala是一个“可扩展的语言”,可以随意使用。这对于一个使用这种语言的程序员来说有什么帮助呢?(51CTO编者:这两天正在举行JavaOne 2009,以下是相关报道:6月2日外电头条:JavaOne 2009 Sun最后的挽歌? 末代JavaOne大会看点解密 生存存疑

Martin Odersky: 它给你带来的帮助就是不再需要混用多种专门的语言。不论项目大小、应用领域是普通的还是特殊的,你都可以使用相同的语言。这意味着,你不必担心如何从一个语言环境到另一个语言环境调用数据。 

目前如果你想跨越环境调用数据,通常需要返回到低层次的描述。举例来说,如你想要在Java中执行一个SQL查询,并使用JDBC连接数据库(51CTO编辑推荐:JDBC连接数据库之十大技巧),查询结果最终是一个字符串。这意味着程序中的一个小错字将会导致运行时错误,很可能会体现在客户端的网站上。没有编译器或类型系统能告诉你不应该出现那样的错误。这是非常脆弱和危险的。因此,如果使用一种语言,就会避免类似问题。 

另一个问题是工具。如果你使用的是一个单一的语言,你可以拥有一个单一的环境,带有一些工具。但是,如果你使用许多不同的语言,你必须混合并匹配多种环境,你的工程构建会变得更加复杂和困难。

Frank Sommers: 您在上次的报告中还提到了可扩展性的概念,即Scala可以很容易扩展。你能否解释一下如何扩展?其次,对程序员有怎样的帮助? 

Martin Odersky: 第一层面的可扩展性是从小到大,但我认为另外一个可扩展性的概念是指你的需求从一般扩展到特殊。你希望能够把语言扩展到你所特别在意的领域。

比如数字(numeric)类型。现有许多特殊的数字类型,例如,针对破译密码人员的big整型,针对商务人士的big小数类型,针对科学家的复数类型,这样的例子不胜枚举。每一个领域的人都深切关注数据类型,但包含所有类型的语言将会是难以驾驭的。 

答案当然是说,好吧,让我们做一个包含这些类型的类库。但是,如果你真的关心这个应用程序的领域,你希望代码在访问这些类时能够像访问内置类型那样整洁圆润。于是你想要这样的扩展机制,可以让你编写这样的类库,使得类库的使用者甚至感觉不到它是个类库。对于一个类库的使用者,假设一个big小数类库, 使用BigDecimal类型应该像使用内置Int类型那样方便。

内容导航



分享到:

热点职位

更多>>

热点专题

更多>>

读书

系统分析师考试辅导(2007版)
《系统分析师考试辅导(2007版)》内容涵盖了最新的系统分析师考试大纲信息系统综合知识的所有知识点,分析了近3年信息系统分析

51CTO旗下网站

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