00:00
好,同学们,那从今天开始呢,给大家讲一门新的编程语言,当然这个语言呢,就是呃,后面我们会给大家讲到,就是为什么咱们要去学这个语言哈,好,那么今天是咱们课程的第一天,还是老规矩说一下在讲课的时候的这个目录的一个分配啊目录分配,呃,大家看到呢,这里面呢,有这么几个文件夹,对吧?呃,到时间我们笔记是放在这个文件夹下边的,然后呢,代码放到这,如果有代码放在这,如果有课件。啊,每天课件会更新,会把这个课件放这呃,需要的软件还有资料呢,放在这两个文件夹的。啊,每天的视频呢,会单独的放一个文件夹,就放到这,然后呢,作业就是每天会有作业,到时间作业呢会放在这个文件夹下边啊,然后呢,大家按照这个要求把这个作业完成,每天呢,我们会进行一个评讲啊,并进行一个评讲。好,那么今天呢,我们来看一下这个SC这个语言,首先我们看一下呃,SC的语言的一个概述概述。
01:09
那我们来看看为什么,首先我们来讨论一下,就是为什么我们要去学习scan这门语言,我这总结了这么多啊,总结了五个点。总结了五个点,那么我们来看一下,呃,这个scan它是为什么要去学习它第一个呢,我们先要提到一个概念叫Spark Spark,那Spark是什么东西呢?同学们应该是,呃,在前面听说过这个东西了。呃,应该在前面学大数据的时候,老师讲过,大数据它主要解决三个问题,对吧?第一个问题呢,就是数据的采集,第二个就是海量数据的存储,海量数据存储你们前面也学过这些东西了,比如说h base,对吧,这个学了,然后呢,还有一个核心就是大数据,还有一个核心就是海量数据的一个计算。
02:01
那么计算里面分两大部分,一个呢叫离线计算,就是你们前面学的map reduce应该也学了,还有一块呢,就是Spark Spark里面呢,就是像我们实时计算,这是它一个核心,就计算能力很强,实时计算呢,就会用到Spark这个这个技术,那么你可以把它怎么理解呢?它是新一代的内存级的,注意是内存级的大数据的一个计算框架,那么也是我们大数据的一个核心内容。这是它的一个核心内容,那我们在学这个Spark的时候,呃,有一个问题,就是说我们要去看他的语言代码,就你要把Spark学会呢,你学好掌握精通,你就会去看Spark底层是怎么写的。同时呢,你在做大数据开发,你还要还有可能对Spark进行二次开发,那就意味着我们要去看Spark这个框架的源代码,而源代码呢,正是scanner写成的,因此我们要去掌握它,这是呃,一个核心的原因。那么我们来看一看scanner它的一个全称是什么呢?Scal language,这个SC你查一下英文呢,是代表可升级,可攀登的意思,就这个,它的名字就是这样子来的,就是一个简写,看language的一个简写,那么它是一门什么编程语言呢?它是一门多范式的编程语言。问题来了,说老师,什么叫多范式,范式这个概念啊,同学们,范式这个概念呢,简单的讲就是我们编程的一种方式啊,它其实就是我们编程的方式。
03:42
诶,编程的方式,那么重点来说呢,目前用的比较多的哈,一个呢,就是我们所说的面向对象编程啊,当然严格的说面向对象呢,它其实是命令式编程的一种方式啊,还有一种呢,就是函数式编程,对函数式编程,那么在我们这个SC里面呢,它既可以进行面向对象的编程,同时呢,它也引入了。
04:11
加入了这个函数式编程,也就是说他把函数的地位提升了,他把函数当成一等公民来对待,所以说你会看到在SC里面呢,函数运用的非常的到位,它把函数当成一个一等功理,所以说这是它的一个特点。那什么叫函数式编程,里面又包括什么内容呢?后边我会讲到重点来说,有这么几个内容,我先简单说一下,后边我们会详讲。第一个呢,比如说像我们的偏函数,还有像我们的高阶函数,还有呢,把函数当做一个参数进行传递,还有纯函数,还有函数的颗粒化,这些呢都是函数式编程的重点。那么我们在后面呢,都会一一的为大家讲解,对,所以这里面的一个核心就是在看里面呢,它这个函数式编程是它的一个特点,而且呢,引入函数式编程以后,让我们撕开了语言变得非常的强大。
05:08
而且他也提倡递归,他用函数式编程,提倡递归的一种方式的编程,所以效率非常高。还有第三一个呢,我们要简单说一下这个斯anner他是怎么来的,首先我们要提出要给他说一下斯an的一个设计者叫马丁奥德斯基这个人,奥奥德斯基马丁奥斯基这个人,那么这个人呢,他是2001年就开始来设计斯康纳,但是2001年的时候开始设计,没有推出,什么时候正式推出的呢?是零三年底零四年出,也就是说斯Anna这个语言并不是一个好像大家说的很新,好像刚刚出来一样,其实他已经出来时间很早了。他是呃零三年就已经推出来了,为什么说说老师那大他推出这么久,为什么到了现在都1118年了,对吧,什么17年16年我们才感觉到斯SC火起来了呢,其实斯SC火起来的这个原因应该是一六年左右就就很多人就开始在关注SC了。
06:16
那为什么?呃,这么这个它零三年就已经有了,为什么到了一六年才开始兴起,或者说大家才开始关注呢?其根本原因就是这个大数据的兴起,大数据兴起呢,带动了Spark这个框架的兴起,而Spark呢又是是看了编写的,因此它两个相辅相成说大家就开始逐渐的关注SC的语言了,大家在后面学习呢,你会发现SC语言确实是非常有特色的一个语言,我我们也掌握,我们很多同学也听说过个语言,比如说C语言,C加加Java,还有像我们的像这个cup语言,对吧,包括一些构语言等等,这些语言我感觉学完一遍过后呢,其实就是大同小异,大同小异就是语法上做了一些变化,但是你学完卡过后呢,你会发现它真的变化了很多。
07:11
呃,有些特色还是非常有意思的啊,同学们学了过后呢,其实一个是学思看的语言,第二个呢,对我们编程思想,还有我们编程的算法也会有一定的提升,也会有一定的提升,好,所以说我这最后一句话,SPA兴起带动是看了语言的发展,那我这总结五总结了五点,其实。归根到底就一句话,为什么呢?为什么要学看呢?就是为了让我们更好的学习Spark,就这么一句话,好吧,好,同学们呢,这有个基本的认识好的,那么我这做完了过后呢,我把这个板书给大家进行一个简单的板书哈,好,我们说一下这个第一个是开的概述,我们刚才学了一下为什么要学习是吧,就是学习scan的一个原因。
08:01
原因,那么这个原因呢,我统共给他总结了这么有几点对吧,所以老师呢,把它拿过来放这就可以了。好,也非常的简单,对,好这个我就写到这了啊同学们,那嗯,说完这个学习斯看的原因过后呢,我们紧接着来探讨下一个话题,就是SC语言诞生,简单的聊两句,不会,时间不会很长,就三四分钟说一下,那么首先呢,我们要学一个语言,我觉得还是应该对他创始人有一定的知道,对吧。就像我们学Java的时候,我们都知道Java的设计者呢,他是高司令嘛,对吧?但为什么他为什么这么有名气,就是因为他的这个Java语言整出来过后呢,大家都在学习,说他就成为开山祖师了。呃,大家都诶,这怎么来的,来龙去脉,那么说一下盖拉怎么来的,首先我们看一下这个创始人是马丁奥的斯基,就是这个哥们。啊,这个哥们干什么呢?这个哥们很喜欢编程。
09:01
他说老师我们都喜欢编程呢,你们肯定也喜欢编程,所以说你来学的,但是我们编什么呢?诶所说老师我喜欢阿里巴巴,喜欢京东淘宝,那你写的是电商的,电商的这这个这个这个系列的,还有一些同学说我喜欢五八同城,那你可能做的就是这个信息共享网站,还有喜欢说老师我喜喜欢Facebook,那你做的就是SNS,就是社交这系列的,还有些喜欢做这个企业级的,像ERPCRM,诶做的都是偏业务的,那这个哥们很有意思,他喜欢编什么呢?他喜欢写编译器,哦,很有意思,他喜欢写编译器,编译器可可不是一般人能写的啊,那说老师什么叫编译器,同学们应该知道编译器是干什么的呀。他是把我们的源代码。编译或者翻译成机器可以执行的代码是这意思吧?哎,同学们,那么我们知道最接近机器语言的一门语言叫什么语言啊,叫汇编语言,但汇编语言准确的讲呢,他还不是机器语言,他只是说很接近这个了,如果说我们有科班出身的都学过这个汇编。
10:14
那么汇编你看他有些指令,像jump跳转,或者说把一个什么数据压到一个寄存器里面进行计算,它其实已经很机器语言了,但是他还不是机器语言,那这个哥们干什么呢?他就喜欢写编译器,那么我要说出这个人的他是什么呢?我们的JDK的5.0,主流的这个JDK5.0和JDK8.0的这个编编译器啊,这写错了编译器。这个编译器就是这个哥们开发的,那么大家都知道编译器不是他一个人在写,其实也有很多人都在写编译器,但是目前最主流的编译器就是他写的。那有有点意思,说是他这个人很厉害哦,他喜欢写编译器,那么他在写编译器,他为什么喜欢这编译器呢?是这样子的啊,这个这个马丁呢,他这样子的,他在写编译,长时间编程以后,他希望发明一种语言,他喜欢发明一种什么语言呢。
11:15
他希望这门语言高效。简单。就是要高效简单,尽量就是说很简洁。很简洁,比如说我我用一句话,我用一句话能做完的,我不要用两句话。所以说你会发现SC语言呢,就是一句话可能就完成很多很多功能,而我们Java语言,比如说Java语言要完成功能要20行代码,但是我们用SC可能一行代码就搞定了。就这么牛?当然他这个简洁带来的这个直接的效果就是第一个我们维护性,就是我们对代码维护呢,会会少很多工作,第二个呢,同时也对我们阅读代码感觉很清晰,对吧,一个人很简洁嘛,你看这个进来过后长得很简洁对吧,干干净净的,你是不是很喜欢呢?一个人长大胡子拉碴的是吗?刚刚好像是刚刚睡醒,还要了要了点饭吃完过后跟你跟你交流,你是很不喜欢,但是剪接带的结果呢,就是理解起来有点困难。
12:17
说老师这个剪辑了,按道理应该好理解,不一定,有些时候一行写完你都不知道他在写什么。那有些学员他他写了20行,遗憾你你是不是一下就看懂了,但是他一行写完,你阅读起来就特别难,所以说你看后面你会学,在这个过程中,你会发现是看到大量使用了一种什么东西呢,叫递归。它大量使用递归这个东西,递归实际上是比较难的,大家都知道我们有一种有一种编程,有有学计算机有一门,有一门学科叫数据结构,数据结构里面用的大量地位。你们后面学的是大数据的处理,大数据处理其实对算法有一定要求,也就是同学们要在大数据这个领域走得远一点,走的深一点,你们将来都会去学算法,当然是我说的将来啊,不是你现在,你现在还不要去学,因为我们知道大数据,呃应大数据有两个方面的这个发展,一个是大数据应用工程师,大家听过,就是你们将来呢,大部分同学做的是大数据应用工程师,就是拿别人写好的这个算法或者函数来调用,完成一个统计,然后解决这个数据分析、数据挖掘、数据查询,最后把这个结果呈现出来。
13:35
但是还有一个职位,就是一个发展方向呢,就是大数据算法工程师,大数据算法工程师对算法要求比较高,好就是我说到这里,那么他为什么会搞一个这个呢?因为这个哥们他在接触Java语言过后,他对Java非常感兴趣,他很喜欢Java,但是。他觉得这个Java有缺点。说老师这个Java这么牛,怎么还有缺点呢?他是这样子的,他喜欢的是Java能够在网络,他支持网络,而且呢,他喜欢Java的垃圾回收机制,产生极大兴趣,但是他觉得Java不够简洁,他觉得Java语言太啰嗦了。
14:12
老是加班员还啰嗦吗?呃,后面你会觉得在他的眼里面,他觉得贾外语有点啰嗦,就明明一句话可以搞定的,你要用两句话,他觉得很不舒服,于是他就决定做件事情,干件什么活呢?他把函数式编程融入到Java中,因此他发明了两种语言。厉不厉害,说老师我们搞一门语言学都学不会,他还发明语言,他不但发明一门语言,他还发明两门语言,这让人很气愤,对不对,很很很很很难很难受,他整一个语言,它是两个,一门语言呢叫披萨,就是这个吃的这个披萨啊,还有一个呢叫SC,那么这两门语言极大的推动了JA网。编程语言的发展,其实这句话特别不好理解。
15:01
说,老师你写了两门语言,怎么把甲文语言带动起来发展了呢?其实这一点我看了很多这个视频,还有书上没有讲的很清楚,待会呢,老师要把这句话讲清楚,对我们学习卡非常有帮助,那怎么样才能让你理解呢?只有一个办法,就是画一个,画一个那个运行的机制图,我待会儿会画这个图,那个图很重要,我现在待会再画啊,我们先把这个说完。这两门语言导致了Java编程语言的发展,为什么这么讲呢?因为这两门语言其实跟Java能够做到一种融合。他们可以用编辑器,而这个编译器呢,又是他来写的,因此他在去支持这两门语言的同时,也去让Java的语法进行了扩展。大家都知道,我问大家一个问题啊,同学们请思考一个小小的问题,我们在写Java源代码的时候,比如说各位。我写一个非常简单的东西啊,各位同学啊。
16:04
Test,比如说我这有一段Java代码,我这有一段Java代码,OK。那么我把它打开啊,我把它打开,比如我们在写的时候,我们写了一个for。或者说我们写了一个if,我问大家一个问题,你在一个Java。代码里边写了for,写了if,他凭什么就能够。运行,或者凭什么说这个语法就被支持了,请同学们思考。是不是编译器支持了它才可以用啊,诶非常好,同学们这个理解的非常好,那我问大家,如果说我们一个编译器支持了更多的一个语法规则,是不是我们这个语言本身能力或者他就相当于说增强了呀,诶所以说同学们想刚才老师讲了这个哥们他就专门写编译器的,他在写这两个编译器的同时。
17:03
也把这两个编译器支持的语法写到了JDK的5.0和8.0里面去,于是我们的JDK5.0和8.0就增强了,其实就这个原因,那么待会儿呢,我们会看到甚至斯开的编译器能够直接去执行你Java的代码。待会画一个图就行,现在还是有点模糊啊,先听到这第二点,比如说JDK5.0的泛型循环增强、自动类型转换等等,这些都是披萨引入的新特性,再比如说JDK8.0。现在大家一般都用的是8.0对吧,9.0呢,现在虽然推出了,但目前呢,呃,就是在公司里边还没有达到一个主流的一个大量使用的效果,因此呃,咱们学的这个JDK基本就是98.0的吧,你们应该是学的800的,9.0的虽然是推出了,但是还还没有大大面积的使用,因为一个公司,尤其是大型公司,你去放心好了,一般来讲越大的公司,他用的技术相对来说还要滞后一点。
18:09
因为像阿里,像腾讯,像淘,像这个这个京东他们一般不敢去立马尝试最新的,为什么呢。因为要是有漏洞怎么办?对吧,它往往会稍微滞后一点,好,那么你比如像JDK8里面加的那么大,表达式类型推断都是斯看的女入的特性,好了,那最后呢,我们来画一个图,那么我现在呢,给他画一个图,就是斯sc Java和JVM的关系分析图,把这个图说清楚了以后呢,同学们,我们就对Java还有斯SC,还有这个呃,JDM的关系了如指掌了,来同学们画一个图啊,这个图呢,我给大家画一次。
我来说两句