Scala做为一个相对年轻的编程语言,近来有着不错的发展势头:火爆的Twitter以及LinkedIn成为了其进军Web 2.0世界的第一步。本文对Scala在现代Web 2.0中的影响力进行了分析。

一个 Twitter 的开发人员说过,Scala 将会成为现代 Web2.0 的建议言语。LinkedIn 也用这种言语。相同许多其他大的公司如 Sony Picture, EDF, SAP 也开端运用这种言语。

Scala将成为现代Web 2.0的建议言语(scala web框架)  Scala Web 2.0 第1张

51CTO修改引荐:Scala编程言语专题

Scala 姓名的意义

Scala 意为可扩展的(Scalable)言语,意味着开端时很小可是可以持久开展。关于新触摸 Scala 的人来说,它看起来或许像脚本言语。可是 Scala 并不是实在的脚本言语,这也不是 Scala 首要的特性。实际上,它可以做到 Java 能做到的全部作业而且能供给超出 Java 才能规模之外关于大体系的支撑。Scala 规划的标准之一便是期望发明一种可以适于任何从小程序开展到大体系却不需求改变架构的言语。

Scala 的开展

90 时代 Martin Odersky 加入到开发 Java 言语和他的编译器。他和 Philip Wadler 研究员一起开发了终究成为泛型 Java( GJ ) 的 Pizza, 后来又加入到 Java 5 的开发中。Martin Odersky 一向从事编写 javac 编译器。GJ 的编译器也便是他们做的扩展,先于 SUN 公司接收 GJ 到标准的 Java 中很长时刻 —— 由于 SUN 公司先接收了编译器。

1999 年 Martin Odersky 到瑞士从事一些更根底的课题作业。他开端测验将面向目标和函数很好的结合起来。他们现已在 95/96 年在 Pizza 上做过测验,可是只成功了一半,由于那时分他们将 Java 作为根底言语即将处理许多不精密的当地。Java 的扩展性并不抱负。所以在 2000 初, Martin Odersky 和他的小组在 EPFL 开发了一门新言语可以和 Java 互操作可是可以有用地将面向目标和函数编程技能结合起来。

他所测验的这些言语中,第一次被叫做 Funnel, 第2次的叫做 Scala. 第2次试验的成果十分美丽,所以他们将其打包作为试验版发布,这样 Scala 就成为一个实在的言语产品供人们试用。他们将一些粗糙的边际进行抛光,做了一些小的语法改变,重写了 Scala 的东西以保证 Scala 言语和它的东西可以保持许多的运用。他们在 2006 年发布了 Scala 第二版,然后它敏捷地获得了人气。

结合面向目标和函数编程的优势

函数编程让你可以经过运用简略的部件构建你感爱好的内容,由于它可以供给强有力的粘合力。函数以一种风趣的办法运用你程序的元素而且将他们和其他的元素进行粘合。函数编程的一个长处便是你可以想运用一个数据那样运用函数。一种几乎在一切编程言语中都能有典型的数据类型便是 ”int”: 你可以在任何当地声明一个 int 值,包含在一个函数中,你可以将它传递给一个函数,将它从一个函数中回来或许将它存储在一个字段中。这些特性供给给你一个构建自己结构的强有力的办法,界说实在高层级的库,或许去界说新的范畴特别言语(DSL)。

从另一个方面来说,面向目标编程供给了构建体系组件和改变杂乱体系的优异处理办法。承继和多态供给了灵敏的办法去构建和安排命名空间。而且现已具有比较好的编程东西,比方在 IDE(集成开发环境)中当打下一个点时弹出的用作提示有何种办法可用的上下文提示。

Scala 开发中的困难和处理办法

将面向目标和函数式编程结合存在的应战是,怎么将这两头有用的安排起来让他们看上去是一种言语而不是两种。因而怎么将这两种编程办法中特性去除一部分成为重头戏。

假如将两种编程办法完整地结合,终究只或许得到的是交互很少的两种子言语。应战在于,怎么从两种结构中界说结构。举个比方来说,在函数编程言语中一个函数值对应于面向目标中的一个目标。你可以说,这是一个具有 “apply” 办法的目标,因而咱们能将一个函数值说成是一个目标。其他一个比方,函数编程中的根本代数类型可以对应成面向目标中的多重承继,Java 中静态字段和办法也存在相同的问题。因而,Scala用将其替换成单例目标的成员的办法消除这种抵触。像这样的比方还有许多,Scala 的开发团队正在努力于消除言语中类似的抵触而且一致构建成其他东西。

Scala 开发过程中遇到的最大的困难

开发编译器的技能是最大的应战。风趣的是,这些困难更多的来自于面向目标这边。由于面向目标中高档的静态类型体系十分稀有,而且他们中没有一个是干流。Scala 比 Java 或许和 Java 类似的言语在类型体系上具有更强的体现力,所以需求经过开宣布一些新颖的类型和为组件构建更多笼统类来拓荒新的范畴.。这带来了一些开发 Scala作业的困难也带来了一些研究成果。

另一个困难的部分和交互有关。为了获得十分好的交互作用必须将 Java 中的全部都映射到 Scala 中。在想要将 Java 库彻底映射到Scala 中和防止 Java 中的多重结构之间总是存在严重的状况。这是一个永久的有应战里的工程问题,尽管经过了不少的作业可是终究的成果仍是令人满意。

Scala 规划的意图

为了将编程变成一种享用,Martin Odersky 和他的搭档做了不少作业。Scala 尽或许多的移除了传统高档协议编程言语中类似于咒语的语法,Scala 具有强壮的体现力因而开发者可以以自己喜爱的办法来描绘作业。Martin Odersky 在开发 javac 的时分就领悟到 Java 程序员需求做的多少无用功,许多样本是不需求的。

Scala 言语的灵敏性是一件强有力的东西可是这也有两面性。它赋予了程序员书写自在的一起也赋予了防止过错的职责。从哲学的意义上来说,这是 Scala 和 Java 最大的不同之处。Java 具有十分强的概念标准,因而任何一个 Java 程序都和周围其他任何一个 Java 程序十分类似,而且这样可以便利的进行程序员替换。可是 Scala 并没有这样的一致性,由于这是一门很有体现力的言语。

你可以用许多种办法书写 Scala 程序,假如你是一个刚刚开端 Scala 的 Java 程序员,你也可以写成 Java 程序那样。这让编程小组十分简略的迁移到 Scala, 而且将项目风险下降。程序员可以先在非要害的部分试用然后在他们觉得适宜的时分再敏捷的扩展到其他的部分。

相同你也可以把 Scala 程序写成彻底的函数式风格,和 Java 程序一点也不像。一般这样的话, 程序看起来会更简练。这种办法带来的长处便是,你可以在 Scala 中构建类似于高层次的库的或许范畴特别言语(DSL)成你自己的俗话。一般你需求混合几种不同的言语或许装备标示来到达相同大的意图。所以终究,Scala的单言语做法会带来简略的处理方案。

Twitter 运用 Scala

Twitter 运用 Scala 作为后台编写言语终究运转杰出。Twitter 现已持续增加,而且安稳性日益成为其增加的瓶颈,它运用 Scala 也是 Scala 言语的一次杰出测验。当一个引人注意图网站比方 Twitter, 用了一个新言语,关于这个言语来说是一次酸性测验 —— 首要的问题会被敏捷发现而且被强化出来。

还有一些其他的闻名公司运用 Scala. Sony Picture Imagework 用 Scala 写它的中间层软件,欧洲最大的动力公司 EDF 在它的交易部分用 Scala 构建合同形式。SAP 和 西门子在他们的开源 ESME 东西上用 Scala。这仅仅只是许多比方中的三个罢了。

Scala 将成为现代 Web2.0 建议者

Twitter 并不是专一一家运用 Scala 的公司,LinkedIn 也用 Scala.

Scala 供给了在安稳的高功能渠道(Java 虚拟机)上生成的才能一起也是一门敏捷性言语。这一类型的言语也有其他的挑选,例如 Jython, JRuby, Groovy 和 Clojure, 可是这些都是运转在 JVM 上的动态类型言语。

问题是对静态类型的设定是否习气,这样问是由于这将在早些时分带来更多的问题,它给了你一个安全的重构网络,或许它协助提高了功能。或许你需求一个彻底动态的言语由于想用元程序做一个喜爱的东西。假如你倾向运用静态类型的言语,Scala 肯定是一个最适合的挑选。

Scala 言语的特性

Scala 言语的特性有许多,例如高阶函数和目标、笼统类型绑定,actor 使得函数在 Scala 中能是一个子类成为或许,Scala 中的规划形式使得面向目标和函数编程无缝结合。

Scala 的开展方向

Scala 的下一个版别 Scala 2.8 将努力于高功能的数组操作,从头界定调集和快速永久的数据结构等。Scala 2.8 将在本年的下一个季度发布。

持久来看,Scala 对并发和并行有爱好,因而正在支撑多核处理器和其他并行体系上寻觅新的路途。Scala 现已有一个受欢迎的 actor 体系,它可以高水平的体现并发,这现已在 Twitter 的音讯传递上现已得到证明。风趣的作业是,actor 并不是 Scala的言语特性,它彻底是 Scala 的一个库。这是 Scala 灵敏性的杰出的见证者:只要用对了原语和库中的笼统,你可以在程序中编写像言语特性的东西。

Scala 将在数据并发和流编程上供给和 actor 相同杰出的体现。在未来咱们极有或许需求一些并发笼统来使用多核由于不同的并行和并发状况需求不同的东西。Scala 库的根底的做法正是与此相关,由于它让咱们将混合和匹配的概念完成成为类和目标,这样可以快速前从而不是将一切的这些都放入一个言语和一个编译器。在未来的 5 年内,Scala 都将努力于此。

【修改引荐】

  1. Scala编程言语
  2. Scala和Clojure,以及优异的企业级言语之道
  3. Scala IDE支撑现状陈述:三大巨子面面相觑
  4. Scala的长处与缺点:深重而风趣的承继者
  5. Scala和Erlang,以及多核主导的未来
转载请说明出处
知优网 » Scala将成为现代Web 2.0的建议言语(scala web框架)

发表评论

您需要后才能发表评论