欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

程序员爸爸的早教——计数篇 计算机编程早教lisp程序员

程序员文章站 2022-07-15 21:23:18
...

当爸爸后,我很快就知道了一个词——早教。有时候真的感觉现在中国的孩子太可怜了,为了让他们赢在起跑线上,从小就要被父母投入轰轰烈烈的教育事业中。什么脑电波音乐、幼儿简笔画、蒙氏数学、右脑识字、语训、跳舞班......,花样层出不穷。想当年我小时候,哪有这些东西,父母不管,到处乱跑,忙着打架、偷邻居家种的西红柿之类工作。这不,又被老婆大人抓差,陪孩子研究新到的”巧虎“学习本。(没小孩的朋友别笑,等你当父母后,可能就知道”巧虎“是嘛东西了。)

  看看,巧虎书对四岁小孩就开始进行计数训练了。巧虎摘了3个苹果,桃乐比摘了2个苹果,都放到这个篮子里,总共有几个苹果?只见我宝贝女儿伸出手指,从1数起,数到3,再到5个。我再问,”那3加3等于几?”。她又开始数手指,从1数到6。这么低效的算法,怎么行?我马上对她进行了一番辅导,教她“以后尽量不数手指,要心中默默的算”。

  过了几天,我又考她:“宝贝,3加3等于几?别数手指,用我上次教你的方法。”  女儿说:”现在我早不数手指了”。不错,没伸手指,不过,怎么回事?我晕,她开始眨眼睛,从1眨起,连眨了6下。难道我们家孩子没数学特长,不会吧,当年哥可是参加数学竞赛的(没得奖),论遗传没这么差吧?

  我心中一动,说不定小孩在这个阶段的数学思维就是这样具象的。你看,我的程序员职业病又患了,可以试试用抽象代数类型来给宝宝的数学思维建模啊!宝宝这个阶段,肯定只知道最简单的自然数了,她已经懂得数数,比较数的大小,还有低效的加法。

  抽象代数类型定义——

sorts: 集合名

nat自然数 bool布尔值

operation:  操作

                true : bool   

                false : bool

                   0  : nat

        succ : nat -> nat

        < : nat * nat -> bool

        > : nat * nat -> bool

        + : nat * nat -> nat

axiom:  公理

      0 < 0 = false

      0 < succ n = true

      succ n < succ m = n < m

      n > m = m < n

      0 + n = n 

      (succ n) + m = succ (n + m)    ***

  抽象代数类型的特殊之处在于,它的集合元素全是用操作定义的,用了基本的归纳法。集合元素之间的关系,用公理来定义。

  比如,0是自然数的基本情况,succ是构造操作,那么

  1 = succ 0 

  2 = succ (succ 0)

  3 = succ (succ (succ 0))

  ......

  3~4岁的小孩处于计数初始阶段,他们对数的认知也许就是这样,所以他们在做加法时,是用上面打*号的那条公理来实现的。比如3+2,相当于

succ (succ (succ 0)) + succ (succ 0) = succ ( succ (succ 0) + succ (succ 0) )

       = succ  succ ( succ 0 + succ (succ 0) )

       = succ succ succ ( 0 + succ (succ 0) )

            = succ succ succ succ (succ 0)

  每succ一次,相当于数一次手指,或眨一次眼睛。象我的宝贝不懂得加法的交换律,算完3+2,你问她2+3,她从头再来一遍。所以在模型的公理中,没有这条:

    n + m = m + n

  随着孩子的长大,对计数掌握的越多,我们就要不断扩充模型的能力。首先要增加记忆的定理一项,什么 2+ 3 =5 都变成她熟练掌握的定理,不用算了。操作要扩充,增加减法、乘法、除法等等。公理随之也增多。

  到了初中,就是把自然数扩展成整数,要有负数的观念。她还要懂得分数,也就是有理数。然后是无理数,实数集合。上了高中,她还要学会复数,算算三角。再到大学,她要是和老爸一样,读computer science,她就会知道抽象代数。等她有小孩,她又教她小孩计数。我正在那里傻乐着瞎想呢,突然女儿的一声召唤把我从梦里带回来,“爸爸,妈妈叫你带我去上画画课”。 唉,早教这个烦人的东西又来了!