我们有两条路来学习编程,一条是厚积薄发,一条则是速成的道路。厚积薄发要一点点打根基,比如学习C语言、学习计算机系统的构造,去看《计算机程序的构造与解释》这类书,去学习算法等,这么走有点吃力不讨好,吭哧半天也还不一定能看到什么结果;速成的就可以先学习IDE,先学习脚本,先学习CSS,JavaScript,这样没多久就可以独立干不少活了,比如创建个漂亮网站什么的。
这种不同道路的选择最终决定了C是不是更适合做第一门语言。走前一条路的显然就适合用C做第一门语言,因为不掌握这种系统级的语言就不太好理解什么是指针,什么Stack,什么是Stack Overflow,什么是写超界,对打基础形成不良影响,也理解不了《深入理解计算机系统》这样的书。走后一条道路的就没关系了,哪个实用学哪个。
从C语言开始学习编程对大学生而言的含义:除了大学的时间,你可能再也没有大段的时间打基础。容易的东西是可以用碎片时间学的,比如各种脚本语言,但难的东西是需要大片时间学的,所以一旦大学里不把硬骨头啃掉,未来很可能就没时间啃了,说回来还是要先打基础再谈其它。
历史上赵匡胤曾经犹豫过是先搞定比较羸弱的南唐还是先搞定幽云十六州,最终他选择了先易后难去搞南唐,从结果来看这是错了,你不趁自己最巅峰的时刻搞定最难搞的,未来可能就再没机会了,而羸弱其实一直会弱在那里,早搞晚搞差别不大。
当然我们也必须承认即使努力的去打基础,也不是每个人向上走,都能成为高手、成为特别牛的程序员,还是有人会卡在某条线下面,要去维护垃圾代码、写垃圾代码,但关键是我们谈的是在学习阶段应该怎么做,不争一争就放弃某种可能性,还是太可惜了。
此外,对于大学生或者那些有充足时间学习的人,我不太认可一种方式可以培养兴趣,另一种就不能培养兴趣的说法。这更多的可能是种借口,因为在有如此多好玩开源项目的年代,对于想学的人,C语言一样可以有很多兴趣,对于不想学的人再简单的语言一样也很无聊。有没有趣,是学习或者是教学方法的问题,而不是编程语言的问题。