分享
 
 
 

编程不难学?

王朝other·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

编程应该好学?大概没有几个人会说这不是疯话不是梦话,编程难学可是举世公认的常识呀!要是好学,程序员的工资会高?要是好学,电脑还叫高科技?… 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. 在教编程语言时,尽量用程序例子来演示每个知识点:概念、名词、框架等,这是所谓的“实例教学法“。前面说过,编程语言的几乎所有知识点都是可以用程序演示的。虽然很多电脑书作者和教师也了解到了例子的重要性,可似乎仍然停留在不太清楚的潜意识中,没有有意识地在教学中使用程序演示每个(注重是“每个”)知识点-假如很多教师遵循了这个原则,编程好学就是常识了。很多编程书,例如作者网站上提到的那些,大谈所谓的体系、结构、层次、优势等等,绵延数页全是“理论”式的文字,没有几行代码或者实例。这相当于说一堆美女标准的“理论”:口脸鼻该长的什么样、身材比例多少、皮肤质地如何…却舍不得出示美女照片或者带学生站在大街上看美女。像编程知识一样,“美女”是很实用具体的知识,谁愿意光钻研“美女”的理论,却见不到美女的“实例”?

5. 对数据库、服务器、开发环境的教学,尽量用“怎么做XXX”的方式,列举具体的步骤。例如“怎样在JBuilder中设置JDBC的驱动”、“怎样部署程序到服务器中”等,这也是一种“实例”教学形式。要避免字典式的讲解,比如逐条讲解File菜单的Open、New、Save,却不演示从新建文件到编辑和保存文件的完整过程。

6.尽量避免大和复杂的程序实例,假如短小的例子能达到同样效果的话。一些作者和教师喜欢采用复杂的示例,虽然苦了学生,却显示了其专业技术水平,学生甚至还因此崇拜他们!

7. 教学过程应该一点一点地前进,一次只讲一个尽量小的知识点,避免涉及其他知识点,并且步骤尽量详尽到这种程度:即便一个人不理解你讲的知识,按照你的步骤也能得到最后的结果。

8.所有的代码应该是可运行的。很多书中的代码是代码片断或者伪代码,这会令学生花费额外的时间编写可运行的程序,而不一定能成功,这就增加了学习的难度。

9.只有当相当的知识点已经完成讲解后,才是使用综合复杂例子的合适时间。对开发人员来说,综合性强的例子绝对是需要的,就像要全面把握美女知识,一定要观看各国美女云集的环球小姐选美赛一样。

写作本文的目的,一是让广大读者和学生坚信,在编程学习方面,“没有笨学生,只有笨先生”(该说法来自作者的另外一篇文章),假如学不会编程中的什么东西,千万不要以为是自己笨!二是介绍作者的教育观点包括教学技巧,供其他教师借鉴参考。三是告诉读者,作者的所有将出版和已出版的著作,全是按照Know Unknown Through Known原则编写的,甚至本文也是按照这一思想写作的-比如上面的那些示例和比喻。

关于Know Unknown Through Known更严谨的论述,见作者网站的英文文章:An Effective Methodology of Teaching Programming Knowledge,网站上的其他文章中,还列举了很多正反两方面的例子,阅读起来更生动有趣。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有