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的热门话题分析
相关文章
|
缓存 Java
java: 警告: 源发行版 17 需要目标发行版 17,java17 无效的目标发行
java: 警告: 源发行版 17 需要目标发行版 17,java17 无效的目标发行
11664 59
|
8月前
|
人工智能 Serverless 定位技术
MCP云托管最优解,揭秘国内最大MCP中文社区背后的运行时
本文介绍了魔搭(ModelScope)推出的全新MCP广场,将提供1500多种MCP服务。文章探讨了云上托管MCP服务的挑战,如多租户隔离、快速生成SSE地址及稳定性要求。为解决这些问题,魔搭选择阿里云函数计算作为运行时托管平台,因其具备事件触发、毫秒级弹性、会话亲和性、自动鉴权及多语言支持等优势。函数计算还针对MCP特性优化,如支持STDIO模式自动转换为SSE服务、发布Debian12运行时等。文章总结了Serverless在MCP托管领域的技术领先性,并展望未来更多AI应用功能的发布。
|
Kubernetes 测试技术 数据库
详解微服务应用灰度发布最佳实践
相对于传统软件研发,微服务架构下典型的需求交付最大的区别在于有了能够小范围真实验证的机制,且交付单位较小,风险可控,灰度发布可以弥补线下测试的不足。本文从 DevOps 视角概述灰度发布实践,介绍如何将灰度发布与 DevOps 工作融合,快来了解吧~
33401 19
|
Python
【Python】 已解决:NameError: name ‘python‘ is not defined
【Python】 已解决:NameError: name ‘python‘ is not defined
2578 8
|
9月前
|
Shell 开发工具 git
DeepSeekV2-lite 昇腾8卡训练实验指导
昇腾8卡运行deepseek-v2训练
299 1
|
数据挖掘 iOS开发 MacOS
Python数据分析:从导入数据到生成报告的全面指南
随着数据科学和人工智能的迅速发展,Python 已经成为了最受欢迎的数据分析语言之一。Python 具有简单易学、灵活性强、可扩展性高等优点,使其在数据分析领域具有广泛的应用。本文将介绍 Python 数据分析的基本步骤,帮助你了解如何使用 Python 进行数据分析。
|
SQL 安全 Java
Java阿里巴巴代码规范
Java阿里巴巴代码规范
25270 0
|
DataWorks 关系型数据库 MySQL
DataWorks实时数据导入:如何实现源源不断的数据流?
【8月更文挑战第22天】在数据处理领域,高效实时传输至关重要。阿里云DataWorks提供全面的数据集成服务,支持多种数据导入方式,尤其实时导入功能因高效处理能力备受欢迎。通过创建数据源与数据集,并配置实时同步任务,可实现数据从MySQL等源到DataWorks数据仓库的快速准确流入。此流程不仅提升了数据处理效率,也确保了数据实时性和准确性,为企业决策提供强有力的支持。
275 1
|
JavaScript Java 关系型数据库
基于SSM的宠物医院信息管理系统
基于SSM的宠物医院信息管理系统
316 2