00:00
接下来我们就开始正式学习scla这门语言。首先我们先来做一个入门概述,我们先思考一下为什么要学习SC啊,那在家之前可能学习过Java,可能学过CC,加加掌握了一门编程语言,但是我们知道如果只学习一门语言的话。那其实对于编程这件事情还是不足够了解的,大家的对于编程语言的认识可能是片面的,你都局限在自己掌握的那门语言里边,离了它可能就不会编程了啊,所以一叶障目不见森林嘛。那怎么样能解决这个问题呢?当然就是学习更多的语言,特别是要学习一些有不同特性,有一些新特性的语言。呃,大家在对比做分析的过程当中,就会了解更多关于编程思想的内容,就会对编程语言的理解更加的深刻,这是一方面的内容,那另外一方面更重要的,我们其实是为了后续的学习和应用的目的考虑的,那就必须要提到Spark啊,大家知道Spark是新一代内存级的大数据计算框架。
01:08
可以说是我们进行大数据学习,也是未来做大数据工作的最为重要的框架和最主要的内容,那么Spark的底层它就是用LA编写的,所以为了更好的学习Spark,为了更好的从事大数据相关的工作,我们就必须要掌握SC这门语言。可以说Spark的兴起,或者说是整个大数据行业的。兴起,带动了kla语言的发展啊,那我们接下来给大家讲一讲skla的发展历史,说到sla啊,那其实就必须要提一个人,就是传说中的斯盖拉之父马丁奥德斯基啊,他是瑞瑞士洛桑联邦理工学院的教授啊,他本来其实就是Java编译器,大家知道Java编译器是Java c,马丁奥的斯基本来就是Java c的开发者啊,那同时呢,他又是一个函数式编程语言的爱好者,马丁奥德斯基这个人可以说是一位编程大神了啊,他当年受邀曾经给扎瓦斯写过一个新的版本啊,当时那个版本叫做Java generics啊,就是他。
02:19
把这个版本里边其实是引入了泛型的这样一个概念,那这个。版本的编译器发现啊,他自己一个人写出来的,比丧公司整个团队编写出来的更加稳定,而且还更易于维护,所以可以说是一个人虐了一个团队啊啊,绝对是大神级别的程序员啊,所以从1.3开始啊,Java c编译器就都沿用了马丁奥德斯基写的这个抓va c编译器啊,这是关于这个他跟Java开发Java编译器开发的一些小故事,那么马里奥德斯基其实是一直在JVM平台上工作的,那他其实对Java这门语言是非常热爱,非常喜欢这门语言的,因为大家知道Java这门语言它的一植性是非常好的啊,它有一个口号叫compare ones run everywhere对吧,那就或者叫right ones run everywhere,就是一似编写,到处运行,它跟平台是无关的,它基于GVM去工作,那另外呢,Java还有一个非常好的特点,就是非。
03:25
非常方便的,可以在网络当中去做应用啊,大家也知道互联网时代的兴起啊,对于Java的发展有很大的推动作用,那另外呢,Java还有一个特点就是有垃圾回收机制,它的这个GJC,这是一个非常重要的特点,如果有同学之前是学CC加加,从C加C加加那边迁移过来的话,那肯定对这方面是。深有体会啊,大家可能知道你在写C程序的时候,那必须程序员手动去维护内存管理,对吧?就做这个内存管理,你要声明变量分配了内存之后,后面要手动进行回收,如果你忘记的话,那很有可能运行之后就会导致内存泄露啊。所以这个问题。
04:11
当时其实困扰了很多程序员。在Java里边有了垃圾回收机制,这个就不再是问题了,程序员就可以专注于业务逻辑的实现了,所以这一个这一点其实是,呃,对于程序员来讲非常的友好,是解放生产力的一个很大的改进,所以马丁奥斯基认为Java很好,但是呢,Java还不足够好,因为一门真正好的编程语言应该有一个特点,就是非常简洁高效,它应该让程序员使用起来非常的方便,而且是。非常容易就能上手,就能够把很复杂的功能的代码能写出来,那在这一点上,Java因为它很多语法是源自CC加加的,所以其实上手还是有一些难度,其实语法是有一些繁琐的。另外Java。
05:04
号称是一个面对对象的语言,大家知道,但是呢,它的面对对象这个oo的特性其实是并不彻底的,因为在Java里边有八大基本数据类型,然后呢,对应的又有它的包装类型啊,啊,大家可能知道包装类型它的其实都是既成自object类的,但是呢,呃,基本数据类型是不包含在这个体系里的,所以这这完全就不是一套系统嘛,基本数据类型在这种意义上,它其实就不是一个面对对象的一个实现啊,所以这其实还是跟Java一开始的发展啊,基于C那一套体系发展的一些历史问题,所以马丁奥德斯基就想,呃,Java还是有一些缺点的,他希望对Java做一些改进,把它变得更加好用,变得更加的面对对象,而且另外呢,他还考虑到其他的一个一个改进,就是对于一些更加复杂的高端应用,Java其实本身对对于这方面的支持是。
06:04
不够的,呃,像这个CC加加的话,其实大家可能了解有一些关于函数指针相关的一些概念,但是呢,那些东西就特别的繁琐,特别的麻烦,那如果说我想要实现对应的那些功能,怎么样能让程序员用更好的方式,更容易理解的方式实现呢?哎,马德马丁奥德斯基,他找答案就发现了函数式编程语言可以解决这个问题啊,他同时又是函数式编程语言的爱好者嘛,所以呢,接下来他的想法就是希望首先我要基于Java去做开发,我还是想要Java的那些JC啊,呃,拥有GC可移植性好啊,方便网络应用这样的一些特性,所以呢,他希望直接在GVM平台上去开发另外一门语言,那么希望开发的这门语言呢,是一个完全面对对象的,而且非常容易上手,语法非常简洁的。
07:02
还要引入函数式编程语言特性的这样一门语言啊,基于这样的想法呢,他就在1996年的时候开发了自己的第一个语言,叫做披萨啊,就是我们吃的披萨饼的那个披萨,这披萨这个语言的最大的特点主要就是引入了泛型,就所谓的genes,把genes引入到了gbm上。所以呃,之前我们不是说过马丁奥德斯基他自己开发的Java genes那个版本的。Java编译器直接虐了一个团队嘛,啊,那那个编译器最重要的特点其实就是引入了泛型啊,所以其实是他先开发了披萨这门语言,然后在Java1.5这个版本里边会发现,诶,这个特性非常的好,所以之后呢,Java也引入了泛型,那么接接下来这个马尼奥德斯基就就为这个Java1.5开发了对应的Java gene这样一个编译器啊,这就是整个这个故事发展的这个过程,那当然了,披萨更多的是一个实验性质的语言,它没有完全推广开来。
08:13
真正火随着大数据的兴起而火爆的这个语言啊,是他之后在2001年开发出的scla啊,那么呃,Scla这门语言,它的主体呢,也是基于GVM的,大家可以认为它是基于Java的,同时呢,它又引入了函数式编程的思想,所以它的最重要的特点其实是引入了类型推断和拉拉姆达表达式啊,所以它在Java的基础上就增加了更多的更灵活的一些高级特性,而这些特性在Java1.8的时候也引入到了Java里边啊,所以大家其实会发现编程语言的发展过程就是这样啊,我们可以看到披萨和斯盖va,这是马丁奥德斯基基于Java或者说基于JVM平台,结合函数式编程语言特性发展出的语言,开发出的语言,然后呢,这些很好的这些语言特性之后又反哺回了Java啊,就是引入到了Java1.5和Java一点。
09:13
阿里所以整个不同的这个编程语言都是在不停的融合,不停的借鉴,循环,螺旋式上升啊这样的一个发展过程。
我来说两句