让我们来开诚布公的聊一聊我们憋了一年的编程产品

自从雷诺实验室2019年推出了【雷诺积木机械动力组套件包】,获得了广大用户的好评和支持。每天都有雷诺的铁粉丝在社区里发布自己的作品,和我们讨论制作各种有趣的机器,实现自己的想法。非常开心大家认可这个产品。 【雷诺机械组的图片】 【粉丝的社区晒图】 非常多的粉丝一直在追问,雷诺有没有更进一步的产品,比如可编程的机器人, 机器人等级考试内容,机器人比赛内容等等。 【粉丝的追问截图】 针对这些问题,雷诺和Leo非常谨慎,也有敬畏之心。在历时一年多左右的讨论和研发(从2019年8月开始),从核心理念,模块设计,兼容性,性价比,内容阶梯等等。终于在2021年的春节前,我们决定发布这个产品及体系。

背景介绍 雷诺作为一个多年的资深码农。从上小学五年级用小霸王学习机来编写QBASCI程序,到后来参加工作,经过过ActionScript[就是Flash的编程语言,当年非常非常的火,可以用来做动画,作游戏,和下文中提到的Scratch非常类似],Java,Python,C,C++,PHP等等,各种主流的,非主流的语言都有使用过。 (Leo)是一名电气工程师,他拥有十余年的工业自动化项目调试经验,工业上那些复杂的机械结构和控制系统深深地吸引着他,并亲历了中国汽车制造业的崛起。他从小就怀揣着一个机器人梦,喜欢各种拼插积木和电动玩具,小到四驱车,大到机器人。在校期间偶然了解到慧鱼和乐高,喜欢乐高科技积木搭建各种有趣的机械结构。2011年开始玩Arduino,担任《极客工坊》论坛的版主,并在社区内负责翻译部分Arduino语法手册。2012年基于Arduino平台开发了互动机器人盒仔BOXZ,并录播到CCTV的《五年规划》第六集之中。参与合著《智能机器人制作完全手册》,并发表过多篇机器人制作教程。在大连组织并建立机器人业余爱好者线下社区歹饭空间,并最终联合创建了大连创客空间。

做为资深码农和硬件工程师,我们的孩子一个4岁,一个6岁,在如何学习编程和引导孩子学习这件事情上,还是有一定的经验和发言权。我们也希望自己的孩子可以掌握编程的核心,同时也和别的家长一样,希望孩子可以锻炼逻辑思维。

我们一致的认为: 1、编程是一门工具 之所以说编程是一门工具,学会后,有些地方可以快速的的解决你工作和生活中的一些问题。就像你会骑自行车,会游泳一样,这是一个技能。举个例子: 雷诺原来在作一个石油项目的时候,如果要打一口井,在分析完地层的资料后,还有一个非常繁琐但是非常重要的工作就是:把要打的这口目标井周边井的数据统计出来,用来佐证这口井值不值得打。当然,这些数据包装的内容可太多了。地层深度,生产数据,累积产油,累积产水,作业情况,出油地层,是否连通等等,每一口井的数据都是厚厚的一裸子文件,更不要说要统计周边的十几口,甚至几十口井了。 雷诺刚接触的时候,为了打一口井,光统计资料就花了整整半个月的时间。痛苦不堪。 心想:明明是非常简单的工作。只是繁琐,就要浪费这么多时间。这太不值当了。在本着偷懒的前提下,雷诺悄悄的完成了一个数据查询的工具,可以自动的生成需要打的井的周围的井的所有数据情况,并且自动汇总,自动分析结果。原来厚厚的资料最后变成了几张纸的结果,在汇报井位的时候十分方便。周边的同事看到这个工具可以极大的节省时间,纷纷采用。时至今日,这个工具在内部还一直在流传使用中。

计算机内部的运行效率是非常非常快的,只要定义好规则(也就是我们编写的程序)他是不会出错的,不会像人一样,重复性的工作作久了,肯定会出现偏差,计算机是不会的。这也是我们希望大家学习编程的原因,未来毕竟会遇到类似的工作内容,是枯燥,简单,消耗时间,不如定好规则让电脑来完成。

2、编程离不开其它学科,尤其是数学 但是,我们要强调的一点是,如何去定义这个规则(编程)这是更重要的。这也是编程不能教会你的。工作有千千万万,每个工作中要使用的思路和逻辑是不同的。你要想写好程序,你首先要对你的工作非常熟悉和精通,才能更好的写出这个规则。就好比自行车人人会骑,但是专业选手骑的更快一样。他对于什么时候用力,什么情况下用什么姿势比一般人更熟悉。 程序的语言有多种多样的,有主流的 C C++ Python,Java,PHP等等,还有一些非主流的,应用在教育场景或者特定场景的,比如Scratch。其实他们中间的语法大同小异,用原来做程序员时候的一个玩笑来说就是:一个高手只需要用一周的时候就可以学习一门新的语言。不假。当你学会任何一门语言以后,其它的语言都非常类似,他们的核心无非就是循环,条件,顺序这三大要素。即便没有学习过程序的人单纯从字面上就可以大概理解这三个要素是干啥的。 好的,问题来了,会有人问,那这么简单,是不是所有人都可以学会呢,没错,编程本身就是非常简单的,没有大家想像的那么复杂,但是能够区分高低手的关键是: 你是不是对你要写的内容有足够的专业度 你的数学是不是足够好 就拿上面雷诺要写的数据统计的那个项目来说,如果雷诺对石油和井位的知识一点也不了解,那根本是写不出来这个程序的,因为他根本不知道这些数据都代表着什么。表示什么意思,更不要说融合他们了。 数学也是决定你是不是高手的关键。在这里我先说着一个前提,计算机其实非常笨,他自己根本不知道要执行什么东西,他只会根据你定义的规则程序来笨笨的执行,你让他干啥他就干啥,如果你定义的规则不够好,那计算机也一定会出错的。计算机虽然有着比人快N倍的处理速度和记忆空间,但是你也要合理使用,如果你定义了一个非常笨的规则给他,计算机也有可能会累死的。因为在计算机看来,他的内存空间也是一定的,不是无限的。 举个例子: 一共有16支队伍参加足球比赛。两两一队打淘汰赛。最后得出冠军,一共要打几场比赛呢? 人类思维:好,两两一队是吧。先有8场,然后4场,然后2场,然后一场,好,一共15场。好的,算的真,要是5439支队伍呢?要打几场?额。上编程 初级选手:这还不简单,我写个程序就可以,用总数除以2,把结果存起来,用剩下的再除以2,一直到只只剩下一个。不就可以了。 漂亮,这样的确不错哦,只要输入几支队伍,就可以得到结果,如果我有253425432542354支队伍呢? 等,不行啊,我程序里面最多只能10000啊,这怎么办 优秀选手:我只要用一个公式就可以了,因为只剩下一只队伍,所以只要把总数-1就可以了。写不写程序都可以。一击必杀

再优秀的程序也需要专业的知识和数学基本功,如果你只是简单的堆砌,那注定写不出好的程序,也做不出优秀的作品。所以练习好专业知识和数学是编程的关键,没有之一 PS:游戏界的程序大神 卡马乔一直有一个传奇。他的一个计算三维空间展布的的公式至今无人知道是怎么推断出来的,只知道他这个公式比平常的算法快了N个数量级,好比你还在起点听枪,他已经跑到了终点。他不光是一个伟大的程序员,也是一个伟大的数学家。 3、编程和逻辑思维是一个充分非必要的条件 这也是家长问的最多的问题,我之所以放在第三个来说,是希望上面两点看完后,您心里有了一个自己的答案。 现在铺天盖地的广告都是这么打的,编程提高逻辑思维 ,编程提高数学。哪哪都是。 学习编程究竟锻炼不锻炼逻辑思维,是锻炼的,他的确会让你形成一个有条理思考的模式。但是逻辑思维的训练不一定通过编程,也不是唯一的。DIY小制作,奥数,等等益智的产品和内容都可以锻炼逻辑思维。 编程的思考本质是 时间换空间 以及 空间换时间。上面的足球比赛的场次问题已经充分说明了这一点。不过如果你总是这样去写程序,其实你是限定在了计算的范围内去思考问题,总是想着内存有多大,我怎么利用计算机的速度快这一点,但是你忽视了最重要的,优化和抽像。时间长了,只会写一些简单的业务逻辑,而写出不核心算法。自然也没有什么竞争力。 现代的编程语言也好,编程环境也好,大大的减少了对电脑运行内核的思考,对效率的思考,甚至对错误的思考 。让人集中在表层去编写。写一些简单的应用还可以,再复杂,再深层,拉开档次的时候,就会发现学识太浅了。 如果抽像规则,用简洁有力的表达在电脑里表达出来是重中之重。世界的规则这么复杂,难道只是电机正转几下,反转几下吗? 编程中最重要的逻辑门恰恰是训练逻辑思维优秀的工具。逻辑与,或,非,构造了一个强大的逻辑表达工具,他也是计算机得以运行的基础所在。我们的看到的每一个图片,聊天输入的每一个字,都是通过与,或,非在计算机内部得以表达,交换,运算,得出结果。就像现在公务员考试一样。行测的题大多数都是逻辑推班,逻辑门的应用。掌握好这个工具的使用,才是在编程中掌握了核心,可以更清晰简洁的表达自己的想法,组织表达顺序。 4、儿童编程现况 上面说了很多关于编程的理解和概念,现在谈一谈现在满天飞的儿童编程,学编程提高数学能力,学编程提高逻辑思维能力。学编程是万能的。这类的广告宣传大家肯定无处不见,无处不在了。不管是打开公号,还是各类短视频平台。 儿童编程分成两类: 一种是纯虚拟的代码编程,以SCRATCH为代表的一类。在平板和电脑上可以做出小游戏。 一类是以乐高机器人为代表的机器人编程。可以控制机器人行走路线和完成一定任务。比如FLL.WRC这样的国际赛事,已经多年,非常成熟

第一种纯虚拟的代码编程: 好处:上手非常简单有趣,可以马上做出来一些有意思的效果。比如小猫转个圈圈,在屏幕中间走来走去等等。场景中的素材也可以随意变换,操作起来难度低。 坏处:这类的代码编程都有一个致命的通病,就是再向后学习,难度会陡然加大,不是一点一点加大,是陡然加大,如果儿童想实现一个稍微复杂一点的需求,代码量会加大很多,这个时候,代码编程的弊端就显示出来了,调试非常麻烦 ,也就是出了错,你非常难定义错误的位置在哪里,这类语言角色和角色中间的通信全部用的是消息广播机制,条数少了还好说,如果条数多了,简直是噩梦。这就好多,你在喇叭里面找人,找张三,你说了一遍,张三听见了。如果你要找一百个人,你要说一百遍,时间长了,你还记得住你刚才广播的消息是啥吗? 也许有的人会说,这只是个入门的,后面还会学习C++,Pyhon一类的高级语言。那我想说的是。99%的儿童可能在看到C++和Python的一刹那就放弃了学习的愿望。复杂的代码界面和调度窗口。让人望而生畏。 这类代码积木类的语言适合也写一些小型的,简单的小项目。不能实现更复杂的需求。 最最关键的是,天天看着平板和电脑,是不是家长也心里觉得不舒服。毕竟现在网课都那么多了。 第二种乐高机器人类的编程在国内运作了多年,也有非常多成熟的赛事。线下大大小小的机构也用的是乐高类的机器人课程体系。在我们看来,用机器人来学习儿童编程是非常好的一种选择。他非常完美的把业务逻辑和核心逻辑做了一个分离。 我来解释下这句话。所谓的业务逻辑就是我刚刚提到的孩子的各方面的理论知识还非常弱,数学。物理等等,但是机械人不存在这个问题。机器人的结构在孩子之前的搭建中,多多少少了自己的认识,也熟悉和了解一些机器人相关的结构知识,这就是我们说的业务逻辑,如想驱动这些机器人是走起来,跑起来,怎么动,动到哪里。这些业务逻辑本身趣味性就非常高,孩子也非常乐意沉浸其中。从这个点上来说,成功了一半了。虽然乐高也是使用图形化的编程界面,但是不要忘了,他是业务+核心的结构,业务逻辑在外,以机械结构为主。核心的逻辑在编程界面,只要认真注意如何驱动好你的机器人就可以了。