小学三年级以上,我建议孩子们学C++
最近有个问题一直困扰我,一度也认为我错了,努力试图改变我自己的想法,可是我发现还是无法说服我自己。作为有着快10年经验的码农(程序员的自嘲称呼),从汇编语言到C再到后来的java,python,js,C++几乎所有的语言都使用过,到头来所有的底层逻辑架构还是c最全面也是最稳定的语言,C++作为从C演化而来的高级语言,既有C的严谨稳定,也有对程序员友好交互的特性,故而从自身的经验我认为C++是作为小学高年级编程入门的首选。
其次,小学进入三年级以后,相应的思维逻辑和简单的数学公式都能够理解,如果小朋友还经历过幼儿scratch的学习,那么就能好的理解程序运行的基础结构,那么对c++的学习更加的如虎添翼了,如果没有学过scratch也没关系,程序的本质是对事物经行描述并输出结果的一个过程。只要孩子能够独立的讲出一件事情,并对事情经过给个总结,就已经具备学习所有编程语言的前提。那就有人问,那为什么你不推荐python呢?首先,python确实是一门很好的语言,现在很多人在学,也确实很多的程序是用python写的,但是从本质上说,他就是一门程序员在无聊假期突发奇想的一个解释性的语言。python简单是因为它的语言表述就跟生活中用语(英语语法)基本一致,所以造就了它简单,同时也把程序语言结构简化了,从而出现可能的机器执行程序时,程序结构逻辑断层。最直观的体现就是python2.0和python3.0都不兼容。学编程或者想学真正的编程,还是从最基础的语言学,把基础打牢固,后面才能有质的飞越。现在学python看似简单易学,也会有看似不错的成果展现在学生家长面前,可实际拔苗助长。三年级的孩子思想刚处在发展萌芽期间,对学进去的东西会有很强的先入为主的印象,后面再学习c或者其他语言会不断的与python进行比较,甚至不自觉的会按照python的代码习惯写,导致后面会遇到挫折甚至崩溃厌学,学完c++在学其他语言就不会出现这种情况,因为所有的高级语言都是从c语言演化而来的,只有c++继承的最全面,最接近机器语言的底层逻辑。
最后,从孩子的升学角度讲,既然孩子花钱学习报班学习编程了,不管将来是否要依靠编程获得升学保送或者将来从事计算机行业,c和c++是两个绕不开的基础。首先保送这一条,国家规定的语言只有c++。所以可见c++的重要性。有人说我的孩子还小,三年级先让他学一段时间python,简单入门一下。后面再转C++这样想法的家长有很多,有这样想法的家长大都不了解编程,形成一个误区,认为编程就应该是先python在C++,其实这不过是资本的又一次操作而已,前几年java大火,各种培训班Java课程满天飞,后来发现python更简单,而且还可以简单做出让人看起来不明觉厉的效果。然后就大力推,导致后面几乎市面上的机构都大力推这个课程,但基本都是让学生记住代码,很少解释程序底层的逻辑,因为如果解释就势必要用到c语言的结构和原理甚至还会涉及一些汇编语言。python比c语言更能吸引小朋友,更能创收,更没有机构会拒绝这样一门课程了。那python能不能学呢,当然能学。但是我认为需要有了c语言的基础之后,再去尝试python,那样事半工倍。不然就像空中楼阁,看起来绚丽夺目,其实危险重重,没有地基的大厦,终究是不牢固的。然后就是有些家长说我也不打算走保送,只是让他学一下,掌握一点编程的知识。其实这部分的家长是比较矛盾的,既把钱花了,孩子其实也没学到多少知识,最多记住了一些永远也用不到的代码,仅此而已,连编程都算不上,最多叫会敲一些字母,记住一些单词。因为记住的那些代码全部都是基于记忆,而根本不了解机器在编译这段代码时候的运行逻辑,孩子只会看到,程序运行的结果,而程序运行的内核,全然不知。最后还有家长说C++太难了,任何知识都有从易到难的过程,不可能c++上来就给你讲算法,讲结构。也是从最基础的计算机的工作原理,进制转换等等的基础知识最后到难点知识。
写在最后,不管学什么样的编程语言或者知识,基础是最重要的,从计算机发明到现在也不过76年,各种语言层出不穷,但都是基于最基础的汇编语言到c语言最后到高级语言(C++,python,java......)以后可能还有更加优秀的语言出现,但是记住计算机行业的一句话“C生万物”语言重要,算法才是灵魂,更加重要。