总有人问,孩子几岁开始学编程最好。今天我就试图就这个问题好好回答一下。
本质上,几岁都可以学,可以打字,认识简单的英文单词就可以学了。学习编程的门槛其实很低。我昨天刚发了一篇文章
谈学编程不需要数学好
,事实上,小学初中开始学编程的人很多,那时候数学能好到哪里去?
一个人能学自然语言,就能学计算机语言。事实上计算机语言是一种高度简化,高度特化的语言。跟人类语言比起来太简单了。自然语言有无数的歧义,上下文关系紧密。而计算机语言的特点就是没有歧义,任何一句语句,在同一个编译器,同一款CPU下执行,它的结果是确定的。
计算机在我小时候还很不普及。到了今天,如果你能理解其实手机也是计算机的话,你就会明白,我们身边一切都是计算机,我们已经彻底被计算机包围了。你理解计算机的原理,知道怎么编程去控制它,你可以用计算机。你对计算机原理毫无了解,完全不知道怎么编程也可以去控制它。但是这种感觉是完全不一样了。
而在当今这个时代,编程也不仅仅是程序员的专利。
做金融的往往都需要会做一些简单的编程,这样更有利于他们在寻找新的股价涨跌规律,寻找新的投资机会的时候,快速和精确地定位他们需要的信息和解决问题。各行各业都存在这可以用一些简单的编程把自己的事业做到更好的机会。
已经去世了的著名音乐人阿怪是我的网友,他是张惠妹成名作《三天三夜》的创作者。他的主业是做音乐,他其实就大量的在编程,在做音乐这个领域会编程其实也可以做出很多有意思的创新。
不能说,一个人不会编程就彻底跟社会脱节,但是确实丧失了一些机会。
我不反对任何孩子尽早的开始学编程。因为
一般来说,小时候学编程主要有利于建立概念,锻炼思维。即使这一辈子都不太需要用编程来解决实际问题,或者找工作,编程背后的逻辑思维,工程能力都是终身受益的。
在中国和在国外,程序员里面都有大量非科班出身的人。这是因为编程是一种最适合自学的技术。很多程序员也是特别自学特别擅于自学的人。拿我来说,我的大学计算机编程方面教的很浅,只有C语言、FoxPro之类的课程。我自己的Basic、Python、Pascal、C++、Asp、PHP、Java、Objective-C、Swift、Kotlin都是自学的。编译原理、数据结构、TCP/IP、数据库、信息检索、等等也都是我自己自学的。
因为编程和计算机特别适合钻研。如果孩子确实有兴趣,那么早点让他学习编程可能会打开一扇新的大门。
当然也有非常大的可能性让孩子变成一个宅男,我就是这样的例子,我为什么这么宅,很大程度上就是因为我觉得对着电脑可以做的事情太多,我可以沉浸在里面无数的时间,永远都不需要出来。
事实上,我有很多其他的爱好,我喜欢打篮球,篮板抢的特别好,擦板球特别准。我也很喜欢打羽毛球和看书。但是一切爱好,跟编程相比都不够强大,有的时候,我不得不强迫自己离开办公桌,离开电脑。
但是,我也要说,现在流行的少儿编程有些我不是特别建议。其实开班的少儿编程,有很多种。
有些是偏兴趣的,比如Scratch,我其实觉得有点低估了儿童的智力。
其实图形化的编程方法不是不能玩。但是稍微大一点的孩子其实就可以理解basic之类的文字化的编程,这并没有那么难。对于我这样的人,玩Scratch之类的,有点太浅,有点隔靴搔痒的感觉。
我之前在上海的办公室附近有一个小朋友,也就是初中的时候,就可以自己写英语学习的App了。其实这个时代的孩子的智商水平里面,很多类似的孩子都应该能做到类似的水平。
而另外一种是计算机奥赛一类的编程培训。
这类因为可以跟升学加分之类的扯上关系,孩子玩得好了长大也可能出国比赛拿金牌啥的,职业生涯也很好开展。但是我又觉得可能太高估了普遍的孩子们的智商。就是这一类能玩好的孩子,肯定是人群中的少数。如果是跟数学奥赛那样遍地开花,其实就是另外一种增加孩子学习负担。当然如果孩子确实智商超群,在这类比赛类的东西里面能展现出优势,家长定向培养,我觉得是非常好的。
最好的儿童编程,我还是建议能从兴趣出发,能帮助孩子建立好的自学习惯最好。
之前,国外的教育工作者曾经做了一个实验,把计算机放在一个国外的偏僻的没有人懂计算机的贫困地区山村。但是这个计算机可以连接互联网,后来发现那个地方的孩子们居然用这个计算机无师自通的学会了很多计算机知识,还自学学会了编程。
事实上,我们现在的孩子的环境比这个要好得多。我小时候学计算机编程的时候,还没有互联网呢。想学什么必须买书。现在的孩子有无限的空间去学习。
如果说,在学习编程的同时学会了如何自学,那才是一生最大的收获。我们目前的教育在这方面做得非常差。确实有很多人,非常聪明,大学毕业以后,学习能力很强。但是普遍来说,应试教育的思维太严重,很多人离开课堂,进步就停止了,一生的知识水平就停滞不前了。
那么学的第一门语言应该选什么?
我认为太关注这个问题本身是错的。