[Scala]001-初识

Scala,发音:skɑːlə。取自于 Scalable(可伸缩、可扩展的)Language简写。

01、基本概念
1)多范式:多种编程方法。目前有四种程序设计方法:面向过程、面向对象、函数式、泛型。

编程范式(programming paradigm(范例、样式、典范)),是指计算机编程的基本风格或典范模式。借用哲学术语,如果说每个编程者都在创造虚拟世界,那么编程范式就是他们置身其中自觉不自觉采用的世界观和方法论。编程是为了解决问题,而解决问题可以有多种视角和思路,其中普适且行之有效的模式被归结为范式。比如常用的“面向对象编程”就是一种范式。由于着眼点和思维方式的不同,相应的范式自然各有侧重和倾向,因此一些范式常用‘oriented’来描述。换言之,每种范式都引导人们带着某种的倾向去分析问题、解决问题,这不就是“导向”吗?如果把一门编程语言比作兵器,它的语法、工具和技巧等是招法,它采用的编程范式则是心法。编程范式是抽象的,必须通过具体的编程语言来体现。它代表的世界观往往体现在语言的核心概念中,代表的方法论往往体现在语言的表达机制中。一种范式可以在不同的语言中实现,一种语言也可以同时支持多种范式。比如,PHP可以面向过程编程,也可以面向对象编程。任何语言在设计时都会倾向某些范式,同时回避某些范式,由此形成了不同的语法特征和语言风格。抽象的编程范式须要通过具体的编程语言来体现。范式的世界观体现在语言的核心概念之中,范式的方法论体现在语言的表达机制中。一种语言的语法和风格与其所支持的编程范式密切相关。

参考:多范式编程语言【详解】

2)可伸缩的语言:
被设计成使用者的需求而成长,可应用在很大范围的编程任务上,从写个小脚本到建立大系统。
语言的可伸缩可以按照“项目大小,就像代码行数”或者“处理能力(像‘需要达到每秒处理 10 万请求’)”来理解,即 性能、(项目)大小的伸缩性。
参考:
可伸缩性:动态和静态程序设计语言
Scala,可扩展的语言
可伸缩性/可扩展性(Scalable/scalability):详解

面向对象编程:
Object Oriented Programming,OOP,把对象作为程序的基本单元,一个对象包含了数据和操作数据的函数。把计算机程序视为一组对象的集合,而每个对象都可以接收其他对象发过来的消息,并处理这些消息,计算机程序的执行就是一系列消息在各个对象之间传递。

函数式编程:
Functional Programming,把计算机程序视为一系列的命令集合,即一组函数的顺序执行。为了简化程序设计,面向过程把函数继续切分为子函数,即把大块函数通过切割成小块函数来降低系统的复杂度。

总结:
Scala 是一门多范式(multi-paradigm)的编程语言,设计初衷是要集成面向对象编程和函数式编程的各种特性。

Scala 运行在Java虚拟机上,并兼容现有的Java程序。

Scala 源代码被编译成Java字节码,所以它可以运行于JVM之上,并可以调用现有的Java类库。

2、Scala语言学习Outline

1)历史版本 预览
2001,联邦理工学院洛桑(EPFL)的Martin Odersky 基于Funnel的工作开始设计Scala;
2003底/2004初,发布Java平台的Scala;
2004-6,发布.NET平台的Scala;
2006-3,发布Scala语言的第二个版本v2.0;
2009-9,发布2.7.6;

2013-1-4,发布2.10.0;

2014-4-16,发布2.11.0,会继续支持Java 6;

2014-12,发布2.11.4;

2017-11,发布2.11.12;

2017-1,发布2.12.0,要求Java 8;

参考官方changelog
官方2.11.4、对应java下载安装:JDK 1.6+
Scala 2.11.4 标准库-文档

alpha版本:内部测试版,供开发、测试人员使用;
beta版本:公开测试版,给“部落”/忠实用户测试用;
RC版本(Release Candidate),软件/操作/语言的候选版本;
stable版本:稳定版,最终发行版。

其中一个流行的原因:
Spark,专为大规模数据处理而设计的快速通用的计算引擎。spark它是用Scala编写的。

2)语言特征
① 面向对象特性:每个值都是对象,对象的数据类型、行为 由类和特质描述。类抽象机制的扩展有两种途径:

  • 子类继承;
  • 灵活的混入机制

② 函数式编程:函数也能当成值来使用。
③ 静态类型:具备类型系统,通过编译时检查,保证代码的安全性、一致性
④ 扩展性:提供了许多独特的语言机制,可以以库的形式轻易无缝添加新的语言结构。
⑤ 并发性:使用Actor作为其并发模型,Actor是类似线程的实体,通过邮箱发收消息。
Actor可以复用线程,因此可以在程序中可以使用数百万个Actor,而线程只能创建数千个。在2.10之后的版本中,使用Akka作为其默认Actor实现。

3)学习前奏
Scala首先是OO, Java语法过于冗余, 一种比较平庸的语言, Scala首先做的是简化, 以更为简洁的方式来编写OO, 主要利用‘type inference’能推断出来的, 你就不用写, 但如果仅仅这样, 不如用python
所以Scala象其名字一样, “可伸展的语言”, 它是个大的集市, 它积极吸纳其他语言的优秀的特征, 最重要的就是FP, 你可以使用Scala来写OO, 但它推荐使用FP的方式来写Scala; 还包括Erlang里面的actor模型
所以Scala并不容易学, 因为比较繁杂。

4)思维导图
在这里插入图片描述

参考:
Scala语法基础
Scala 2.8+ Handbook
Effective Scala

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、Scala核心编程课程简介近年来随着大数据的兴起,大数据核心框架Spark和Kafka也受到到广泛关注, Spark底层是Scala实现的, 因此也带火了Scala语言,目前Scala被全球知名公司(如:谷歌、百度、阿里、Twitter、京东等)广泛用于Spark开发。新一代的物联网时代到来,会对大数据应用人才的需求越加紧迫。 尚硅谷网罗和整合了学员很喜爱的师资,打造出专注于Spark开发的Scala课程,我们讲解Scala核心编程技术,同时也讲解编程思想、设计模Scala底层实现,让您有豁然开朗的感受。二、课程内容和目标本课程重点讲解Scala核心编程,内容包括: Scala语言概述、运算符、程序流程控制、数据结构之集合、Map映射、过滤、化简、折叠、扫描、拉链、视图、并行集合、高阶函数函数柯里化、偏函数、参数推断、控制抽象、Trait、面向对象编程、异常处理、惰性函数、Akka及Actor模型、Spark Master和Worker通讯、隐转换、隐参数、工厂模、单例模、观察者模、装饰者模、代理模、泛型、上下界、视图界定、上下文界定、协变逆变不变和源码剖析。通过系统全面的学习,学员能掌握Scala编程思想和Scala底层机制,为进一步学习Spark打下坚实基础。三、谁适合学1.希望以较低的投入和风险,来了解自己是否适合转型从事Spark开发的求职人员。2.有一定的Java基础,或者自学过一些Java书籍与视频资料,想系统掌握Scala语言的程序员。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值