@ME:
|
最近在某乎看到一篇文章,大意是海淀妈妈们已经嫌弃Python低级,准备让娃直接入门C++。看得我这个写了15年代码的老码农心惊胆战,感觉随时都会被后浪拍死在沙滩上。我其实非常赞成小朋友学习编程的,但做为一名码农奶爸,我觉得还是有必要给各位海淀妈妈们解释一下什么是计算机编程,C++和Python有什么区别,娃是否应该学习计算机编程,以及编程怎样从入门到放弃。
什么是计算机编程
学习计算机编程,简单来说就是学习怎样给计算机下命令。你说话,让计算机听明白,然后老实去做,和你平时教育娃没什么区别。不过计算机非常听话,只要你能说明白,他就一定能按你的意思执行,比带娃省事多了。
当然,想要给计算机下命令,你得先了解计算机。我们天天使用的电脑、iPhone、iPad等等,其实遵循的都是“冯·诺伊曼架构”,简单说就是要有CPU,内存,显示器和键盘。你用键盘给CPU下命令,CPU和内存一起合作,算出结果输出给显示器就可以。如下图所示:
不过CPU非常傻,只认识0和1两个数字。所以如果你想让他算一道算数题,你得告诉他一串24位的数字1000 0011 1100 0000 0000 0001,他才能听懂。无论你用Python、C++还是别的编程语言,最终都会转换成这24个数字。像不像平时教育娃,无论汉语、英语还是方言,最终都得翻译成拳头,娃才能明白一样?
顺带说一下,这串24位数字叫做机器码,翻译成码农能看懂的语言是“ADD%EAX,1”,说人话就是“别玩了,快给老娘算x+1等于几”。
C++比Python高级吗
随着科技的发展,出现了非常多的编程语言,编程语言之间也确实有高低级之分,但不是培训班Tony老师告诉你的高低级。
像刚才说的ADD%EAX,1叫做汇编语言,是低级语言,而Python和C++则同属于高级语言范畴。他们在刚才的例子中,都可以同样的代码x+=1来表示,他们之间甚至还有点亲戚关系,C++是基于C语言“改进”而来,Python则是由C语言编写的。
那么Python和C++谁更高级呢?这个需要分领域回答。在数据科学和人工智能领域,Python是当之无愧的王者,但在高频交易、网络游戏领域,C++可以说是目前的业界标准。对于少儿编程领域来说,Python在简单易入门方面几乎没有对手。
Python有多简单呢?写一个同样功能的网站,用汇编语言,C++与Python的工作量对比大约是1000000:3:1。这是什么意思呢,就是Python程序员在和女生约会的时候,C++程序员刚加完班,而汇编程序员已经当场去世了。
那为什么Tony老师说C++比Python高级呢?当然是因为学同样的东西,他能收3倍的课时费,贵的就高级,没毛病。
Tony老师也许会反驳说Python只是玩具语言,大一点的孩子都不用。我们可以看一下2016~2020编程语言流行度排行榜:
事实上,这个世界上无论是小朋友还是老码农,都在用Python,也都爱用Python。
Python和C++的真正区别是编译型语言与解释型语言的区别,简单来说就是C++是直接变成0101让CPU运行的,而Python则需要随身带个翻译,这就导致Python在运行时比C++慢10-100倍左右。不过不用担心,现在的CPU已经快到让你感觉不到任何区别。
娃应该学习计算机编程吗
对于娃是否应该学习编程这件事情,如果中高考不考,可以完全不用学。Tony老师往往告诉你学习编程,可以训练小朋友逻辑思维,让小朋友数学更好。但真相却恰恰相反,是逻辑思维好的小朋友,学编程更容易而已。
编程语言中用到的数学逻辑只有3个,条件判断,循环与递归。
1、条件判断
条件判断就是你告诉娃如果要吃糖,就要先听话。用程序表示就是
if听话:
可以吃糖
else:
直接吃拳头
2、循环
循环就是娃不停的要你买玩具,买完这个买那个。用程序表示就是
while玩具玩腻了:
和妈妈要新玩具
3、递归
递归就是娃不断的问你这是什么?比如指着天上问你这是什么?你说这是太阳。他又问太阳是什么,你说太阳是一个恒星。他又问恒星是什么,你说恒星是宇宙中一种星球。他又问星球是什么,你说星球就是星球,去找你爸玩。用程序表示就是
def ask(xx是什么):
if问烦了:
return去找你爸玩
else:
ask(xx是什么)
可以看到递归和循环有点相似,在实际编程中递归和循环也是可以互换的。
看到这里,你还觉得少儿编程可以提升数学成绩吗?编程不会提升娃的智商,也不能像弹钢琴、说意大利语一样拿来炫耀,从功利的角度并不划算。
编程真正的价值在于创造,你可以轻易创造一个完全属于自己的作品,可以分享给朋友,甚至可以分享给全世界。这种创造产品的乐趣,这种被人认同的成就感,这种一次次经历失败但最终获得成功的喜悦,才是学习编程真正的价值所在。
所以,如果你的娃满足下面3个条件:
对编程本身非常感兴趣,也有一定的理解力
有一个真正懂得编程的老师指导
你对娃在编程上没有过高期许
我是推荐让娃学习Python编程的,因为编程真的好玩,也真的能获得成就感。
少儿编程该怎样入门
从我个人经验来说,学好编程只需要两个条件:
带着目标学习
一个字一个字亲手写代码
学习编程其实是一个非常庞大的过程,你需要学完编程语言、标准库、常用第三方库、网络协议、数据库、操作系统、数据结构、常用算法等一大堆内容,才能真正做一个产品级的程序。但是对于少儿编程来说,学好编程语言本身,一点点标准库和第三方库,也可以做出一些好玩的程序。
所以入门编程,你最需要的是给娃定一个目标,让他能带着任务学习,比如编写一个小小的游戏,或者让机器人跑起来。有了目标,就可以按照下图一步一步开始学习:
Python太低级?码农带你揭穿少儿编程的骗局
学完蓝色部分,基本什么也做不了,但是对编程本身会有非常清晰的概念,大部分娃学到这里也就结束了。学完橙色部分,就可以实现有趣的小游戏,或者让机器人随心所欲跑来跑去,娃会有满满的乐趣和成就感。绿色和紫色部分,预留给走专业路线的娃,如果上了高中依然热爱编程,并且有剩余精力,可以开始学习这两部分内容。不过即使学完紫色部分,也不代表编程就学完了,展示一下专业码农的路线图:
学完这些,才能差不多找一份互联网中级码农的工作,而且职业生涯还比较艰辛。行业变化特别快,技术天天都更新,工资全是加班费,年轻人便宜还玩命。所以如果真想要从事职业码农,一定要慎重。作为上一代码农,现在我基本只能靠Word和PPT混日子了。
总结
如果你真的坚持完整的看到这里,其实已经不需要这份总结了。对于想偷懒的,直接上干货吧:
不要让娃从C++入门编程,这样只会加速娃放弃学习
学习编程不会提高娃的数学成绩,也不会提高逻辑思维能力
绝大部分娃最终都会放弃,不要对娃有太高的期许,保留乐趣最重要
如果娃有兴趣,坐得住,老师靠谱,可以从Python入门编程
最后,对于想入门少儿编程的家长,最重要的就是给娃设定好目标,让娃坚定的一个字一个字编写每行代码。当克服重重困难,把程序成功运行起来的那一刻,娃会明白这些努力都是值得的。(源于 什么值得买APP,观点仅代表作者本人|作者:玩牛牛)
|
|