为什么不要直接教孩子1+1=2?

我记得我上小学的时候,看到过一个妈妈,特别自豪地让我们一群小学生甚至大人问她孩子1+1等于几这个问题。每次她孩子都能够答对。妈妈脸上特有满足感。其实,那时候我就挺想给那个孩子一个鸡蛋接着再给一个,问问,这时候他有几个鸡蛋。这么说起来,我这么小的时候,都这么反叛,有意思。

其实,不没有搞懂“1”表示什么的时候,“加”又表示什么的时候,孩子是完全依靠刺激反应来学会的,也就是说强行记住了,而且还不一定是大脑的记忆,可能是身体或者动作的记忆,就跟受过训练的猴子和小狗一样。

那么,你愿意把孩子培养成受过训练的猴子或者小狗吗?

其实,数字,远远比你看到的1,2,3,4,5,6,7,8,9,0(或者10)深刻。数字是有很多个层次的含义的。每一层含义都绝对我们能够对这些数字做什么,它们又能够用来描述什么。

数字的第一层含义是符号。也就是每一个标了不同的这十个(暂时限制咱们自己在这十个之内)数字的对象,例如十个编了号的苹果、老师上课的时候讲稿里面用的第一二三四点、老师布置的作业第一二三四题,等等。这个时候,我们仅仅表示,这是标号为几的那个对象。在数学语言上,这十个数字构成的是一个集合{0,1,2,3,4,5,6,7,8,9},就是表示有十个东西的意思,也可以写成{1,2,0,3,4,5,7,6,8,9},没有顺序。

数字的第二层含义是序数。也就是它们不仅仅代表了不一样的东西,还表示这些东西之间存在这某种内在顺序关系。例如,有的时候,作业题是有顺序的,逐渐变难之类的。有的时候,老师讲稿上标注的重点也是有逻辑上的顺序的,大概来说,第一点需要放在第五点之前来讲。但是,很有可能,其实不完全这样。例如,三四两题打乱了做、三四两点混起来讲,都问题不大。用数学的语言来讲,这个顺序是在上面的集合上,添加了一个称为“序”的映射:给定任何一对这个集合的元素,例如(1,2),这个映射会把(1,2)变成1或者-1(为了描述简单,先忽略相同的情形)。这个映射就是(a.GT.b:1,-1),也a、b之间存在这一个叫做GT的关系(得到-1的时候),或者反GT的关系(得到-1的时候)。还原称日常生活的语言,GT就是大于关系。这时候,我们就有了第几个的概念了。注意,到底有还是没有这个映射是由数字所代表的东西决定的:如果是我的讲稿上的重点一二三四,通常没有这样的顺序关系,因为我很少按照顺序讲,也很少按照某种逻辑顺序来编号。

数字的第三层含义是基数。也就是它们,不仅仅代表不一样的东西,不仅仅可以排序,还可以用来比较相差多少个,用来计算加法。这里,实际上,有一个对数字的要求,排序上相邻的两个数字之间存在这一种叫做“距离”的东西,并且,任意两个相邻的数字之间,这个距离都相同。这样,我们才能够了解500米是什么意思,500米比400米多多少米。这个同质性以及等距性其实是非常高的要求。日常生活中大多数场合用到的数字,其实,都不一定需要满足这个要求。而著名的“1+1=2”却需要它。因此,第一,这个应该在孩子比较晚的时候,基本上了解了前两层次的含义的时候,再来介绍的;第二,就算要学,也请允许孩子们从实际问题里面自己来学和归纳(关于孩子自己总结和归纳我会贡献另一个我家孩子的例子)——看着一个鸡蛋再加上另一个鸡蛋,在孩子了解什么是2的情况下,很容易就能够总结出来,那是两个鸡蛋。

了解了数字的这三层含义之后,请思考,高速公路编号,例如国道330,国道307这些数字是上面的哪一种含义?再思考,高速公路上的出口编号,例如4号出口,5号出口,是上面的哪一种含义?再思考,为什么一定程度上,水果的个这个单位有一定意义,可以考虑使用的场合。

小结:数字的含义其实很丰富,而且分层次。首先是单纯的集合中的元素,其次是集合加上“序”映射,接着是集合加上“距离”映射或者说等距的要求。所有的这些,在具体运用数字的场合,实际上是哪一种含义,有数字所描述的对象之间的关系决定。不要直接教孩子运算,教具体对象是什么,它们之间什么关系,然后抽象到如果用数字描述的话,数字代表什么,是什么关系。

甚至,你可以发明,这样数数:阿弥(1),陀佛(2),妈咪妈咪哄(3),然后阿弥+阿弥=陀佛都没关系,只要你和你家孩子相互理解,能够用于你们之间的交流,你和孩子的表达。

作业题:顺便用WHWM分析方法,分析一下这个帖子。问:主要传达了什么信息,如何构建的,为什么要传达这个为什么这样构建,对“我”(你这个读者)来说意味着什么。

SB题型式教学法一例:整数除法遇到零添零

昨天刚批判完题型教学法,说不要通过把题目分类然后给每一类一个特殊的求解方法的方式来教学,而是坚持思考:题目里面有什么东西,这些东西之间什么关系,这些关系导致什么样的运算,为什么能够这样算,为什么可以这样算。今天就看到一个非常SB的教针对非常特殊的一类问题的特殊的“看起来可能更快的”求解方法。发出来跟大家分享,跟大家一起来批判。

请大家先看这个视频。
小学《除数是一位数的除法》商的中间或末尾有0的除法例题讲解

其中说到“在平常的时候,我们应该把上面的0拉下来。但是,在这里我们要注意,第一点,不要把0拉下来;第二点,我们需要在0的上方添一个0”。

这就是我说的,仅仅针对非常特殊的情况的SB计算规则。而且,关于这个特殊情况,也没有说对。例如,你用上面这个规则计算一下409÷3试试,你不拉下来0看看行不行。这个规则仅仅在除数是个位数,同时前面刚好除尽了的时候,遇到0,才是对的。那么,这样的规则有必要单独来学习吗?

按照我总结的除法的计算规则试试,每次都是“凑数——乘法——做差——拉下下一位来”,然后,必要的时候“加小数点,加零”,接着继续“凑数——乘法——做差——拉下下一位来”。仅此而已。我们发现,这样的规则,当遇到0的时候,需要把0拉下来,接着凑数“0除以前面那个除数,商等于多少?自然就是0”,接着再一次拉下来下一位,接着同样的步骤,就行了。得到的答案完全正确。

我们真的不需要恶心的多余的规则。请老师们好好地把时间花在教数学的大图景(典型对象、典型问题、典型思维方式、典型分析方法、和世界还有其他学科的关系)上面,不要去做SB的题型教学。当然,通过做题来体会和运用学的知识,是有必要的,但是不能为了做题快而增加各种奇怪的多余的规则。让孩子们学会用一块石头去杀所有的鸟,如果不太合适,孩子们会自己去加工那个石头的。

我一直在呼吁做理解型学习,忽然发现,其实,连机械式学习,我们都不一定教好了。尽管我完全不鼓励机械式学习,可是,有一些计算规则之类的东西,确实只能在问和理解为什么的基础上,主要通过熟练运用这些规则来学习,也就是机械式学习。这个时候,老师们一定要帮孩子们做好尽量普适的规则的学习,而不是类似于前面的这个除法规则,或者下面的这个帖子的乘法分类计算规则:“数学老师说:学会这8条规律,整数乘法速算就是这么简单!

假设你在编写一个计算乘法或者除法的程序,你希望你的程序是先把计算分类然后针对每一种类型类编程,还是希望有一个程序直接能够处理各种类型的计算呢?尤其是当你考虑到你是人,不是电脑的时候。

我不知道为什么要学习这个针对各种类型问题的速算。你信不信我有一个更快的方法:我把每一道题当做一个类型,然后,实现求出来答案,之后,每次检索答案就可以,而不是计算!这些所谓的题型教学,难道不就是这样吗?让孩子们称为存储器和搜索引擎。

什么是加法?

我一直说,计算本身不重要,明白在什么条件下,按照什么关系,用什么计算,甚至发明什么计算最重要。用数学的语言来说,就是集合中的元素和元素之间的映射关系,最重要。

现在,按照这个原则,我试图来回答一下加减乘除是什么。

首先,加是某种相同的质,在某个相同的单位下,衡量的某个量,合起来的意思。例如,一个苹果加上一个苹果等于两个苹果这件事情,实际上代表了苹果数量的加法,而不是苹果本身的加法(苹果本身不能加起来,要是能够加起来,则应该得到一个新的更大或者更小的苹果。顺便,将来,在量子力学里面你会真的看到苹果本身的加法而不是苹果数量的加法,有兴趣可以去看看我的量子力学书《二态系统上的量子力学》)。这个时候,甚至,“个”这个度量单位都不是特别好的度量单位,但是,毕竟关于“个”的大致统一的标准还是有的。例如不能是小半个,也不能特意正好切一半然后问有几个(关于这个问题,回家问问三岁之前的孩子试试,很好玩),最好是完整的,尽管大小可以不一样。

其次,减法实际上就是加法,相当于问如果我们做加法的话,在已知的一个数量上,加上多少,就能够得到另一个已知的给定的数量。因此,减法本身其实就是加法的逆运算,或者就是加法(将来学到相反数以后)。

再次,乘法是加法的简便运算:同样的数量很多次连接加起来,则可以用乘法来表示和计算。

最后,除法是减法的简便运算:一定数量的东西里面要被连续减去同样数量的东西很多次,问剩下多少,可以减几次,则可以用除法来表示和计算。或者,除法也可以看作是乘法的逆运算,或者说就是乘法(等将来学了倒数以后)。

当然,实际上,将来大学了,还可以学得到更加一般的加法(矢量加法,可交换的群乘等等,总而言之,还是元素之间的某种关系也就是映射),这个以后再说。但是,基本上,上面就是什么是加减乘除。只要把这些理解好,用到实际问题中或者将来从实际问题中提炼新的计算,也就是文献和提出问题、把问题转化成数学问题(这个时候甚至会导致新的数学结构数学运算数学关系的提出)、被求解出来的答案做检验和应用,就是数学。至于加减乘除的计算本身,真的不是数学。

加减乘除的计算规则

我很少关心孩子做加减乘除计算的问题,因为:第一,大部分时候算出来的答案是对的;第二,这个问题也实在太低级,有更多关于什么是数学,教什么怎么教才能体现什么是数学,什么是数学的大图景(典型对象、典型问题、典型思维方式、典型分析方法、和世界以及其他学科的关系)这样的更重要的问题需要思考。我真的更加愿意来回答如何才能让学生学会用数学的眼光看世界(发现和提出问题、把问题数学化形式化、求解问题、解的应用和检验以及推广和系统化,这四个步骤中的1、2、4这几步,甚至由于这个1、2、4导致新的数学概念的提出),更愿意去看看数学有哪些典型思维方式——例如不变量的思想,然后问用什么样的例子来体现这些典型思维方式,这样的问题。

但是,今天我发现不是这么回事,在孩子的四则运算过程中存在大量的分类体系和各自问题的特定的方法(顺便,听说高中物理题也成了这个德行:总结出所谓的各种题型,然后对每一种题型有相应的方法。这个太恶心了!)。这个太恐怖了,太让我吃惊了。我一直觉的,根本就没有题型,只有一个一般的方法:那就是思考问题里面有哪些东西,这些东西之间什么关系,这个关系导致了什么样的计算,然后算出来就行了。于是,我尽量克制自己的恶心来做一下这个实在太低级的总结。下面,我们仅仅考虑十进制表示的数字,包含小数点,先不考虑循环小数(其实,以下的总结仍然适用于循环小数)。

加法的计算规则:首先对齐小数点(并且由于小数点对齐了,则实际上各个数位上的数都对齐了;都是整数的话,对其小数点相当于对齐了个位数。但是,总而言之,一句话的概括,就是对齐小数点),然后各个数位,从最右边的开始,做相应数字的(看做一个个的个位数)加法,如果出现加起来超过10的情况,则需要进位,进位需要算到左一位的数字里面,再继续做左一位的加法。

减法的计算规则:首先对齐小数点(并且由于小数点对齐了,则实际上各个数位上的数都对齐了;都是整数的话,对其小数点相当于对齐了个位数。但是,总而言之,一句话的概括,就是对齐小数点),然后各个数位,从最右边的开始,做相应数字的(看做一个个的个位数)减法,如果出现不够减的情况,则需要从左边一位借一个10过来,和当前位上的数字合起来构成“十几”再来完成减法,借位需要算到左一位的数字里面(相当于被减数被事先就减去了1),再继续做左一位的减法。

乘法的计算规则:首先把所有的计算转化成整数的计算,这个时候如果有小数相当于把那个小数做了一次乘以10、100、1000或者更多个10,这些10将来都是要除回来的,记住将来要除多少个。接着就是运用整数乘法。这个时候,要把最后一位对齐(如果非得要这么看,也可以看做小数点对齐,但是,是变成了整数以后的小数点,也就是个位数对齐),接着拿着乘数的个位数先把被乘数乘出来结果,写下来第一行。接着,拿着乘数的下一位把被乘数再一次乘出来,写在第二行上,但是要往左边移一位(这是因为实际上乘数不是一个个位数,而是一个十位数,所以,最后的结果要补一个0)。如果乘数还有百位,则继续这个过程,写下下一行,记得做相应的移位。最后,把得到的各行相加,用上面的加法的计算规则。

除法的计算规则:首先,把所有的计算转化成为整数的计算,这个时候被除数和除数分别被成了几次10要搞清楚,将来要把这些个10都除回去(当然,实际上只需要知道两者的差,如果被除数被乘了更多的10则将来要除以多出来的次数;如果除数被乘了更多的10则将来要乘以多出来的次数。或者,更简单的办法,把被除数和除数同时乘以同样数量的10,尽管这样会造成有的数后面有很多个0,但是商不变,将来也不用除回去了。实际问题中,用哪一种没关系)。接着,把被除数的第一位拿出来,让除数来除除看,按照情况写上(0,1,2,3,4,5,6,7,8,9)当中的一个,这一步叫做凑数。凑完数之后,计算除数和这个凑的数的乘积,写在第一位数的下面。然后做第一位数和乘积的差。得到差以后,把下一位拿过来写在这个差的后面。然后,重复这个“凑数——乘积——差——拿下一位”的过程,直到用完所有的整数。当整数用完之后,还是没有除尽或者达到要求,则在“商”后面加一个小数点,同时在最后的差后面加上一个“零”当做下一位数字。接着再次重复这个“凑数——乘积——差——拿下一位”的过程。

总结一下,加法的计算步骤是:小数点对齐,算个位数加法,注意进位;减法的计算步骤是:小数点对齐,算个位数减法,注意借位;乘法的计算步骤是:变整数,算个位数乘法写相应的一行,算加法,最后调整小数点;除法的步骤是:变整数(可以用被除数和除数同乘来避免最后的调整小数点),“凑数——乘积——差——拿下一位下来”,添加“小数点”并同时加“零”,然后继续“凑数——乘积——差——拿下一位下来”。

就这么简单的规则,并且通用,适用于任何题型,不需要按照不同类型的问题来调整,例如考虑除数是个位数还是多位数的情况,例如考虑被除数还是除数比较大的情况。也就是说,就算是最无聊的纯粹机械式学习的内容,也需要做到越普适越好,不要增加太多特例,尽量一石杀所有的鸟。其次,还需要做到每一个步骤都是可理解的,有道理的,而不仅仅是传授规则。例如,我从孩子那里了解到,在除法中有一步叫做“小数点对齐”——天哪这是什么规则啊,仅仅在被除数是小数同时除数是一位数的时候,这个规则是正确的。其他的情况偶尔也有能够算对的,但是,对于乘法和除法而言,小数点对齐真的是一个没有必要(适用情况有限)又非常容易出问题的规则啊。尽量不要教那些在特殊情况下才对,或者才能够加快计算速度的规则,而是尽量教那些普适的规则。为什么要对小数除法,或者说所有的除法,做这么多的分类,然后制定每一种类型的规则啊。天哪,这是什么样的教学指导思想啊。

要不,你看下面这道题(来源于google检索到的某个课外教学机构),如果我把17改成170呢,1700000呢?为什么会有小数点对齐这个规则啊?所有做题型教学的老师,我吴金闪今天向你们发出挑战,我认为所有的题型教育都是培养SB的教育。当然,在明白是什么,有什么关系,关系决定什么计算之后,做一定量的练习来熟练,我不反对。但是,我反对人为总结出来一些适合特定题目的计算规则,例如我听说过的各种各种的速算(什么末位数都是5则怎样,末位数加起来是10则怎样),那都是在误人子弟,而且是禁锢人思想,限制人思考的,最狠的那种误人子弟的方式。你看看这个题尽然还有步骤八,难道老师看不到就是在不断地运用“凑数——乘积——差——拿下一位下来”这么一个简单的规则吗(偶尔还会用到:整数用完的时候给商加个小数点,同时给被除数增加一个零)?

希望这个总结能够对小学数学的规则教学有一点点启发。这个实在是太恶心了,太低级了。不过,如果这个低级的任务不解决,将来更高级的内容有可能会出现更多的问题。当然,我这么说不表示我们就应该在这个低级任务上花费太多的时间,因为实在不行,将来也还可以用计算器、计算机、搜索引擎和机器人来完成这些低级的任务,只需要知道在什么情况下,根据什么关系,用什么样的计算。但是,尽量把规则总结好,理解好,使得规则说得通,还能够具有普适性,还是有必要的。

为什么不能按照题型的方式来分类然后总结,最后教学?为什么我痛恨这个?我们培养学生是在为了二十和三十年之后做准备,甚至是为了培养在二三十年之后会承担培养那个时候的二三十年之后的人做准备。我们自己都不知道那时候会怎样,我们如何为他们准备呢?他们的世界,他们遇到的问题,肯定会和我们不一样。当然,我以后遇到的问题也将和我现在的不一样。那么,我们如何准备呢?如果我们的方式是把现在遇到的各种问题做一个分类,做好解决问题的模板,然后希望将来他们能够用上这些模板,则是完全没有意义的。不久的将来,所有已经有答案的问题的解决都会被机器替代。我们希望的是将来他们喜欢并且能够提出和解决新的问题。这个时候,分类总结和记忆查询,就不再是面对新问题的方式了。只有教会遇到问题怎么去想,怎么去面对,例如愿意甚至喜欢面对新问题乃至发掘新问题,例如学会那些大概来说那些比较通用的普适的层面的思维方式和分析方法,才有可能有帮助。每一个学科,都要重新去梳理,这样的思维方式和分析方法,也就是我称为学科大图景的东西是什么,用什么样的例子来体现,怎么教,才能真的为他们做好准备。

“你好”是“hello”吗,墨水是“ink”吗,“折线统计图”是“折线-统计-图”吗?

    前两天提到小学数学教材里面对于折线统计图的处理的错误:把给定(可能来自于统计)数据列表做出来折线图看做“折线统计图”。除了教材编写者没有考虑好什么是数学(用数学的眼光看世界和思考,把问题变成能够用数学形式思考的问题)之外,我说还是语文的问题。今天沿着这个思路再展开一下:根本上还是物理没学好的问题,没有运用好还原(不断把东西往下分割成小单元以及单元之间的联系)和综合(把分割好的东西以及这些东西之间的联系重新逐渐往上构建起来上层结构)。通过这个讨论,我还想说明,不管数学物理科学语文,它们都是一样的,就是多思考,尽量深入,还能够回来看到整体。顺便,这个思路有的时候,也叫作系统科学,或者系统思维。

    我们来看第一个例子。例如当我们需要教英语使用者中文的时候,比如就是“你好”这个词的含义,怎么办?整体认读和认知的时候,可以简单用“hello”来代表,或者,类似的“hi”。但是,其实这是不够的。更好的说法应该是“you (have a) good (day)”。更进一步,甚至可以和英文中的goodbye(原来代表“God be with you”,会面结束的时候常用的一句话,后来就引申为再见)联系起来。那为什么这样更好呢?因为了解“你好”的两个字分别代表“你——you”“好——good”对于学习汉语是有意义的。这个意义体现在两个方面。第一、这两个字分别可以构成其他的词语,例如“你们”、“好吃”。这时候学会单个字“你”和“好”的含义就可以迁移。也就是说,更小的结构会在其他地方出现。第二、组合是汉语的一大特点,因此,从具体例子来体会组合,是很好的一个学习汉语的方法。甚至,“汉语”和“方法”都是两个可以讲出来道理的词。更进一步,不仅仅是词,汉语的短语和句子也是组合形成的。

    同样的道理,墨水的“墨”不能教到“ink”为止,需要更进一步。比如,可以解释成“black ash in water”,甚至进一步解释,墨实际上可以看做“黑”和“土”,其中“黑”就是指“火”(下面四个点的含义)上面方一个器皿得到的烟灰,也就是说,“墨”是“black ash, which often comes from smoking woods and is often what deposited on a cool plate over burning woods, in water”。想象一下这个时候,关于这个字的含义,学习者能够体会到多少,至少远远超过仅仅告诉学习者相当于“ink”。

    我们再来看第二个例子。“折线统计图”是一个整体吗,还是“折线-统计-图”三个部分。当然,从语言本身来说,肯定是三个部分“折线-统计-图”,第一部分表示表示作图的类型,第二部分一个处理数据的过程,第三部分表示分析和作图得到的结果。甚至,我们还可以问语言上,“折线”是什么意思(一段段连起来的线段,不一定光滑),“统计”是什么意思(分类整合计数),“图”是什么意思。甚至,我们可以问为什么“统-计”两个字合起来是这个意思,甚至更加进一步“统”、“计”这两个字为什么分别是这个意思,原来是什么意思,如何把原来的意思迁移过来的,等等等等这样的问题。那我们为什么要这样做?因为“统计”还会用在除了“折线统计图”之外的其他地方,例如“柱状统计图”。当然,这是语文的角度。现在,我们来看数学的角度,“折线统计图”是一个必须整体认知的对象吗?不是。首先,我们可以对各种各样的数据,只要是已经成为两列的代表两个变量的数据,都做折线图分析。因此,折线图是独立于统计分析之外的东西。同样,统计分析也是独立于折线图之外的东西,完全可以统计完了不画折线图。因此,这两个概念是完全要分开的,也就是,学生应该学会“折线-统计-图”。

    有了这两个例子,我们再回头来看,说明了什么问题。首先,学会所有的东西的过程中,都存在一个分解或者说还原到什么程度的问题。只有分解之后,独立出来的单元,将来才能在更多的场合发挥作用,成为进一步学习的基础。为什么医学研究着、化学家和物理学家需要把物质分解到分子甚至原子的层次?因为,例如在医学上一旦搞清楚了是某种分子在发挥某种作用,就可以有一个标准来制备这个药物,而不是仅仅通过某个特定的偶然发现的过程来制备,于是还可以用这个标准来检验。更进一步,可以把这个分子继续拆分,成为对应着某种功能的功能团等子结构,甚至进一步到原子的层次,问什么样的相互作用使得这些原子能够组合成具有这个特定功能的集团。了解了这个,就可以来做药物设计了。具体分解到哪一个层次和理解有关,也就是和下面要说的综合有关。其次,所谓的理解就是建立知识之间的联系,从已知知识到未知知识之间的联系,甚至已有概念之间的新的联系。例如,从数学概念上说,你可以把“折线图”特意取一个“柱状图”的名字,只要学术界保持一致,就没有问题。但是,这个时候,对于初次学习“折线图”的学习者来说,就很容易和日常生活中的“折线”的含义“错误地”联系起来。这也是为什么专有名词本身也经常在语言上是可以大概理解的。但是,仅仅是大概。有的时候,这样的联系,不一定对于理解这个概念是正面的,还需要放到专有名词的体系内部来建立联系。这个把分解完了的下层结构通过联系再次合起来的过程,就是综合。实际上,这是物理学的非常核心的典型思维方式之一。

    在学习上,教学上,一定要做好这个分解和综合。一般来说,需要分解到一个层次,那个学习者认为完全理解了的层次,也就是通过考虑分解之后的各个部分的联系能够做到完全重新建立整体概念的层次。当然,好的学习者会一直追问,于是永远也不满足于某个中间的层次,一直到根本问题或者还没有答案的问题为止,甚至自己去探索这个未知的层次。不要满足于任何整体认知。没有深入到细节,则整体就是假象,觉得好像理解了;没有整体,只有细节,那就是迷途,没有方向(when there is no details, whole is delusional; when there is no whole, all is lost in details without sense of directions.)。