zoukankan      html  css  js  c++  java
  • Scala Beginner

    开始学习Scala,下面的内容大部分从Scala官网翻译过来,有几个地方翻译的不是很好,表述不清楚的地方大家可以浏览Scala官网,多指教。

     

    Scala offical website is http://scala-lang.org

    I think scala-lang means scalable language.

     

    What is Scala?

    1A Scalable Language(可扩展语言)

    Scala is an acronym for "Scalable Language".

    Scala"Scalable Language"的缩写。

     

    对于名称的理解,Scalable Language意味着既可以书写一行语句并输出结果,也可以完成大型、复杂的任务(比如TwitterLinkedInIntel等)。

     

    2Object-Oriented(面向对象)

    Scala是存粹的面向对象语言。

    从概念上说,每个值(value)都是对象,每个操作都是函数调用。

    Scala以类和接口的方式支持高级的组件架构(component architectures )。

     

    许多其他语言中的设计模式,在Scala中得到原生态的支持。

    比如,通过object定义支持单例模式,通过模式匹配支持访问者模式。利用隐式类,Scala甚至允许对已经存在的类增加新的操作,无论这些已经存在的类是Scala中的还是Java中的。

     

    3Functional(函数式)

    尽管Scala语法相当传统,但是Scala是成熟的(full-blown)函数式语言。

    Scala有你期望的所有(函数式语言特征),包括一等函数(first-class functions,高效且数据结构固定的库,以及基于变化的不变性偏好(a general preference of immutability over mutation.)。

     

    与其他函数式语言不同,Scala允许(开发者)以一种渐进的、容易的方式迁移到函数式风格。开始时,你可以将Scala认为是没有分号的Java语言。逐渐的可以利用安全的函数模式替代程序中易变的状态。作为Scala程序员,我们认为这种进阶方式是个好主意。同时Scala不是死板的语言,你可以以你喜欢的任何方式使用它。

     

    4Seamless Java Interop(Java的无缝交互)

    Scala运行在JVM上。Java的类和Scala的类可以自由混合使用,不论他们是在一个项目(project)中还是在不同项目中。二者之间甚至可以相互引用,Scala编译器包含Java编译器的一个子集(subset),所以Scala编译器可以理解这种循环依赖。

     

    Scala来说,Java类库,框架,工具都是可以使用的。Build工具,比如maven,集成开发环境,比如EclipseIntelliJNetbeans,框架,比如Spring或者Hibernate,都可以无缝的应用于ScalaScala可以运行在所有的通用JVM上以及Android上。

     

    5Functions are Objects(函数是对象)

    Scala的方式是开发一个小系列的构造,并可以灵活的结合。这也暗示了Scala面向对象和函数式的性质。面向对象与函数式二者高度统一,所以可以将二者认为是硬币的正反面。

     

    例子:Scala中的函数是对象,函数的类型是正规的类。在HaskellF#或者ML语言中的数据类型,在Scala中以类继承方式实现。任意类都可以实现模式匹配。

     

    6Future-Proof(与时俱进)

    对于提供一致性和同步处理的可扩展服务软件,多核并行效率,云的分布式处理,Scala很有优势。

     

    函数式特征使得Scala可以编写安全高效的多线程代码。Scala对于易变状态的较少依赖,以及Scala的特征和actors,这些为在高层次抽象组织一致性系统提供了强大工具。

     

    7Fun(乐趣)

    最重要的是,Scala乐趣无穷!

  • 相关阅读:
    Oracle分析函数
    oracle row_number的使用
    lru缓存测试类
    注解测试类
    lucene测试类
    SVN中检出(check out) 跟导出(export) 的区别
    Lucene原理与代码分析
    Lucene入门基础教程
    linux的less命令
    day4 大纲笔记
  • 原文地址:https://www.cnblogs.com/lizichao/p/4526379.html
Copyright © 2011-2022 走看看