00:00
这个学生现在学的技术相当的牛啊,学的这个这个学生的技术相当相当好,是我见过的技术比较好的学生之一,这个高中都没上完。他就混社会了,年纪很小,现在也就21岁,22岁的样子。这个小伙子干什么呢?他因为高中没学完,因为他家里面那个老爸老妈经常打架。就就就家庭不和谐,你们家庭都很和谐吧,啊这还好,有些家庭不和谐,他都年轻,他那个高中都不上了,因为天天老爸老妈天天打架,离婚扯经这些,他就他就混社会去了,他跟我讲,他甚至有时候在那个桥那个就是那个桥下面那个那个过过一一周时间没没有收没也没有钱,他不不愿意问家里面要钱,就出去闯荡社会去了,后面。打工还是那个洗碗啊,刷盘这些挣了点钱,到了一个。在我们现在这个就是网上大家都知道一个机构去学习没学懂啊,彻底想放弃了,那这个名字我就不说了啊,现在现在很多不还有些不靠谱的,呃,你们也知道啊,去完了过后他干什么呢?他他交了不少钱呢,那个时候交了一将近小2万。
01:15
小2万去学,学完了过后他就没学懂,因为他基础太差了,虽然很聪明,但是他高中没学习。后面他怎么办,说他这个,他这个后面干什么事呢。他就不想学了,不想学了,他说他亲自跟我说的,然后他在网上就搜视频,搜到了韩老师的PHP视频。他看完了过后。他觉得看懂了。看懂了过后,他就在他就在广州这边找找工作,找工作已经拿到一万五一个月了,人家那个工资公司还给他拿股份。啊,配的是非常高端的笔记本,后边他听到我看太久程序员了,毅然决然的把工作辞掉,好又来学习一遍,他说我要把欠你的钱还给,还给我有些哥们,至于说老韩,我把欠你的钱还给你,那么我的意思就是说,咱们当老师呢,就是最重要的一个能力,包括你们学生,你们将来干什么呢?在工作里面,你们要最重要的一个能力就是解决老板的问题,你把老板的问题搞定了,老板就会把你的问题搞定。
02:18
你的问题不就是这个玩意儿吗?对吧,人家会给你搞定的,那你不搞定老板的问题,那老板就直接搞定你。让你gameover对不对?所以说我们任何一个人呢,就是你在以后工作中,你要解决你核心的问题,老师就是要把这个东西很轻松很一热的告诉你们快速学习,那么老师要想办法,比如刚才我我讲了我的授课思路,一般网上都不会这样讲,他上来过后就把函数全部扔给你。那扔给你,完了再去,有没人你突然发现。很模糊这个事数,所以我要拆解,你们将来参加工作以后,你就要全心全意为老板服务,你至少在工作期间,你就要想办法把老板的问题解决好了。解决好了第一个你的能力会提升很多,第二个即使老板要有些同学、老师,我把老板的问题搞定了,老板不搞定我的问题怎么办呢?没关系,你的能力提升了。
03:12
你的能力提升了,你到社会上去。你会突然发现你非常受欢迎。你看网上有些啊,动不动说啊,这个这样这样不好,那样不好,我我说社会肯定有些这个,呃,时机啊,规律的问题,包括这个行情有涨有跌,但是咱们自己要想一想,我们解决问题没有好的,这是老师给大家尽量普及一些正能量啊,那第二个我们现在讲函数式编程的介绍,我们直接切到这里。那么函数式编程里面有几个比较重要的概念,我先要给大家聊清楚,否则你在听课的时候呢会很晕。我先说这几个概念,方法是戛纳的方法是什么?Scale里面的函数是什么?SC的函数式编程又是什么?面向对象编程又是什么?注意啊,函数和函数式编程是两个概念。
04:08
就好像对象和面向对象编程是两个概念一样,很多人容易把它混起来,那一旦混起来你就听不懂了,那么我先说了几句话,这些语言呢,都是老师的一个总结,就是我在学习过程中的一个总结,那么我们来分享一下第一个。在干中,方法和函数几乎可以等同,注意听我这里写了两个字,几乎,那就说也还是有些差别。但是几乎可以等同,就意味着它们的什么是相同的呢?它们这个定义的这个流程使用运行的机制,它底层的这个运行机制机都是一样的。那么函数和方法它区别又在哪里呢?我是这样想的啊,只是函数的使用方式更加的灵活。
05:00
那么方法也可以很轻松的转换成函数,同学们,我给大家写一段代码,希望大家能够领会,OK,就说方法和函数它是什么一个关系呢?打开我现在老师就要借助于一个简单的一个示意图来给大家说一下这个东西。好的同学们,那么我是这么去想这个事情的,说这是我们的SC编程的一个范畴,注意听。写到这里来,我现在聊的话题啊,干的这个方法。方法和函数的一个关系。那么怎么来说这个方法呢?方法同学们都知道,你们肯定前面学加法的时候,你们学过全部都是方法,那么它是假如我,诶,假如这个地方是我的一个方法。我插出一个。
06:01
Not to you。我画一个小的方块儿。画一个小的方块,给它一个颜色,说这个地方我们写了一个方法。OK,那么写完这个方法,它跟函数是什么关系呢?叫做这是一个函数方法,可以可以很轻松的转换成这个函数,那怎么转呢?来,我给大家写一段代码。我给大家写一段代码来吧,打开我们的这一个。呃,Idea我新建一个章节,注意听。OK chapter05啊。零五,那现在呢,我先给大家聊的是函数和方法之间的一个关系好不好?首先我先说了啊,函数和方法几乎可以等同,因为他们的这个定义使用和运行机制几乎是都都是一样的,那么我们来聊两句。来写一段代码来测试一下他们的关系,注意听讲。那么我先写一个方法,方法呢,确实有个专业的术语,一般来讲呢,方法的英文对应的是这个单词叫method。
07:11
啊,这个同学们肯定都听过,函数对应的这个英文单词呢,叫function,对不对,Function这个大家应该是清晰的,好清晰的这两者的关系呢,我分别来举一个例子。Method med,好,然后呢,我们再写一个,这个叫做two啊,他们之间的关系嘛,就是function,来走一个吧,同学们。来一个object。所听。好,我们先来看它们之间的,先写一个方法,先写一个方法,这个呢是同学们最熟悉的了,DEF,那我写一个方法,比如说叫什么呢?叫做求和吧,求两个数的和sum n 1T。N2T,然后呢,我让它返回一个int。
08:06
OK。非常的简单。那这里面呢,我让它返回一个N,就N1加N2,因为它表达式的最后一步就是返回这个值写完了,那么我们怎么去用呢?大家看啊,我们再举一个更更直接一点的,可能大家更喜欢这种写法,就假设里面一个。那那里面有个大家肯定更觉得这个是一个方法啊,可能大家觉得这个更更合理,其实刚才写的这个方法是包到这个里面去了而已,对吧,只是呢,大家以前见过的呢,都是在一个拉里面写的一个方法嘛,一般是这样子的是不是啊,肯定是这样子的,更更符合你们以前的那个那个思维嘛,因为你们以前写的像写了很多类啊,然后里面放的是这个public个什么什么嘛,那这样写呃更合理,好,那我现在开始写方法就写完了,那么我们来使用一下方法,那使用方法呢,一般来说你们是这样使用的。
09:01
怎么使用呢?先创建一个对象是这样是吧?啊先创建这是肯定嘛,感情的自然流露嘛,对不对,你看写到这里自然就到这个位置了,来来,我创建一只狗,那这个狗呢,你用它当然是很easy的事情,比如说print dog,点我们的上给他传一个十,传一个20是不是就完事了呀,好,我运行一下。哦,同学们可以看到。好,这个是我们最传统的写法,就完事了。那么这个方法它怎么去转成一个函数呢?啊,方法转成函数是非常轻松的一件事情,他们可以做到一个无缝的转换,就是无缝接轨,那怎么转呢?比如说我现在写了一个VL f1等于怎么写呢?就是我们这面写的就是DOGDOG点我们的上,然后里面不要写东西,然后呢下划线。
10:00
哦,这样子呢,就完事了。那就说同事这个你没有干什么事情呢,同学们看啊,我给你们打出来一下F1,等于加上一个F1,好同学们,我们运行一把,我们运行把,这个时候呢,你会看到F1的类型就是一个function。啊,就是方向,那你又怎么用它呢?又怎么用它,你你看这个几乎几乎就是一个下划线就解决事儿了。那怎么用它呢?非常简单,使用方法也很简单,就是这样子的,那怎么写呢,就是我们写个F1。就是我们来调查一下。加上F1一样,你传两个数进去,比如说五十六十好这样子呢,我们一运行,你会看到这个结果呢,就出来了,诶它就是幺幺,诶这个等于等于啊少了一个等号。少了一个等号呢,看起来怪怪的。我们写一个叫。F1就是110,你看这个就没什么区别的,没有什么区别,但是你要说没有区别呢,它也有一点区别。
11:07
啊,如果说你一定要这么说,说老师,我就一定要去专门定义一个,就直接写一个方法他也可以,他也支持,只是呢,这个形式它是这样写的,比如说这样子啊,我们写一个函数啊,写一个函数,我们这样写它也是支持,怎么写呢?来我们看一下,一定要去直接写一个函数,它也是支持的,那怎么写呢?这样子的,比如说我写个VL2。等于我直接来写一个函数了,那写成什么呢?好,前面呢,写上它的这个类型,我们求两,现在假说是求两个数的,求两个数的什么呢?呃,这个还是求两个数的和吧,还是这样,这样对比就可以了,还是求两个数的和,但是呢,我直接去搞了一个函数,怎么写呢?来走一个,那就是in。Int int。
12:02
然后咱们一个这样的符号啊,这样的符号,然后这边呢,写上你这个要传进去的这个值,就是返回两个数嘛,对吧,返回两个数这边呢,我们就可以这样去写了,非常简单,你看啊,我这写一个非常简单,我就直接拿过来给他用就完事了,很简单,那你看我把这个拿过来。往这一放,你看这个有什么变化,仍然是传入了两个值,就是我们所谓的行参,但是呢,这个等号呢,哎,你原先写的是这种等号,你就不要再写等号了,用的是这种符号,这边就是相当于说是我们写的函数题。啊,这边是相对于是我们的函数题。函数体。那这样子呢,相当于把这个函数给到了我们这个F2。F2,然后呢,这个时候我们来输出F2是什么。那走一个F2。F2等于加上它的类型,你看这个是一样的,本质是一样的,你注意看这个F2跟上面这个F1这个进行比较,你会发现完全一样啊,完全一样,那么我们执行一下。
13:14
哎,我们执行一下,你看这个地方打出的是什么呢?FUNCTION2,这个二呢,就代表有两个行三的穿入,如果是三个呢,就是FUNCTION3,以此类推,那怎么用呢,也是一样的用法。我把这个调过来。我把这个调过来,所以说我写个F2,比如说我再传一个值进去啊,嗯,改一个吧,五和六,五和六再执行一下F2,对同学们写说的很对啊,F2走一个。好,往这走一个,然后这边呢,我会发现他返回了一个11啊,就这么简单,所以说我说了一句话啊,同学们注意听,几乎可以等同。啊,他们的使用运行机制定义就没什么差别,所以在底层我们看任何一样东西呢,不要去看这个形式,主要看它的本质,本质都是一样的。
14:05
所以我这说了几乎一样,但是你要说也有不一样的地方,也有比如像这个对吧,你还是要转一下的嘛。这是第一个要给大家分析的,它们之间的关系是函数的这么一个关系,大家看到的啊,函数的使用方式更加灵活。更加灵活。好,这是他们两者的一个简单的关系的一个描述,区别有,但是几乎是这个可以等同的,第二个呢,要跟大家聊的是这个话题。函数式编程是什么?函数式编程又是什么东西呢?好,同学们注意听,函数式编程呢,它是从编程这个方式的这个角度来谈的。就是这个,它是这个编程的方式来谈这个话题的,可以这样理解,函数式编程是把函数当做一等公民。什么叫一等公民呢?就是有点类似于我们面向对象里面的,你是把对象当做了一个最根本的一个编程单位。
15:08
对不对,那你面向对象里面,你的对象就是一等公名,在那函数式编程里面呢,它这个函数就是一等公名,但是我要告诉大家,很多编程语言里面,函数本质也是一个对象。说说说到底,归根结底。没啥区别,只是形式上的变化,你想想这个马大爷对吧,马丁奥的斯基他能搞一个什么东西出来嘛,他搞的东西其实主要一个是代码的优化,第二个是编程效率的提升,底层的东西大家都不会去动。从C语言C加加Java干底层的这个函数的运行机制或叫方法运行机制根本没有发生变化,因为计算机从它诞生的那一天开始是谁搞出来的?冯洛伊曼这个哥们吗?对不对,他已经把这个计算机的这个运底层运行的机制都已经告诉你,就这么,就这么玩,你玩不了新花样,就好像一个人生下来。
16:07
人可以变得很聪明,也可以变得很傻,但是你能改变你的大脑的一个结构吗?你改变不了,你改了变成你改成鸟的大脑,你你就变成鸟了,对不对?你看人的大脑有大脑,有小脑,有脑干部分,这个是没法变化,计算机在这它就像组成的,它底层有我们的这个寄存器,有CPU。有,我们这个叫做这应用程序的一个地址空间,这些你是改不了的,所以大家都得遵守,只是形式上的变化。再说一遍,大家学东西不要。枕头好像诶来了个新东西,不是本质没有什么太大的变化。好了,那么。函数是把函数当做一等共民,他要干什么事情呢?他要充分的利用这个函数,支持函数的多种使用方式,注意听这句话,函数是变成,主要是让函数的这个调用的形式发生了更更加的这个这个灵活。
17:03
更加灵活,那么这样呢就能充分发挥函数的作用。话,他就是干这个事情的。好,我在这写一句话,在SC中,函数是一等公民,像变量一样,既可以作为函数的参数使用,也可以将函数赋给一个变量,函数的创建不再依赖于内核对象。你看在加入中函数的创建,比如方法分创建,它要依赖于内核对象,现在呢,不依不依赖了,我直接写,我直接可以直接写,就这样子的,好接着往下看。第三个面向对象编程是以对象为基础的编程方式,对吧?那么而函数式编程呢,它是面向。对象编程中融合了函数式编程是这样一个流程,这样一个流程,所以说大家呢,要理解一下它的这个执行的一个东西,好,我们现在简单说一下方法。函数,还有函数式编程以及面向对象编程的这么几个关系,我们就先聊到这里,好,我把这给大家板述一下。
18:10
好,写到这吧。阐述一下第一个函数式编程,我们来一个标题二,诶,来一个标题二。然后呢,往这儿一放,说了什么东西呢,它的几个概念。啊,几个概念我聊了一下。诶,这个放到这儿。当然我说了几个概念。第一个概念。对吧,我说的第一个概念,第一个概念呢,重点就是说了一下这个方法。方法和函数的一个关系,那么我把代码给大家整理到这边来。刚才呢,我们写了一段代码,大家体验了它的一个呃之间的关系,来写到这里来。第二个第三个在这里使用多种方式啊。
19:04
编程实时使用多多个方式。第三个面向对象。是以对象为基础,那么到了SC函数式编程呢,它将两者融合在一起啊,融合在一起好,这是我们讲的这个关系的一个说明,那么这样讲完了过后呢,大家可能还是有点不明白说。说老师这个方法和函数。本质没有什么区别,那么他为什么要取两个名字呢?就是为什么要把方法叫方法,要把函数叫函数呢?它为什么这样去设计这两个概念呢?我是这样给大家举个例子啊,我给家举个例子,大家看看能不能更清晰的理解它的之间的关系。比如说现在呢,有这么一个情况,这。有一个人,比如说是韩老师。啊,韩老师。
20:00
那么韩老师呢,当然就是一个人了,对吧,我就是一个具体的一个人,然后呢,我在不同的情况下,我的这个称呼就会发生变化,比如说我给同学们在讲课,比如在课堂上。课堂上我给你们讲课,当我在课堂上的时候呢,诶如果韩老师到了课堂,你们呢,就会,诶认为韩老师是干什么呢,我的这个地位,我的地位,我就是一名老师。啊,我就是老师,说到这地方呢,最好不叫韩老师,叫,比如叫韩顺平。对吧,这是一个人,那么到课堂上我的称呼就是老师,因为我给你们讲课,所以你们就会叫诶韩老师,那如果说我的这个运用的空间,或者我所处处在的一个范围变化了,我在里面去呢,我到回家了,我在家里边。
21:02
家中我在家中呢,同样我也要去在这个家里面干自己该干的事,对吧?好,这时呢,比如说家里面我给小孩辅导作业,或者对对我的小孩来说呢,人家就不会叫我老师了,诶他叫我什么呢?他叫我老爸对吧,他叫我老爸。诶,你看我还是我,那么我在不同的这个应用场景,我的称呼就发生变化。那你你看我在课堂上,你们就叫老师,在家里面呢,孩子叫老爸,就这么一个关系,那我们来比较这个函数和这个方法的关系,我们就可以这样打一个比较。那么不管是方法还是函数都是干什么呢?都是都是为了就是有一段功能完什么,一段一段这个代码。它是一段代码。一段这个代码,这个代码我不管你是干什么事,你的这一段代码其实就是为为了完成一件事情是吧,完成什么呢?就是为了完成一段功能,完成某个功能。
22:09
完成某个功能,完成某个功能,那这这段代码它都是为了完成功能,如果我们使用到了oop编程这个范围,范畴就opop。这个编程。就是我们在op这个编程这个范畴呢,我们就一般把这一段代码这个功能完成,这段功能代码呢,我们把它叫做什么呢?把它叫做方法。诶,你看刚才同学们,你看刚才我们在调这个dog的时候呢,这个some你看这样用。诶,这样用了,我们就把它叫方法。视叫方法吧,好,当我把它转了一下,我用到了函数式编程里面去,比如说我把这个当做一个参数传给一个高阶函数,那这个时候范畴的发生变化了,它的编程方式变成变化了,我们不是讲过吗?它既支持面向对象,还支持函数式编程,对不对,那这个时候它就变成了函数式编程,比如说叫。
23:12
函数式函数式编程。在这个地方,如果它用到了函数式编程,在这个范畴,那干什么呢?我们就把这段代码,我们就把它称之为函数本质,有变化吗?没有变化,但你说你一点变化没有,也还是有点。那时候毕竟还是有点变化,但是变化这个本质是没有变化的。就好像韩老师。在课堂上我还是我,只是我对你们而言,我就给你们讲课,对吧,在家里面我要干其他事情,你这个代码就看你怎么用。这个,那么你要用到op,我们就方法你要用到函,函数编程,我们叫函数本质没有变化,好这就是他们之间的一个简单关系的一个说明,好同学们,我把这个呢给大家再写到这里来了。
24:03
好,这是一个关系,一个说明,这块呢比较重要,所以说我稍微多啰嗦了几句。往这儿写一下。好,我把它呢,给它来一个标题三。把这个图我给同学们也板书过来。对吧,把这个图我也给同学们板书过来了解。好,非常的简单。并不难,并不难,就看你的理解,技术就在于理解,你这样理解,那样理解,只要理解通了就行。好,这个说完了以后呢,下边呢,我们就来正式进入到函数式编程的一个一个快速的讲解,好来截取一段视频。
我来说两句