一些编程心得,兼谈很多初学者的误区(转自一学长)
一些编程心得,兼谈很多初学者的误区
一位学长的心得,和我的观点不谋而合,呵呵。
我学编程时间,说长不长,说短不短。如果从最开始学习BASIC算起,大概有五年。其中学习C四年,Delphi和C++三年。到现在,经过了菜鸟、初学者的阶段,走过很多弯路,受过很多误导。到今天,有些感慨,不得不说。
中国的程序设计教育,尤其是学校教育,存在一个十分十分大的误区。就是太注重语法的细节。我不止一次见过别人问我,类似i+=++i+++i+++i这种问题的答案。见多了,的确很烦,又很无奈:吃饱了撑了?关心这些干啥。
我在这里问一下大家:编程是干吗的?学编程又是为了什么?答案很简单:用的。我们要写程序用的。试问:哪个正常的人写程序会写出来i+=++i+++i+++i这种东西?我们学习编程要有工程的思维。
在这里特别说一下“老师”扮演的角色。众人很多老师烧包得很,自己会抠个语法总觉得自己很了不得,摆弄个++--就把自己当K&R了,却不知道自己连谭浩强这个一贯被鄙视的人都赶不上。本来就是很多implemention
defined的东西,或者一辈子不会用上的东西,没有标准答案的,还真把自己当牛人了。
在这里特别说一下,编程是一门很特殊的学科,在这里面,绝对没有“标准答案”这四个字。一套题目一个答案一个标准,那是中学老师干的事情。遇到这样的老师,别跟他学了,让他去教娃娃吧。
的确,入门的时候,语法细节更重要。但是,教学的时候,不仅仅是把语法告诉学生,让学生被++--折磨得要死;还要给学生传递一种编程的思想,一种对程序的整体的把握。
这就是为什么大家都推崇K&R,而对老谭总有微词。K&R的书你能感觉到一种程序设计的思想和精神,对程序的把握的整体的、高度的。老谭的书其实说白了就是语法大全,而且是琐碎、(有部分)无用语法大全,对程序的理解是零散的、琐碎的。
打个不好的比方,就像中国人教英语。中国人能把那些小词分析的一清二楚,什么in on at,look see,英国人都说不清有啥区别中国人就nb的能搞明白。可是中国人说出来的还是chinglish,因为没有语感。
可能这个要求有点高。。。但我还是希望教学不仅仅是语法的罗列于介绍,还应该有精神与思想的传递。学生不仅能学到++i和i++的区别,还应该能学到怎么写出优秀、清晰、易于理解与维护的代码的知识。