壹牛家长圈

查看: 90|回复: 0

中小学生到底该学哪种编程语言?

[复制链接]
发表于 2023-3-29 13:16:07 | 显示全部楼层 |阅读模式

相聚壹牛,和更多牛爸牛妈们一起交流!

您需要 登录 才可以下载或查看,没有帐号?注册

x
本帖最后由 16jzqzm 于 2023-3-29 13:36 编辑

中小学生到底该学哪种编程语言?


这些年,由于某些众所周知的原因,信息学奥赛越来越火。我听过不少文科妈妈为了鸡娃信誓旦旦说要自学奥数,但还没怎么听过有人要自学编程。

编程对大部分文科家长来说确实比较陌生和更不友好。许多家长的第一个问题是:孩子到底该学哪种编程语言?特别是:为了信奥,孩子该学C还是C++?



市面上的编程语言有很多,下表是2022年11月的编程语言排行榜。可以看到,Python, C,Java,C++和C#位列前五位,而图形化编程语言Scratch也进入了前20名。
1.png

对于青少年编程而言,通常只涉及上面20种语言的四种:Python, C, C++和Scratch。Java虽然位居三甲,但青少年编程基本不会涉及。在上述四种语言里,Scratch当然是作为编程启蒙的最佳选择。使用这种图形化的编程语言,孩子可以用搭积木的方式把程序构造出来,非常容易上手。而且,这种可见即可得的方式也非常适合孩子入门。


有些人觉得Scratch不需要手写代码,不能算作正式的编程语言,这一点我不敢苟同。Scratch拥有编程的几乎所有要素,而且如果教法得当,它内在的一些特性可以潜移默化地熏陶孩子的面向对象编程素养。


Python作为目前最火的一门编程语言,主要得益于近年来人工智能的兴起。目前,有些高校用Python取代C作为第一门程序设计教学语言,这并非没有缘由。Python是一门通用编程语言,既支持面向过程,又支持面向对象,更重要的是,它自带了很多库,可以非常方便地做出一些很酷的可视化效果,让初学者成就感满满。

相比较而言,下面要介绍的C或C++,初学者必须面对命令行输入和输出,光这一点就能劝退许多人。


那为什么中小学生要学C或C++呢?说一千道一万,其实只有一条:C++是信息学奥赛的官方考试语言。要不然,哪个小学生会愿意受这累去学C或C++呢?



很多人听到这有些迷糊,C和C++到底啥关系?既然信息学奥赛用C++,那为啥还要提C呢?

从计算机从业人员的角度而言,两门语言关系密切,但又有着很大的区别:C语言是面向过程的通用程序设计语言,而C++则是面向对象的通用程序设计语言。



啥叫面向过程和面向对象?通俗地讲,面向过程侧重于分析解决问题所需要的步骤,然后用一个个函数去实现这些步骤,而面向对象则侧重于分析问题中的参与对象以及这些对象之间的关系。


CSDN上举的一个例子比较形象。

用面向过程的方法写出来的程序是一份蛋炒饭,而用面向对象写出来的程序是一份盖浇饭。

啥意思呢?

蛋炒饭制作的最后一道工序是把米饭和鸡蛋混在一起炒匀。盖浇饭呢,则是把米饭和盖菜分别做好,你如果要一份红烧肉盖饭呢,就给你浇一份红烧肉;如果要一份青椒土豆盖浇饭,就给浇一份青椒土豆丝。蛋炒饭的好处就是入味均匀,吃起来香。如果恰巧你不爱吃鸡蛋,只爱吃青菜的话,那么唯一的办法就是全部倒掉,重新做一份青菜炒饭了(讲的是紧耦合)。

盖浇饭就没这么多麻烦,你只需要把上面的盖菜拨掉,更换一份盖菜就可以了(讲的是松耦合)。盖浇饭的好处就是"菜"“饭"分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是"可维护性"比较好,“饭” 和"菜"的耦合度比较低。蛋炒饭将"蛋”“饭"搅和在一起,想换"蛋”"饭"中任何一种都很困难,耦合度很高,以至于"可维护性"比较差。软件工程追求的目标之一就是可维护性,可维护性主要表现在3个方面:可理解性、可测试性和可修改性。面向对象的好处之一就是显著的改善了软件系统的可维护性。


当然,C语言在解决紧耦合问题方面也不完全像上面的例子那么不堪。一名C语言高手也能写出很好的具有面向对象基因的松耦合程序,而只学习了C++语法的程序员却不一定能写不出好的面向对象程序。


这背后,是程序员对问题抽象和系统可扩展性的深入理解和追求,已经上升到了内功层面。抽象与解耦,这是一名优秀的程序员深入骨髓的思维方式,并不会因为你学了一门语言就有根本的改观。


当然,中小学生所学的C++,基本不涉及面向对象的内容,所以基本等同于C,在业界被称为C++ without Class。家里有一本中国计算机学会主编的《CCF中学生计算机程序设计》书,就是用的C++语言,里面对面向对象的内容基本上只字未提,而这其实才是C++的核心。


其实,语言只是表达思想的一种载体,无论是信息学奥赛还是日后的编程工作,最终比拼的还是算法和计算思维。精通了一两门语言后,再学其它的语言快得很。但是,即便你学会了一二十种语言,也不一定会编程解决八皇后问题。这就好比有人会说好多门语言,但却写不了好的文学作品。好的文学作品不仅仅在于语句和修辞,更重要的是在于内容和思想。

最后总结一下。


如果是纯粹感兴趣想学点儿编程,那可以在中低年级的时候学一下Scratch,后续再学一下Python,这样不仅能保持学编程的兴趣,还能作为以后谋生的一项技能。


如果是为了信息学奥赛,那么学了图形化编程后可以直接开始C++ without Class(其实就是C)的学习,开启代码的苦旅。当然,也有直接就从C++开始学编程的,个人认为起步阶段会比较痛苦。


如果是要培养计算思维,那么无论哪种语言都可以。甚至不学编程语言也能学习计算思维,比如国外有一门叫做“不插电的计算机科学”的课程,就是通过游戏等方式来学习计算机科学,特别是计算思维。


内容来源于昍爸说数学与计算机思维由壹牛骏妈,分享于此,希望对大家有所帮助!欢迎大家回帖,邀请更多的家长加入壹牛交流群,和众多的牛爸牛妈一起交流讨论!作者和壹牛家长论坛拥有最终版权,转载请注明出处!
QQ图片.jpg





更多的资源共享和互助成长,敬请大家关注壹牛微信公众号: “壹牛升学资源圈”和“壹牛家长圈”。搜索微信公众号“sxquaner”和“www-16jzq-com”添加关注!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

让社区更精彩

  • 办公地址:成都青羊区通惠门路3号锦都1期18楼3号(浦发银行楼上)【地铁2号线通惠门站D出口、地铁4号线宽窄巷子站B出口】
  • 工作时间:周一到周六 10:00-17:00
028-86691808

关注我们

反馈建议:985052335@qq.com
Copyright   ©2016-2022  壹牛家长圈www.16jzq.com  Powered by©Discuz!
  ( 蜀ICP备16021970号-1 )|网站地图 
快速回复 返回顶部 返回列表