开始学习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. erlang程序优化点的总结

    注意,这里只是给出一个总结,具体性能需要根据实际环境和需要来确定 霸爷指出,新的erlang虚拟机有很多调优启动参数,今后现在这个方面深挖一下. 1. 进程标志设置: 消息和binary内存:erla ...

  2. 性能测试--Jmeter录制、回放

    Jmeter录制.回放 在jmeter2.1版本之前,jmeter应该是不支持录制和回放功能的,那时候如果需要录制jmeter的性能测试脚本的话,就需要使用第三方工具——badboy.现在jmeter ...

  3. 《Linux 鸟哥私房菜》 第一部分 Linux文件、目录与磁盘格式

    1.Linux就是内核层与系统调用接口层这2层.

  4. Linux就该这么学--命令集合10(vim编辑器)

    1.vim编辑器的命令模式中常用的快捷键: dd 删除(剪切)光标所在整行 5dd 删除(剪切)从光标处开始的5行 yy 复制光标所在整行 5yy 复制从光标处开始的5行 p 将之前删除(dd)或复制 ...

  5. [IR课程笔记]Query Refinement and Relevance Feedback

    相关反馈的两种类型: “真实”的相关反馈: 1. 系统返回结果 2. 用户提供一些反馈 3. 系统根据这些反馈,返回一些不同的,更好的结果 “假定”的相关反馈 1. 系统得到结果但是并不返回结果 2. ...

  6. API的理解和使用——列表类型的命令

    列表类型的命令及对应的时间复杂度 操作 命令 功能 时间复杂度 添加 rpush key value [value ...] 向右插入 O(k),k是元素个数 lpush key value [val ...

  7. Java for LeetCode 109 Convert Sorted List to Binary Search Tree

    Given a singly linked list where elements are sorted in ascending order, convert it to a height bala ...

  8. Data Structure Binary Tree: Level order traversal in spiral form

    http://www.geeksforgeeks.org/level-order-traversal-in-spiral-form/ #include <iostream> #includ ...

  9. jQuery+CSS3动画相册特效

    在线演示 本地下载

  10. POJ1743 Musical Theme —— 后缀数组 重复出现且不重叠的最长子串

    题目链接:https://vjudge.net/problem/POJ-1743 Musical Theme Time Limit: 1000MS   Memory Limit: 30000K Tot ...