Scale 概述(上)|学习笔记

简介: 快速学习 Scale 概述(上)。

开发者学堂课程【Scala 核心编程-基础Scale 概述(上)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/609/detail/8875


Scale 概述(上)

 

内容简介

一、Scale 语言的学习原因

二、Spark

三、Scala 语言的诞生

四、Scala 的优缺点

五、大数据的发展

六、Scala 语言推动 java 语言发展的原因

 

一、Scale 语言的学习原因

1、大数据解决的问题

数据的采集、海量数据的存储(HBase)、海量数据的计算(核心)

2、计算的分类

离线计算(My produce)、实时计算(saprk)

 

二、Spark

1、定义

(1)、新一代内存级大数据计算框架,是大数据的核心内容。

(2)、在对 spark 进行二次开发等情况时,由于 Spark 是基于 Scala 基础之上编写的,故而为更好地学习 Spark,需要Scala 此门语言与掌握 spark框架的源代码。

(3)、Scala 是 Scalable Language 的简写,含义为可升级、可攀登,是一门多范式的编程语言(面向对象:命令式编程的一种方式/函数式编程),函数的地位得到提升,其运用十分到位。

1、范式

编程的方式

2、函数式编程的重点内容

偏函数、高阶函数、将函数作为一个参数进行传递、纯函数、函数的柯里化

2、由来

联邦理工学院洛柔(EPFL) 的 Martin Odersky 于 2001年开始设计 Scala。此语言2003年被推出,属于较为年长的语言。由于大数据的兴起带动了 spark 的发展,使得 Scala 语言在2016年后较为热门。

3、比较

C 语言、C++、java 等语言在学习后具有部分的共同特性,存在大同小异的特点。但 Scala 相对其它语言而言变化较大,部分本身的特色较为有趣。此语言在学习过程中可使得自身的编程思想、编程算法得到一定程度的提升。

4、Spark 特点-函数式编程

引入后使函数更为强大、提倡递归,效率得到大大提升。

5、总结

Spark 的学习为学习 Scala 打下基础。

 

三、Scale 语言的诞生

1、编译器的作用

将源代码翻译成机器可进行执行的代码。

2、最接近机器语言的语言

汇编语言

3、诞生背景

创始人马丁奥德斯基(Martin Odersky)是编译器及编程的狂热爱好者长时间的编程后,希望发明一种语言,能够让写程序这样的基础工作变得高效简单。当接触到 JAVA 语言后,对 JAVA 这门便携式运行在网络,且存在垃圾回收的语言产生了极大的兴趣,所以决定将函数式编程语言的特点融合到 JAVA 中,由此发明了两种语言(Pizza & Scala)

4、Pizza、Scala 的作用

Pizza 和 Scala 极大地推动了 Java 编程语言的发展。

5、发展

(1)、jdk5.0的泛型for 循环增强自动类型转换等,都是从 Pizza 引入的新特性。

(2)、jdk8.0的类型推断,Lambda 表达式就是从 scala 入的特性。

(3)、当今主流 JVM 的 javac 编译器是马丁奥德斯基编写出来的。Jdk5.0Jdk8.0编译器的开发使得马丁奥德斯基一人的能力足以媲美个 Java 开发团队。

6、新技术未被普遍使用的原因

jdk9.0尽管已被推出,但由于公司越为庞大对于新技术越为谨慎的特点,其仍未被全面使用。

 

四、Scala 的优缺点

1、优点

(1)、由于其本身的高效简单,使得 Scala 一行代码即可完成多种功能

(2)、代码维护较为轻松

(3)、代码阅读十分清晰

2、缺点

(1)、理解较为困难

例如:大量使用递归函数

 

五、大数据的发展

1、算法的学习

后续学习的大数据的处理对于算法具有一定程度的要求,即将来欲在大数据领域进行深入发展最终将对于算法进行学习。

2、大数据的发展前景

(1)、大数据应用工程师

将他人编写完成的算法或函数进行调用并完成统计,解决数据分析、挖掘、查询,最终使结果呈现而出。

(2)、大数据算法工程师

对于算法要求较高

 

六、Scala 语言推动 java 语言发展的原因

1、理论

两者可进行一定程度上的融合、使用编译器。当马丁奥德斯基在发明语言的同时,同时使得 java 语言的语法进行了扩展。

2、实例

//进行 java 代码的编写

for (;;)

{

}

if()

{

]

//以上语法被支持的原因:编译器的支持

3、总结

当编译器支持了更多的语法规则后,即使得其语言能力得到了增强。故而在马丁奥德斯基编写编译器的同时,也将此两种编译器支持的语法写入了 jdk5.0与 jdk8.0之中,使得两者得到增强。

在此后的实际运用中,可观察到 Scala 编译器能够直接执行 java 语言的代码。

相关实践学习
基于MaxCompute的热门话题分析
Apsara Clouder大数据专项技能认证配套课程:基于MaxCompute的热门话题分析
相关文章
|
JavaScript 前端开发 算法
设计一个简单的JavaScript版“俄罗斯方块”游戏的基本逻辑流程。
```md 设计JavaScript版俄罗斯方块游戏涉及初始化环境、创建游戏容器、管理变量、加载音效。游戏循环中生成方块、键盘控制移动与旋转、碰撞锁定、行消除及分数更新。当游戏区域填满时结束游戏,显示结束画面。还包括暂停、重置等辅助功能。伪代码示例展示了核心逻辑,实际实现需考虑更多细节和用户体验增强。 ```
635 3
|
JavaScript Java 关系型数据库
Springboot+vue的校园社团管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
Springboot+vue的校园社团管理系统(有报告)。Javaee项目,springboot vue前后端分离项目。
|
缓存 Java
java: 警告: 源发行版 17 需要目标发行版 17,java17 无效的目标发行
java: 警告: 源发行版 17 需要目标发行版 17,java17 无效的目标发行
13574 60
|
7月前
|
JSON 监控 API
淘宝/天猫:使用订单查询API实时追踪包裹状态,自动推送物流通知至用户
在淘宝/天猫平台,通过集成订单查询API实现物流状态实时监控,结合定时轮询与自动推送通知功能,可有效减少用户频繁刷新页面,提升购物体验。本文详解API调用原理、状态判断及Python代码实现,助力开发者构建高效、智能的物流通知系统。
678 0
|
Python
【Python】 已解决:NameError: name ‘python‘ is not defined
【Python】 已解决:NameError: name ‘python‘ is not defined
2994 8
|
12月前
|
人工智能 Serverless 定位技术
MCP云托管最优解,揭秘国内最大MCP中文社区背后的运行时
本文介绍了魔搭(ModelScope)推出的全新MCP广场,将提供1500多种MCP服务。文章探讨了云上托管MCP服务的挑战,如多租户隔离、快速生成SSE地址及稳定性要求。为解决这些问题,魔搭选择阿里云函数计算作为运行时托管平台,因其具备事件触发、毫秒级弹性、会话亲和性、自动鉴权及多语言支持等优势。函数计算还针对MCP特性优化,如支持STDIO模式自动转换为SSE服务、发布Debian12运行时等。文章总结了Serverless在MCP托管领域的技术领先性,并展望未来更多AI应用功能的发布。
|
人工智能 自然语言处理 运维
又稳又快!阿里云飞天企业版支撑多家政企云上部署DeepSeek和通义千问
从“技术尝鲜”到“生产力工具”,这类业务场景并非孤例,在过去的一个月间,超20家政企单位基于阿里云飞天企业版,实现了主流大模型的“又快又稳”部署,涉及政务、金融、能源、文化传媒等多个行业领域,加速应用创新。
562 0
|
编解码 算法 前端开发
聊聊我从底层算法到业务算法转型的这一年
聊聊我从底层算法到业务算法转型的这一年
794 0
|
机器学习/深度学习 调度 Python
SOFTS: 时间序列预测的最新模型以及Python使用示例
这是2024年4月《SOFTS: Efficient Multivariate Time Series Forecasting with Series-Core Fusion》中提出的新模型,采用集中策略来学习不同序列之间的交互,从而在多变量预测任务中获得最先进的性能。
468 4