植物学课本式的中国计算机教材?兼议Linux的使用
发表于 : 2010-01-12 16:26
迄今为止,我所见过的中国计算机教材在讲述一个技术时都是这样讲的:
1.什么是什么,什么属于什么,什么是由什么人提出的,...。
2.什么有什么性质(证明,例子),什么有什么功能(证明,例子),什么有什么应用(证明,例子),什么有什么优缺点(证明,例子),...。
3.应用什么时应该这样(证明,例子),应该这样(证明,例子),...,不能那样(证明,例子),不能那样(证明,例子),...。
讲法是先理论,再归纳比较,再总结,至于例子因为“没有一般性“,可有可无,而证明是“一般人想不出来的”,不要求理解,只需记住。这样讲给人的感觉是此技术乃是天神所授,教学者应该把此技术完整地传授与学生,并强调天神对此技术所下的结论,必要时补充些证明和例子以帮助掌握(记忆)此技术。带引号的句子是我所遇到的某些老师说过的原话。这抹杀了人的思考能力,也限制了人通过实践和思考来进一步发展现有理论的可能性。这可以称为灌输式教学法。
我原以为只有中国人这样写,没想到外国人也这样写,比如各种软件的文档手册,尤其是有的文档是由doxygen自动生成再稍加修改而成,再如老式植物学课本,牛津辞典等,但这些都不是用于学习的教材!引用Bjarne Stroustrup的一句话:“Reading a description manual, or documentation is a bit like looking at an old-fashioned botany textbook listing details of thousands of plants organized according to obscure classification. It's daunting!.“ (试译:读一份手册,或文档就好像在读一本老式的植物学课本,其中隐晦地分类列举了上千种植物。读这种书是令人生畏的。)
其实科学技术的产生,是先有实际问题(实践),再有人的思考(抽象),在思考的基础上尝试解决问题(实践),再思考(抽象),...,最后完善对问题的解决方法(如果这个方法可以复用,则形成了理论)。国外的计算机教材正是这样讲的,先谈实际问题,后提示必要的抽象概念和思考途径(不一定完善),尝试解决问题,再提示必要的抽象概念和思考途径(不一定完善),...,最后完善对问题的解决办法并总结所得到的理论(还有可能把总结理论作为课后习题!)。这可以称为启发式教学法。
国外为什么大牛多,因为他们实践得多,思考得多。国内的如王选为什么能不断提出汉字照排新技术,也是因为他实践得多,思考得多,他的技术一不是天神所授,二不是国外进口。
以数学课本为例(中小学我没学计算机课程),中小学的老师或许可以讲,基础知识太基本了,比如阿拉伯数字,没法启发式地讲(我不同意,小学我可以推导九九乘法表,中学我可以自行推导大多数公式定理)。但到了大学我发现课本还是灌输式的,而且所灌输的东西一点也不基本,我再也没法自行推导大多数公式定理了。但是通过看一些启发式的国外教材,我还是能在那些教材的提示下自行推导很多公式定理的。
至于我在大学学习计算机课程,则更加觉得灌输的不可取,比如有的C语言教材为了语法而讲语法,也就是灌输语法,什么语法最难?指针。于是指针成了最大的重点。大有没讲指针就没讲C语言的意味。按照这样的教材出的试题充满了指针。其实C语言起到的作用只是帮助人们运用计算机解决实际问题,指针只是一个比较有技巧的语法而已。学C语言的目的不是为了掌握C语言的语法,而是如何用C语言解决实际问题。在语法学习中最重要的是函数和其他模块化的结构(附带说一句,有的C语言考试的填语句的题目完全没有模块化可言),而且不是什么最难什么就是重点,重点的东西是对实践最有帮助的东西,而对实践最有帮助的东西只有通过实践才能体会到。
我发现只有通过自己的实践、思考(可能需要在一些提示下)所学到理论才掌握得牢固,才能灵活运用,才有改进的空间。
再谈一点关于如何使用Linux的个人看法。
不用桌面就很很厉害吗?熟知Linux的命令就很厉害吗?视人的日常需求而定。习惯用桌面的人用,不习惯的人则不用。除了内核开发者,大多数人没有必要了解编译内核的命令。真正的Linux高手是可以用Linux做成他想做的事的那类人。使用Linux的过程是不断实践、不断思考的过程,遇到问题可以先自己想,再去找提示,比如manpages,比如wikipedia,再自己解决。Linux有一个很大的好处,十分开放自由,一个问题可以有无数答案。还有一个好处,没有人灌输我。(假想中国决定推广Linux,说不定会把manpages全印出来,作为教材,太可怕了。)
1.什么是什么,什么属于什么,什么是由什么人提出的,...。
2.什么有什么性质(证明,例子),什么有什么功能(证明,例子),什么有什么应用(证明,例子),什么有什么优缺点(证明,例子),...。
3.应用什么时应该这样(证明,例子),应该这样(证明,例子),...,不能那样(证明,例子),不能那样(证明,例子),...。
讲法是先理论,再归纳比较,再总结,至于例子因为“没有一般性“,可有可无,而证明是“一般人想不出来的”,不要求理解,只需记住。这样讲给人的感觉是此技术乃是天神所授,教学者应该把此技术完整地传授与学生,并强调天神对此技术所下的结论,必要时补充些证明和例子以帮助掌握(记忆)此技术。带引号的句子是我所遇到的某些老师说过的原话。这抹杀了人的思考能力,也限制了人通过实践和思考来进一步发展现有理论的可能性。这可以称为灌输式教学法。
我原以为只有中国人这样写,没想到外国人也这样写,比如各种软件的文档手册,尤其是有的文档是由doxygen自动生成再稍加修改而成,再如老式植物学课本,牛津辞典等,但这些都不是用于学习的教材!引用Bjarne Stroustrup的一句话:“Reading a description manual, or documentation is a bit like looking at an old-fashioned botany textbook listing details of thousands of plants organized according to obscure classification. It's daunting!.“ (试译:读一份手册,或文档就好像在读一本老式的植物学课本,其中隐晦地分类列举了上千种植物。读这种书是令人生畏的。)
其实科学技术的产生,是先有实际问题(实践),再有人的思考(抽象),在思考的基础上尝试解决问题(实践),再思考(抽象),...,最后完善对问题的解决方法(如果这个方法可以复用,则形成了理论)。国外的计算机教材正是这样讲的,先谈实际问题,后提示必要的抽象概念和思考途径(不一定完善),尝试解决问题,再提示必要的抽象概念和思考途径(不一定完善),...,最后完善对问题的解决办法并总结所得到的理论(还有可能把总结理论作为课后习题!)。这可以称为启发式教学法。
国外为什么大牛多,因为他们实践得多,思考得多。国内的如王选为什么能不断提出汉字照排新技术,也是因为他实践得多,思考得多,他的技术一不是天神所授,二不是国外进口。
以数学课本为例(中小学我没学计算机课程),中小学的老师或许可以讲,基础知识太基本了,比如阿拉伯数字,没法启发式地讲(我不同意,小学我可以推导九九乘法表,中学我可以自行推导大多数公式定理)。但到了大学我发现课本还是灌输式的,而且所灌输的东西一点也不基本,我再也没法自行推导大多数公式定理了。但是通过看一些启发式的国外教材,我还是能在那些教材的提示下自行推导很多公式定理的。
至于我在大学学习计算机课程,则更加觉得灌输的不可取,比如有的C语言教材为了语法而讲语法,也就是灌输语法,什么语法最难?指针。于是指针成了最大的重点。大有没讲指针就没讲C语言的意味。按照这样的教材出的试题充满了指针。其实C语言起到的作用只是帮助人们运用计算机解决实际问题,指针只是一个比较有技巧的语法而已。学C语言的目的不是为了掌握C语言的语法,而是如何用C语言解决实际问题。在语法学习中最重要的是函数和其他模块化的结构(附带说一句,有的C语言考试的填语句的题目完全没有模块化可言),而且不是什么最难什么就是重点,重点的东西是对实践最有帮助的东西,而对实践最有帮助的东西只有通过实践才能体会到。
我发现只有通过自己的实践、思考(可能需要在一些提示下)所学到理论才掌握得牢固,才能灵活运用,才有改进的空间。
再谈一点关于如何使用Linux的个人看法。
不用桌面就很很厉害吗?熟知Linux的命令就很厉害吗?视人的日常需求而定。习惯用桌面的人用,不习惯的人则不用。除了内核开发者,大多数人没有必要了解编译内核的命令。真正的Linux高手是可以用Linux做成他想做的事的那类人。使用Linux的过程是不断实践、不断思考的过程,遇到问题可以先自己想,再去找提示,比如manpages,比如wikipedia,再自己解决。Linux有一个很大的好处,十分开放自由,一个问题可以有无数答案。还有一个好处,没有人灌输我。(假想中国决定推广Linux,说不定会把manpages全印出来,作为教材,太可怕了。)