00:00
同学们,现在呢,我们打开这个今天要讲的内容,今天呢,我们要讲两章的内容啊,今天我们要讲两章的内容,哪两章的内容呢?第一章就是函数式编程的一个基础部分,给大家讲一下,第二章呢,要给他讲一下面向对象编程的基础部分,今天是两章的内容,好打开它。那么我们先来看一下第一部分内容,函数式编程的基础,OK,那现在呢,我们先来把这个新开一个章节,好往下走。好,往下走。来吧,新开一个章节。分页走到这里,好的,那给他来一个标题一,给他来一个标题一。好,我们来看看我们讲什么内容啊,各位往这边挪一挪。往这边挪一挪,我们来看一下函数式编程的基础部分。好,首先呢,我在这地方要给大家简单说一下,呃,给大家沟通一下,就是这个上课的一个顺序问题啊,顺序的问题,首先我们来看一下函数式编程的内容,然后呢,我再给同学说一下我讲课的一个顺序。
01:15
因为有时候呢,讲师也要把自己讲课的一个方法,那个顺序给他沟通一下,大家可能就会理解为什么这么去讲啊,从而呢,提高我们听课的效率,首先我给大家说一下我们函数式编程的内容呢。主要是这么两个部分,一个部分呢叫基础,第二个部分呢,我们叫高级,其实这一块都不难。啊,贵都不能。那么基础部分呢,我们重点说一下函数的定义,声明函数的运行机制,递归过程,惰性函数和异常的处理啊,为什么?因为异常这门处理的时候呢,它也是用到了相关的函数,或者是叫方法。
02:00
那么另外一个部分呢,就是我们函数是编程的高级部分,那高级部分呢,诶有要讲哪些呢?一个就是要讲一下值函数,高阶函数,B包应用函数。呃,还有颗粒化函数也叫函数颗粒化啊,这边呢,也叫还有一个叫抽象控制,这是我们两个部分,那这里要强调一下这个递归的作用啊,我要单独的对递归拿出来多聊两句。嗯,在cana的这个设计者呃眼里面呢,他认为地归是一个很好的东西,所以说他非常的推,非常的这个推荐,我叫推崇什么呢,他推荐大家。啊,推荐。推荐这个编程者,编程者使用。使用什么呢,递归。他使用递归。递归啊递归,来解决问题。来解决问题,当然底层当你用一个递归做完了以后呢,它的底层仍然会进行优化。
03:07
说在SKY里面的这个递归的效率呢,并不会受到影响,后面我们会单独的说这个事,那递归能解决什么问题呢?它能解决的问题很多,你比如说它是算法的基础。啊,它是算法的基础,你比如说同学们,呃,像遇到的像这个邮差问题。邮差问题。最短路径问最短路径最短路径问题。啊,还有像这个非拉线是个应用啊,那个那是应用,还有像背包问题。背包,那有些同学可能是听过像背包问题还有什么问题呢,就是我们说的迷宫啊,迷宫问题,迷宫迷宫,其实他这主要是谈了一个回溯。啊,回溯。包括你们只要涉及到一些相对。就是只要涉及到什么呢?只要涉及到这个算法,或者涉及到一些实际应用的问题呢,递归都必不可少,同学们,你们以前有些同学应该学过,像这种二叉树,广义表,还有散列等等等等。
04:11
那么这里面呢,就大量用到了递归,因为从编程者的眼里来说呢,所有的东西几乎都可以用递归来解决,因为在他在所有的在他这个设计者眼里呢,我们现实生活的问题,其实都是不停的重复,重复在重复。只是这个重复和重复的这个规律,你怎么能找得到?这是一个很关键的,比如说同学们看看这个,这个是一个,就是那个有一个问题特别经典的叫汉洛塔,大家应该听过,汉洛塔呢,就是有五层,有五,他给你几个盘子,有三个柱子,把它移动到由A移动到C。对吧,那么如果一个人来说,他用。给五个盘子,你肯定是能够绕过来的,但是要给你64个盘子。
05:00
你人基本基本就解决不了了。但是他的逻辑呢,都是一样的。是吧,所以说递归呢,能够解决很多问题,那同学们呢,要把递归好好的了解和学习一下,这是韩老师给大家的一个忠告,忠告那递归这个类这个东西呢,理论上说在Java应该给你们讲过,是不是都讲过,但是你理解到什么层面不知道。不知道,因为递归,你们当时可能最多也就写了一个非波拉契吧。还写过什么呀?没写过什么了,就写个非布拉气吧。啊,非波拉器可能好多东西还没理解,就那个,就那个就那个,但是地归能解决的问题特别的多啊,如果说你现在,你现在后面去看一些数据结构,或者看学算法,你发现递归无处不在,无处不在那怎么办呢?那有些同学说是递归我我现在学的不太好,怎么办呢?也不要着急,也不要恐慌,老师呢,会在这个,我到时间会把这个递归再给大家再简单的说一下,因为我毕竟这是讲,呃SC递归呢,我顺带给再提一提他的一个一个思路是什么样子的,尤其这边最麻烦是什么地方呢?就是我们现在你们用到递归一般就是函数内部掉了一次而已。
06:14
就是就是A函数里面调A函数只调了一次,但实际上呢,它有可能A函数。掉了多次这个A函数,这个就比较麻烦了,像那个最经典的是迷宫问题。而且在递归的时候呢,看哪个函数先找到这个。对对,然后A里面它可能再掉一次,你看那个最经典的像红黑素。对吧,你们学的那些像像二叉树这些,他用到地柜,那这个呢,我们到时间给大家补一补啊,但是把机制搞清楚就好慢了,这第一个第二个呢,过程,过程这个就很简单,惰性函数,惰性函数也是你们后后面用的比较多,还有一个异常处理机制,那么在SC里面呢,它的异常处理机制跟Java类似,但有区别,好这是基础部分,这是高级部分。
07:02
那么说完这个内容以后呢,我再给大家说一下我讲课的一个顺序,进行一个简单的沟通,那么同学们看到我这里说一下函数式编程的一个授课顺序。同学们先来跟老师。动啊,各位老师来想一想,首先我要说的第一句话是,在SC中,函数式编程和面向对象编程呢,它本身是融合在一起的。呃,这是为什么呢?因为大家都知道这个函数式编程是怎么来的,它原先是由Java来为根基来做的,Java它是一个oop的东西。它是op的东西,只是我们的设计者。这个马丁,奥德斯基。他干什么呢?觉得opop呢,虽然很好,但是他更想融入一个函数式的这个东西融进去,也就说他想把函数融入到这个o op里面去,所以说他相当于是中间插了一杠子。
08:04
那一旦是插了一杠子,就出现一个什么情况呢?就会出现这么一个,我画的一个图的情况,就是面向对象里边。它拥有函数式编程的内容,反过来呢,函数式编程里面呢,也会有面向对象编程的影子,这样就会造成当你讲函数编程的时候,突然会用到op,反过来你要讲面向对象的时候呢,他又用到函数的东西,这就很麻烦,那我怎么办呢?这是一个矛盾。啊,我的讲课这样子的,我们先把这个大家他们都共用的部分讲出来,就是大家你面向对象会用到的地方。对,我先把这一份公用部分讲完,讲完过后再把面向对象搞定,然后再去讲函数式编程,这样子呢,大家这个接收起来就比较。轻松而又就是说感觉很顺畅,就不会说突然突然讲到面对对象的时候,突然跑了一个函数的东西,大家感觉到很陌生。
09:03
所以我的那个。思路就是先拿中间这块共有的部分拿出来再讲,面向对象再讲,很舒适。好这是我跟他沟通的一个授课的顺序,好授课的顺序,那么我先把这个我的一个内容和顺序给大家聊到这里。好,我先截取一段,OK。好的。我来走一个OK,那刚才我们讲的是什么呢?说了一下,老师给他介绍了一下函数式编程的一个内容。OK。这是我们讲的第一个基础部分。基础部分呢,大概有这么些内容啊,就是把这些共用的部分给它少了,你不然的话突然出现一个过程,或者多性函数,你不知道是怎么来的,或者突然出现一个异常,对吧,一般怎么来的,那么函数是高级部分呢,我要讲的就是这么一些内容。啊,OK。
10:02
高阶函数B包,B包应用函数,还有函数的颗粒化以及抽象控制。第二个呢,我跟同学们聊了一下我的一个授课的一个顺序和他的原因。啊,就是为什么咱们要这么去设计这个课程,聊了一下,OK。好,然后呢,这个地方我们讲了这么几点,第一点因为它本身就是一个融合的关系啊,融合与关系,第二个呢,我讲了一下这个。这个关系示意图。就是他们关系示意图,第三个呢,我说了一下授课的顺序怎么样的呢?先这样讲的对吧,先讲基础。记住,讲完我们讲面向对象,面向对象讲完我们讲高级是这样一个流程,我把这个图呢也给同学们拿过来。好的,这是我的一个思路。站到这里。好,往上面提一提。
11:02
好,先截取一段视频。
我来说两句