精品推荐
编程不难学?
日期:2008年1月21日 作者: 查看:[大字体
中字体 小字体 ]
编程应该好学?大概没有几个人会说这不是疯话不是梦话,编程难学可是举世公认的常识呀!要是好学,程序员的工资会高?要是好学,电脑还叫高科技?… Google“编程好学”、“程序设计好学”、“编程语言好学”,根本就没有多少结果,因为编程好不好学是不言而喻的,压根就没有几个人这样问! 本文的读者都是上过学的,如果回忆一下自己的学习经历,就能总结出,难学的课程通常是那些抽象的课程,比如数学,包含太多“脱离”实际的概念术语,是最难学的,理化和工科因为可以做实验和使用仪器工具,和现实有些直接的联系,而比数学易于理解。对推理能力、想像力、创造力的高要求也是数理化和工科难学的一个原因。至于编程,几乎和数学一样,有自己的一套封闭的名词术语和运行机制,其抽象的特征使其也难学-这是“常识”,也是“现实”。 有的时候,人人都默认的“常识”不一定是真理,比如“重的东西比轻的东西落下得快”,就曾经是全世界千千万万人民坚信了几千年的“常识”,直到被一个叫伽利略的人、在一个斜塔上、扔下一大一小两块石头所打翻。 作者多年前开始研究编程(实际上是更广泛的电脑知识)难学的原因和解决方法,发现编程本质上一点不抽象,相反,它是很实际的知识,原因如下:
1.编程知识是人造产品 比如Java,是由Sun公司的人创造的。人造知识的特点之一,就是它是由人为创造的规则组成,而人造规则是“死板”的,即便有时候“灵活”一下,“灵活”也是由人造的规则约束的。比如Java中的一个概念是什么意思、能用在什么场合、和其他概念有什么关系、怎样改变它的特性、扩展它的功能,全都明明白白地规定了下来。根本没有不为人知的潜规则(如果有,那就叫bug),需要学习者像伽利略一样,自己推理、自己思考、或者自己去发现。学习这些明明白白全能写在纸上、无需想像力和创造力的死规则会难吗?
2. 编程知识是有限的 因为它是人造的知识,所以它是有限的。比如JDK1.4版本(就像windows 2000),你可以找到它所有的知识点(尽管很多),虽然你可能不会在一个本书或者一个文档中找到它所有的知识,但确实可以想像有这样一本书,它包含了所有的JDK1.4的知识,包括如何使用它们的知识,当然,这本书从来没有出版过。人造知识也会发展,比如JDK1.4发展到JDK1.5(就像Windows 2000到Windows XP),但这也是Sun公司又添加了些新规则而已,不关学习者的事。有限的知识也意味着能在有限的时间内学会,而对于数学、物理这样的知识、甚至是其中的一个小的分支,我们都不知道它到底是无限的还是有限的,因为它的知识(至少大部分)都不是人造的,天知道有多少知识、它们藏在什么地方、能被谁发现或者解决,比如对于自由落体规律,在伽利略之前,全世界的天才聪明人都没想到登高丢石头。 说白了,Know Unknown Through Known其实就是由简到繁、由浅入深、由具体到抽象这些显而易见的老生常谈。可惜的是,这个显而易见的教学原则显而易见在电脑(包括编程)教学中没有“常谈”过,在作者网站的中英文文章中,举了很多违反这一“大白话”原则的例子,包括一些知名国外作者。本人认为,这是编程(包括其他电脑知识)难学的原因。而与此相对照的是,作者自从1999年开始电脑写作以来,已经出版了包括10本Java程序设计著作的电脑书,也作过长时间的Java教师,几乎没有人抱怨作者的书难看、课难懂,因为作者严格地在写作和教学中应用了Know Unknown Through Known原则。 那么,作者是怎样应用Know Unknown Through Known的呢?具体的教学技巧如下: 1.详细地列举学习一门课程的预备知识。比如,会不会循环语句?很多编程书只是用很概括的描述,例如“有Java的基础知识”、“初级”、“中级”等。对预备知识的详细描述,可避免学生选择太浅或者太深的课程。 2.总是用学生已经学过或者容易理解的东西,来解释新的知识点。例如作者每当提到一个名词、概念或者其它知识点,问自己三个问题:“读者可能学过吗?前面讲过吗?应该在这里讲吗?”,尽量保证每一句话、每一个段落的知识只涉及前面的内容而不涉及后面的内容,使读者从第一页看起,基本没有看不懂的地方,这就是不用未知解释另外一个未知。比喻、示例、图片、动画等也是学生已经了解或者很容易理解的“东西”。比如,如果教师打算用“老虎是一种大猫”来解释老虎,那么要先确认孩子见过猫。 3.尽量在新的知识点第一次出现时,将它解释清楚。因为知识点经常互相交叉,万一要提及后面才能详细讲解的知识,就使用这样的说法:“先不管XXX的含义,后面还要详细讲解”,以避免读者产生没有讲清楚的错觉。仅此一点,就可保证读者看得不累,不会卡在不理解的地方长久地流连忘返。因为读者在学习时,倾向于尽力理解每个字,如果碰到没有解释清楚的术语,就会停下来长时间地乱琢磨,直至怀疑自己是不是笨、或者书太难-大多不会认为是老师的错。 4. 在教编程语言时,尽量用程序例子来演示每个知识点:概念、名词、框架等,这是所谓的“实例教学法“。前面说过,编程语言的几乎所有知识点都是可以用程序演示的。虽然很多电脑书作者和教师也了解到了例子的重要性,可似乎仍然停留在不太清晰的潜意识中,没有有意识地在教学中使用程序演示每个(注意是“每个”)知识点-如果很多教师遵循了这个原则,编程好学就是常识了。很多编程书,例如作者网站上提到的那些,大谈所谓的体系、结构、层次、优势等等,绵延数页全是“理论”式的文字,没有几行代码或者实例。这相当于说一堆美女标准的“理论”:口脸鼻该长的什么样、身材比例多少、皮肤质地如何…却舍不得出示美女照片或者带学生站在大街上看美女。像编程知识一样,“美女”是很实用具体的知识,谁愿意光钻研“美女”的理论,却见不到美女的“实例”?
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
上一篇:TOM.COM网站首页改版的体验感受
下一篇:非主流ps教程:蓝色格调非主流色
相关文章:
相关软件: