大家好,我是逃妈。
前阵子我们这边一个AIME中上难度级别的数学竞赛(美国奥某数分为AMC8, AMC10, AMC12, AIME…AIME中上难度差不多是高考压轴题左右),第一名居然是个小学四年级的小朋友!
家长群一片哗然,真是一届更比一届卷,变着法儿地卷啊。
当然,某种程度上也说明了,小学是智力高速发展阶段,只要资源给到位,有些天赋少年的确能早早冒尖儿。
国内这些年奥某数被打压,但另一个非常类似,同样拼智商,和升学紧密相关的比赛火了——编程。
前几天我看到一个数据,CSP-J/S(信息学奥赛的前置赛,适合小学、初中孩子)的参赛人数从2021年的5.3万,狂飙到2023年的22万。
当然,和之前“百万级别”的小奥比起来,还只是“小巫见大巫”。
如无意外肯定还会继续走高。
一来它和国家重视科技教育的大方向完全一致;
二来和升学联系紧密。比如小升初如果有择校意向,小考坑深暗箱多,评三好/红领巾奖章啥的场外因素大,CSP是目前唯一明确、公开、公正的筹码。
不过,编程不像数学那样人人都很熟悉(难题不一定做得起,但数学咱都学过嘛),这种过热现象,很容易让一些不了解底细的家长被坑。
之前就有读者跟我讲,数学底子还不错的5年级娃,去报班,机构居然建议从图形化编程学起~
我听了真的很生气。这不是明摆耽误孩子时间嚯课时费么?!
关于编程的方方面面,我以前写过很多,在CSP越来越热的今天,我觉得有必要再来和大家过一下。
编程是双减后为数不多的,逆风增长的学科,而且直接和升学挂钩。但越是火热,咱们在给孩子选课报班时,就越要慎重。
先说说最关键的一个问题:
01
学编程就是搞信奥赛吗?
不是!
编程和信奥赛的关系,就像数学和奥数的关系。
100%的孩子需要学数学,80%的孩子适合学奥数,50%适合打比赛,5%能出成绩。
放到编程和信奥赛上,也很类似。
100%的孩子需要学编程,这事已经毫无悬念。教育部早有引导,现在沿海一线城市的很多中小学,也都开设了编程课。
一些要求更高的名校,还会引入更专业更权威的课程,比如我之前给大家推荐的编程课,最早就是被引入人大附中实验小学、人大附中西山学校、北京101、上海中学、北京科技大学附小、西安建筑科技大学附小等名校的。
总之,未来编程就是一项类似于语数外那样的基本技能,人人都需要,没太多可讨论的。
但至于要不要搞信奥赛,得看孩子情况。
家长可以大致这样判断:
· 如果孩子校内数学喂不饱,对浅奥也小有兴趣,那完全值得试试信奥;
· 如果孩子校内数学还搞不定,那先打住,咱把数学搞好了,再说别的。
搞信奥有什么好处呢?
第一,看基本面。信奥对孩子的逻辑思维,绝对有帮助。
说白了就是烧脑,小学是孩子智力发展的关键阶段,不烧白不烧,烧烧更聪明。
而且,信奥赛里的算法,数据结构,和数学关系非常紧密。搞信奥的孩子,数学成绩大概率也会名列前茅。
第二,看升学优势。对小升初、初升高、升大学都有好处。
这个已经很明显了。在很多地区,如果小学能在CSP入门组拿奖,初中能在CSP提高组拿奖,那都是妥妥的升学硬核材料。
但是,有这个意向的家长请务必注意时间点。
CSP每年只考一次,如果想作为小升初的筹码,那最好5、6年级都参加(只参加一次风险太大),倒推回来最晚4年级就得开始学C++和信奥算法,否则来不及(天牛除外)。
第三,看长远。对将来就业有好处。
美国这边,能叫得出名字的所有科技大厂,面试几乎都考算法,就是类似信奥赛那样的题目。
国内我听到过一个说法,如果能在信奥赛强省(比如浙江、广东)CSP提高组拿一等奖的孩子,将来的工作年薪不会低于30万。
当然这只是听说,在就业形势那么困难的今天,谁也不敢做这个保证。
不过,编程、信奥赛基本是科技、高薪的代名词了。放眼望去,有多少科技大咖都是早早开始搞编程,搞信奥赛的。
包括今年火上天的,ChatGPT的创造者Sam Altman,8岁就开始学编程。
当然了,这些天牛们,离咱寻常百姓家的普通孩子有点儿远。
但至少证明这个方向没有错。你说对吧?
OK,搞清楚“编程”和“信奥”的关系,有了大方向后,咱们接下来细掰一些“技术”术语:
02
图形化编程是代码编程的基础吗?
不是!
本质上它们是平等的,无论图形化编程还是代码编程,只是不同的实现形式。
编程中要学习的核心方法概念,比如顺序、循环、条件、变量、递归、函数、调用、调试等等,在图形化编程中有,在代码编程中同样也有。
举个例子,我们要编一个程序,“求1加到100的和”
孩子可以用图形化编程来实现(即便你完全不懂编程,只要能看懂下面这些英文单词,肯定能七七八八猜出啥意思):
其中的关键编程概念是「循环」(repeat),每次循环中,加数a增加1,加到被加数sum里;循环100次后,被加数sum就是我们要求的总数。
实现同样的功能,用Python来编写,是这样:
这里的核心部分,for….也是个「循环」,它所做的事情和刚才一模一样:循环遍历从 1 到 100 的整数,加到被加数sum里。
我们说图形化编程更简单,只是因为它使用了更直观的图形方块元素来表示程序。年龄小的孩子,不需要会打字,只要拖拽一下方块,像搭积木一样就能把程序写好。
但在编程思维层面,图形化编程和代码编程是一样的。
比如上面这个例子里,孩子都得去理解「循环」这个概念。是用图形方块还是用代码,只是不同的呈现形式而已,换汤不换药。
换句话说,“图形化编程”阶段不是必须的,它只是降低了编程操作难度和年龄门槛,让孩子在年龄很小,时间充足的时候就可以开始培养编程兴趣,编程思维。
所以,我的推荐逻辑是这样:
· 年龄还小,尤其是1-2年级的孩子如果从没接触过编程,建议学“图形化编程”。通过图形化编程培养编程思维,掌握编程概念和方法,将来进入代码阶段一点就通,节省时间,毕竟现在的孩子,肯定是越大越忙。
· 假如已经错过了这个阶段,孩子现在比较大了,尤其是4年级及其以上即便从没接触过编程,我都建议直接学代码编程。
03
Python是C++的基础吗?
不是!
本质上它们是平等的,是两种不同的编程语言。
我们可以说,“Python学好了,对学C++有一定帮助”。
但不可以说,“没学过Python, 就不能学C++”或者“没学过Python, 就学不好C++”。
就好比一个人英文学得好,那他学法文也比较容易,因为阅读、写作这些东西是相通的。
但你不能说,“没学过英文, 就不能学法文”或者“没学好英文, 就学不好法文”。对不对?
同样的编程功能,能用Python实现的,肯定也能用C++来实现,反之亦然。
那为什么很多人说,C++比Python难呢?
那是因为,C++的语法比Python要复杂些。
实现同样的功能,C++的代码看起来更长更繁琐,Python则更简洁明了。
今年逃逃生日时给他订蛋糕,当时正好是美国信奥赛USACO的赛季,我就索性配合一下,给他整了个“程序员蛋糕”,上面写了段Python代码,体现浓浓的程序员气质。
其实逃逃现在更熟悉更常用的是C++。我之所以用Python,就是因为换成C++太长了,蛋糕师不接单,说写不下~
那C++的优越之处在哪儿?
它的性能更好,执行效率更高。也因此成为了信奥赛的官方指定语言,从入门级别的CSP-J,到最后的国际信奥IOI,都指定使用C++。因为编程竞赛比拼的是算法效率,对时间、空间复杂度都有要求。
等等,细想是不是有哪里不妥?
不对啊,都统一成Python也一样啊。既然是竞赛,看的是选手之间的相对值,只要是apple to apple, 都是一样的啊。
是这么个道理,但中国计算机学会CCF和国际信奥赛组委会都指定了C++,咱能怎么着?
不过,我也跟大家说过好多次了,不要一听到C++就如临大敌,觉得是揠苗助长啥的😓
竞赛用到的C++语法只是C++很小的一个子集,范围远没有软件工程上用的C++那么广, C++中让人头大的内存管理、指针的指针,还有面向对象等内容,信奥赛里都不涉及。
所以,我的建议是,四年级及其以上孩子,
· 如果目标明确,想试水CSP-J/S信奥赛,直接学C++就好,反正无论你学别的什么,最终还得从头学C++;
· 如果无意在竞赛这条路上走远,但希望孩子也能掌握编程,能用编程来做些科研项目,Python则是不错的选择。
04
搞信奥赛就是学C++吗?
不是!
我打个比分,孩子要解决一道奥数题,他苦思冥想后终于找到「解法」
现在,他要把这个解法告诉老师,实际上要把解法讲清楚,孩子可以用中文讲,也可以用英文讲,但这老师规矩多,他指定了要用「中文」讲。
如果把这里的“奥数题”换成“信奥题”,那么,
「解法」 = 我们常说的编程里的“算法”,是比较烧脑的
「中文」 = C++,是个表达工具
所以,信奥赛和C++之间的关系是:
孩子要搞信奥赛,必须得学C++;
但只学C++,还搞不了信奥赛。
信奥赛的难,在算法,不在编程语言。
同样的题目,用C++难,用Python、甚至用图形化编程,也一样难。
EASTWEST
最后来小结一下,今天和大家聊了几个关于编程和信奥赛的关键问题:
· 编程不等于信奥赛。每个孩子都需要学编程,但不是每个孩子都适合搞信奥赛,它俩关系就跟数学和奥数一样。
· 图形化编程不是代码编程的基础。年龄较小的孩子建议从图形化编程学起,一来好入手,二来为后面争取时间;年龄较大的孩子建议直接从代码编程开始,只要肯花学时间,不存在“基础不扎实”的问题。
· Python不是C++的基础。四年级以上的孩子,笃定要试水信奥赛,建议直接学C++。年龄小时间多的娃,随意,学了总能为后来争取时间。
· 要搞信奥赛,除了学C++,还得学信奥算法。难点在后者。
内容比较干,可能需要消化消化。我想大家有了这些概念后,再去给孩子选择编程学习机构、报编程班的时候,就能有的放矢,不容易踩坑了。
如果你觉得有帮助,记得在文末点个“”和“在看”哦。
咱们公号创建快10年了,我自己又是学计算机专业的,所以早在几年前就开始和大家聊编程了。当时只是说趋势,但到了今年,讲真连我都觉得编程有点儿过热了,大有赶超当年的奥数、KET/PET之势。
我觉得吧,编程肯定是要学,但主要还是奔着培养孩子逻辑思维、编程思维的目标去。
如果孩子特别感兴趣也有天赋,那大可往信奥方向发展;又或者孩子掌握了编程这个工具后,激发了用它来实现些创新、科创类的点子,早早走上startup的路子,也未尝不可。
作为家长主要还是给孩子提供条件,至于后面能走多远,那就是可遇不可求的啰。平常心,反正过程中的思维提升和收获,肯定会有,不亏的。
文章配图:采集于网络,版权归原作者所有,如有侵权,请告知删除。
继续阅读
阅读原文