Ruby高手点评Scala编程语言十大绝招

发表于:2011-3-01 10:57

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:司马牵牛    来源:51Testing软件测试网采编

  几个月前,我开始使用 Scala。我用过的编程语言还有 Pascal、C、C++、Java、PHP、Ruby 和 Groovy,但是,与所有那些我用过的语言相比,我发觉 Scala 是一门与众不同的语言。我是在看到 Twitter 上关于 Ruby 和 Scala 讨论之后,才开始我的 Scala 编程之旅的。现在,使用 Scala 编程已经几个月了,关于 Scala 我有两点想法,虽然类似的想法已广为人知,但我仍很想与你们分享:

  ◆Scala 的确很棒。

  ◆我的确认为计算机学院应该开一门 Scala 的语言课程。

  在这篇文章中,我会讲述为什么我会有这样的想法,在此之前,有几点我想要先声明一下:

  本文无意对编程语言进行评比,我要讲述的主体是为什么你应该学习 Scala。51CTO之前曾发布过一篇 Java 程序员为何要学习Scala的文章,可能也会对你有所帮助。

  目前 Scala 有两个实现方式,一种是在 JVM(Java 虚拟机)上运行,另一种是在 CLR(Common Language Runtime 的缩写,即公共语言运行库)上运行。不过,JVM 的实现方式更为成熟。如果你想要使用 .Net framework 框架,我认为最好还是听从 Lift framework 框架创始人大卫·波拉克(David Pollack)的建议:使用 F#。但在这篇文章中,我将只关注 JVM 这种实现方式。

  我是一个 Ruby 程序员,并且我会继续喜欢 Ruby,因为它是我见到过的最棒的动态语言。但我也喜欢 Scala,因为在其他工作领域,它提供的某些功能非常强大。

  现在,让我们来仔细分析一下,是哪些原因让我选择 Scala 作为我的下一个编程语言:

  强大的编程语言

  Scala 是一门非常强大的语言,它允许用户使用命令和函数范式进行编写代码,因此,编程时你可以使用常用的命令式语句,就像我们使用 C、Java、PHP 以及很多其他语言一样,而且,你也可以使用类似 Lisp 语言中函数式语句,还有,你可以混合使用这两种风格的语句,就像 Ruby 或 Groovy。

  不过,当我们谈论的函数范式时,与 Ruby 和 Groovy 有一点不同的地方,那就是 Scala 几乎支持函数语言中所有已知的功能,比如,模式匹配(Pattern matching)、延迟初始化(Lazy initialization)、偏函数(Partial Function)、不变性(Immutability),等等...即是说,认识到这样一个事实是非常重要的:Scala 的强大源自它对函数范式的支持,而后者令 Scala 成为一种高等级(high-level)的编程语言。对于高等级的编程语言,你只需关注 what(做什么)而不是如何做(how)。

  下面,让我们看一个 Java 示例:

  • int[] x = {1,2,3,4,5,6};   
  • ArrayList res = new ArrayList();   
  • for (int v : x) {   
  • if (v % 2 == 1) res.add(new Integer(v));   
  • }
  •   仔细看一下上面这段示例代码,你会注意到,我想要做的“what”部分(过滤掉奇数值)仅出现在第四行中,而其余行则是“how”如何做的部分(结果变量的初始化以及一个循环操作)。如果我想要再写一个过滤器,用于筛选偶数值,那就需要再写五行代码,而使用一门像 Scala 这样的高等级语言,你只需编写“what”那部分的代码:

  • val x = Array(1,2,3,4,5,6)   
  • val res = x filter ( _ % 2 == 1 ) //过滤奇数值 
  • val res2 = x filter ( _ % 2 == 0 ) //过滤偶数值
  •   我们可以看到,相对于上文中的 Java 代码段,这段代码更加简洁,而且具有更好的可读性。

      高效

      Scala 是一种高效的编程语言,实际上,根据最新的 benchmark 性能测试,它几乎和 Java 一样快捷。在 JVM 上实现的 Scala 代码,可以编译为字节码,在这一过程中,代码通过优化阶段进行编译。尾递归优化是一个很好的示例,它可帮助用户专注于函数范式而无需以牺牲性能为代价。还有一个示例是,将 Scala 值类型对象转换为 Java 基本类型时进行的优化。

      可扩展

      Scala 语言本身的名字 Scala 来自 Scalable(可扩展的)一词,这意味着这种语言可以按照用户的需求进行扩展。因此,从根本上来讲,用户可以添加新的类型和控制结构。比如,我想要添加一个简单的“loop”控制结构:

    51/512345>
    《2023软件测试行业现状调查报告》独家发布~

    关注51Testing

    联系我们

    快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

    法律顾问:上海兰迪律师事务所 项棋律师
    版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
    投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

    沪ICP备05003035号

    沪公网安备 31010102002173号