(一)Scala从入门到项目实战(Flink、Spark、Kafka)——Scala及课程简介——董长春

交流群:942277506,问题答案:董长春

前言——对Scala初学者的忠告

在我个人看来,Scala是一门非常优雅的语言,但优雅的背后要付出的辛苦也很多,比如学习Scala的人都会说,Scala语法非常简洁,但这也意味着抽象级别比较高,对初学者而言不好理解。也会有人说,Scala语法非常灵活,一个功能可以有非常多的实现方法,可以说条条大路通罗马,那么代价就是对于初学者来说,路多了反而不好选择。

所以在这里我对初学者的忠告是:在学习Scala前期,先走通一条路,屏蔽掉多余的干扰项,可能我们第一次使用Scala实现的项目看起来是非常笨拙的,但是没关系,任何的学习都是循序渐进的,不要追求一蹴而就。走通之后再回头,去寻找更好的替代方案。这样才能享受学习。

综上,本课程的设计是比较特殊的,我会带着大家选择其中的一条路直接走向罗马,中间尽可能避开其他选项,当整体的知识架构搭建完成后,再一起以胜利者的姿态去讨论其他的方案和技巧。

提示:Scala语法简洁多变,源码中更是体现得淋漓尽致,所以不建议初学者过多翻看源码。如确有需求请在医师指导下服用。避免出现不良反应。

 

目录

前言——对Scala初学者的忠告

Scala简介

Scala初印象

为什么要学习Scala?

函数式编程

Scala和Java的关系


 

Scala简介

 

Scala初印象

Scala用一种简洁的高级语言将面向对象和函数式编程结合在一起。Scala的静态类型有助于避免复杂应用程序中的错误,其JVM和JavaScript运行时使您可以轻松访问庞大的库生态系统来构建高性能系统。

 

为什么要学习Scala?

分布式高并发语言Go、R、Erlang等等为何选择Scala?

Spark是大数据处理的核心方式,用scala语言编写!

Kafka分布式发布订阅消息系统,由LinkedIn捐给Apache,以极高的吞吐量著称,是目前最火爆的MQ,用scala语言编写!

Flink最新一代分布式海量数据计算框架,Alibaba收购并开源,自己开发Blink分支,Scala语言编写!

 

函数式编程

C:面向过程编程

Java:面向对象编程

Scala:面向函数编程

函数式编程:将所有复杂的问题的解决拆分为若干函数的处理,每一个函数可以去实现一部分功能,利用很多次函数的处理最终解决问题。函数式编程相对于面向对象编程更加的抽象,好处是代码可以非常的简洁,更多的采用常量而不是变量来解决问题,这样额外带来的好处是在线程并发时可以减少甚至杜绝多线程并发安全问题,特别适合于应用在处理高并发场景、分布式场景下的问题。函数式编程可以使用高阶函数,函数在scala中是一等公民,可以更加灵活的进行程序的编写。

函数式编程并不是面向对象编程的发展,而是另外一种解决问题的思路,两者之间也并没有绝对的好坏之分,在不同的场景中各有各的优缺点。

当然Scala是一种函数是编程的语言 同时具有面向对象编程的特点。

Scala和Java的关系

java是由C语言开发,scala基于java,现在看来大部分情况下,青出于蓝而胜于蓝!

分布式开发中会面对很多棘手的问题,如面临服务器之间的通信、远程调用、序列化、反序列化等等。但有了scala这一切变得轻松,它全部都做了内部实现。让我们访问分布式集群环境就和访问单机一样简单。

同时Scala无缝集成Java,Scala编译器会先把源文件编译成class文件再运行。Scala可以调用所有的Java类库,也可以从Java应用程序中调用Scala的代码。它也可以访问现存的数之不尽的Java类库,这让用户(潜在地)迁移到Scala更加容易。

Java  => 编译 => *.class => JVM

Scala => 编译 => *.class => JVM

扩展:groovy、clojure(storm)都可以编译成.class,利用JVM。

Scala的编译器的作者就是Java编译器的作者。

学习下一节

猜你喜欢

转载自blog.csdn.net/dcc15011003101/article/details/105977413