1.1 为什么要学Scala语言[1]
1.优雅:这是框架设计师第一个要考虑的问题,框架的用户是应用开发程序员,API是否优雅直接影响用户体验。
Martin OrderSke (scala发人)
- Epel瑞士科技大学
- Javac是Matin编写的
- 让程序员高效简洁优雅开发软件
- SCALA比 Ruby Gtoovy高效
- Spark是又Scala编写
2.速度快:Scala语言表达能力强,一行代码抵得上Java多行,开发速度快;Scala是静态编译的,所以和JRuby,Groovy比起来速度会快很多。
3.能融合到Hadoop生态圈:Hadoop现在是大数据事实标准,Spark并不是要取代Hadoop,而是要完善Hadoop生态。JVM语言大部分可能会想到Java,但Java做出来的API太丑,或者想实现一个优雅的API太费劲。
- Martin Odersky是Scala编程语言的发明者。
- Martin Odersky是EPFL(瑞士领先的技术大学)编程研究组的教授。
- Martin Odersky编写了javac,这是目前大部分Java程序员所使用的编译器
- Martin Odersky他在整个职业生涯中一直不断追求着一个目标:让写程序这样一个基础工作变得高效、简单、且令人愉悦。
- Scala是java的语言的发展方向,称之为java的下一代语言
- Scala是Groovy和Ruby的杀手。Scala有完整的体系特征,这使Groovy,Ruby看上去更像个玩具,Scala的性能远高于Groovy,Ruby
- 2009年4月,Twitter宣布他们已经把大部分后端程序从Ruby迁移到Scala
- Spark就是由scala开发的
1.2 什么是 Scala[1]
Scala需了解知识
编程范式:
面向对象编程(Object-oriented programming):
对象为中心,理清对象之间关系。支持语言:java封装,继承,多态等语法
过程式编程(Procedural programming):
过程为中心,理清事件执行步骤。支持语言:c语言语法
函数式编程(Functional programming)
函数为中心,理清函数之间的关系,支持语言:scala等
函数式编程特点:
A)、函数式编程的起源,是一门叫做范畴论(Category Theory)的数学分支。
B)、在函数式编程中,函数就是一个管道(pipe)。这头进去一个值,那头就会出来一个新的值,没有其他作用(类似数学公式)
C)、最主要的特征是,函数是第一等公民。
D)、强调将计算过程分解成可复用的函数
扩展:范畴论概念:彼此之间存在某种关系的概念、事物、对象等等,都构成"范畴"。随便什么东西,只要能找出它们之间的关系,就能定义一个"范畴"
Scala官网介绍
Scala 是 Scalable Language 的简写,是一门多范式的编程语言。
Scala设计的初衷是要集成面向对象编程和函数式编程的各种特性。Scala运行于Java平台(Java虚拟机),并兼容现有的Java程序。(下图来自scala官网)
1.3 Scala特点[1]
Scala 是面向对象的
Scala是一个纯面向对象的语言,所有的值都是对象,类和对象行为用类和特质来描述.
Scala 是函数式的
Scala中函数是高等公民,所有函数都是值.
Scala是静态类型的
静态语言:的数据类型是在编译期间确定的或者说运行之前确定的,编写代码的时候要明确确定变量的数据类型
- 面向对象和函数式,前面已经讲过
- 介绍:静态类型语言,可伸展
Scala 可伸展的语言
Scala语言的名称来自于“可伸展的语言”。之所以这样命名,是因为他被设计成随着使用者的需求而成长。你可以把Scala应用在很大范围的编程任务上,从写个小脚本到建立个大系统。