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

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

I think scala-lang means scalable language.

What is Scala?

1、A Scalable Language(可扩展语言)

Scala is an acronym for "Scalable Language".

Scala是"Scalable Language"的缩写。

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

2、Object-Oriented(面向对象)

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

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

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

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

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

3、Functional(函数式)

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

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

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

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

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

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

5、Functions are Objects(函数是对象)

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

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

6、Future-Proof(与时俱进)

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

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

7、Fun(乐趣)

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

Scala Beginner的更多相关文章

  1. SCALA XML pattern attrbute(属性)

    from: Working with Scala's XML Support 虽然这个guy炒鸡罗嗦,但是还是讲到我要的那句话:  Because Scala doesn't support XML ...

  2. jdb调试scala代码的简单介绍

    在linux调试C/C++的代码需要通过gdb,调试java代码呢?那就需要用到jdb工具了.关于jdb的用法在网上大家都可以找到相应的文章,但是对scala进行调试的就比较少了.其实调试的大致流程都 ...

  3. scala练习题1 基础知识

    1, 在scala REPL中输入3. 然后按下tab键,有哪些方法可以被调用? 24个方法可以被调用, 8个基本类型: 基本的操作符, 等:     2,在scala REPL中,计算3的平方根,然 ...

  4. 牛顿法求平方根 scala

    你任说1个整数x,我任猜它的平方根为y,如果不对或精度不够准确,那我令y = (y+x/y)/2.如此循环反复下去,y就会无限逼近x的平方根.scala代码牛顿智商太高了println( sqr(10 ...

  5. Scala集合和Java集合对应转换关系

    作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 用Scala编码的时候,经常会遇到scala集合和Java集合互相转换的case,特意mark一 ...

  6. Scala化规则引擎

    1. 引言 什么是规则引擎 一个业务规则包含一组条件和在此条件下执行的操作,它们表示业务规则应用程序的一段业务逻辑.业务规则通常应该由业务分析人员和策略管理者开发和修改,但有些复杂的业务规则也可以由技 ...

  7. Scala快速概览

    IDEA工具安装及scala基本操作 目录 一. 1. 2. 3. 4. 二. 1. 2. 3. 三. 1. 2. 3. 4. 5. 6. 7. 四. 1. (1) (2) (3) (4) (5) ( ...

  8. Scala Macros - scalamela 1.x,inline-meta annotations

    在上期讨论中我们介绍了Scala Macros,它可以说是工具库编程人员不可或缺的编程手段,可以实现编译器在编译源代码时对源代码进行的修改.扩展和替换,如此可以对用户屏蔽工具库复杂的内部细节,使他们可 ...

  9. Scala Macros - 元编程 Metaprogramming with Def Macros

    Scala Macros对scala函数库编程人员来说是一项不可或缺的编程工具,可以通过它来解决一些用普通编程或者类层次编程(type level programming)都无法解决的问题,这是因为S ...

随机推荐

  1. Mysql 索引增加与删除

    [1]索引 索引,通俗理解,即目录. 之前说过,计算机是对现实世界的模拟.目录应用在数据库领域,即所谓的索引. 目录的作用显而易见,所以建立索引可以大大提高检索的速度. 但是,会降低更新表的速度,如对 ...

  2. View数据呈现相关技术

    一.了解Razor语法 1.Razor基本语法 a)输出单一变量时不需要加分号做结尾.如: <p>现在时刻:@DateTime.Now</p> b)输出一段含有空白字元或运算子 ...

  3. 【转】windows下 ADT NDK开发环境配置

    前提: 下载好Ecplise ADT并配置好开发环境,不会配置环境可以参考这里: http://blog.csdn.net/danfengw/article/details/47111107 步骤: ...

  4. SERVICE_STATUS结构各成员解析

    在编写Windows服务的时候,需要调用API函数::SetServiceStatus()向服务控制管理器(SCM)提交更新当前服务的状态信息,其第2个参数为指向SERVICE_STATUS结构的指针 ...

  5. Android应用开发:网络工具——Volley(二)

    引言 在Android应用开发:网络工具--Volley(一)中结合Cloudant服务介绍了Volley的一般使用方法.当中包括了两种请求类型StringRequest和JsonObjectRequ ...

  6. Javascript文件加载:LABjs和RequireJS

    传统上,加载Javascript文件都是使用<script>标签. 就像下面这样: <script type="text/javascript" src=&quo ...

  7. VS2017快捷键

    1.回到上一个光标位置/前进到下一个光标位置 (1)回到上一个光标位置:使用组合键“Ctrl + -”; (2)前进到下一个光标位置:“Ctrl + Shift + - ”. 2.复制/剪切/删除整行 ...

  8. 【BZOJ4373】算术天才⑨与等差数列 线段树+set

    [BZOJ4373]算术天才⑨与等差数列 Description 算术天才⑨非常喜欢和等差数列玩耍.有一天,他给了你一个长度为n的序列,其中第i个数为a[i].他想考考你,每次他会给出询问l,r,k, ...

  9. SQL 经验总结

    总结日常工作中使用SQL遇到的坑和技巧,一是加深印象,二是方便回顾.会不定期更新. 坑 1.多表联查时要使用表名,如果两个表的有列名相同的情况你没有加别名,那么sql编译器就不知道使用哪个列.这时进行 ...

  10. Linux就该这么学--Shell脚本基本应用

    1.接收用户的参数: Shell脚本为了能够让用户更灵活的完成工作需求,可以在执行命令时传递参数:(命令名 参数1 参数2...) Shell预定义变量: $0 当前执行Shell脚本的程序名 $1- ...