C++程序设计实践学材系列(1)——前言

回到系列文章的目录——[系列文章目录]


前言

  这是一个想过很久但一直不敢开始的写作计划,要将已经带领三个年级的学生以实践为主线学习C++的材料整理到一起,成为比“C++课堂在线”专栏更加系统、全面的“学材”。

  何为学材?在学校里,学习一门课程,常会有教材。教材是教师在带领学生学习过程中需要用到的材料。教材是以教为中心的,学生在课堂上听讲,预习和复习都要看教材,学生的学是围绕着教师的教开展的。学材就是围绕着学生的学编写的教学材料,这样的材料可以用于学生的自学,也可以用于教学,只不过,需要教师的教是要围绕学生的学开展了。

  说起教学,要以学生的学习为核心。教师讲的、教材上写的,如果不能在学生的头脑中顺畅地形成他自己的看法,这只能是灌输。灌输解决不了程序设计学习的问题。实际上,灌输解决不了任何的学习问题。只是在实践中发现,被应试统治了的大学生,除了被灌输,不会别的形式的学习。有的老师的教学就是灌输,但是,有些时候,老师采取别的方法组织教学,有些人还是学成了灌输的味道。

  在“IT学子成长”专栏中,不少专业学习不顺利的同学给我来信,坦言的他们编程学习中存在的问题。在探讨中找到的应对方法是,将编程的实践进行下去。这对于有些人而言,说到做到,而对另外一些人而言,真的很难。在我如愿承担起计算机类大一同学的程序设计入门课程之时,我决定带领学生以实践为主线学习C++程序设计,解决学计算的学生学不会程序设计的尴尬问题。师生共同的积累(见《贺利坚的课程教学链接》中C++程序设计课程部分,不断地给我启示,有了将之写成系列文章的机会。

  在黄武雄教授眼中,学校教育做且只做两件事:打开人的经验和发展人的抽象能力(见黄武雄. 学校在窗外首都师范大学出版社.2009-2)。发展了的抽象能力,使人能够很快继承前人的经验,让自己的直接经验与不同时空下的间接经验相互交融和印证,从而能够真正掌握特殊经验和普遍经验之间的辩证关系,从而使人真正与世界联结,这将是一种最好的教育。接受过教育的人,似乎就应该是这样上下通达、无所不能的。夫子也说“学而时习之,不亦说乎?”。这里“学”和“习”不一样,“学”是取得知识,“习”为付诸实践。在夫子看来,得到了知识,并且经常应用,这才是愉快的事。这句话也说明了认识和实践的关系,说明了实践是得到知识的方法,实践和认识不能分开。于是有了茅以升先生倡导的“习而学”。他认为旧教育的弊病是理论与实际脱节,通才与专才脱节,科学与生产脱节,片面追求理论教育的“质”,严重忽视培养人才的“量”。他于1926年发表论文,主张“先授工程科目,次及理论科学,将现行程序完全倒置”,并且从学制、招生、课程等多方面,提出了大破大立的改革方案。新中国成立后,他撰写的《习而学的工程教育》等文章,强调按照人的认识规律,由感性知识入手,进而传授理性知识,先让学生“知其然”,而后逐渐达到“知其所以然”。通过“习而学”,就是让学生先通过实践获得感性认识,然后再进行理论学习,做到理论与实践的相互统一。这里的“学”和“习”,和孔夫子在“学而时习之”中的含义是一致的,核心是先有实践(习),再谈认知(学)。

  这个系列的特色就是希望能够将读者的学与习联系在一起,帮助读者在程序设计学习中,架起习和学之间的桥梁。

  明确两个问题:

  第一,用这个系列文章学习程序设计用的是C++语言。其理由是,我的日常工作就是被安排做C++语言教学的。入门学习程序设计可以是任何的语言,当然可以是C++。这个系列也就适合用C++C语言入门学程序设计的人。如果是自学者,感觉这个系列还可以看下去,也就选择C++好了。有人说C++太难,这种说法有一定的理由,这种说法也将一部分人吓了回去。事实是,C++并不是那样的难,关键是,是否能够用有效的学习行为面对学习这件事情。学习C++额外的好处是,真正地去了解各种程序设计语言的成分,以及由程序设计认识计算机系统。

  第二,这个系列是写给初学者的。这除了需要对知识进行有效分解,有些时候,解决问题采用的方案将不能用工程中普遍的方法。有一比,婴儿的消化器官尚未发育好,他的食物就该有别于常人。初时遇到问题,用最原始的方法解决了,可以暂不考虑算法在时间、空间方面的性能,不考虑结构的合理,解决了就是意义,这是找到感觉的必要。这一点,请有耐心读这些文字的“老鸟”理解。对于老手已经是内化于心的知识,其核心信息成为了一套说不清的严密的融合体系,成为常识了,但对于新手,这是第一次,他成为高手后,自然有能力抛弃不合理的解决方案。选择了针对初学者写作,我需要安排好知识的体系,同时,尽量地选择合适的问题,用合理的方案进行解决。

  再谈一下选参考书的事情。如果读者正在随着课程进展学习C++,老师指定的教材为第一读本。好书自然有其好,读书人的读书方式更重要。大家认可的经典书籍中,《C++primer》的声誉很高,我认为该书对语法细节抠得很细,这并不适合初学者,尤其是第一次学习程序设计的人。C++之父斯特朗斯特鲁普(Bjarne Stroustrup)C++程序设计语言》也是经典,语法全,讲程序设计的眼光也很高,适合对C++全貌已经有所知,且有一定程序设计体验的人,而对于初学者,可能由于读不懂受的打击会更大。初学者选参考书,我读过的最合适的是萨维奇(Walter Savitch)的《C++程序设计(8)》更好一些。这本书中合理地穿插了大量的自测题及参考答案,而且每一章都有大量的编程项目,方便读者实践。一定程度上,本系列文章走的就是萨维奇的路子,只不过材料来自于作者的教学实践,选用的题目、材料及教学方法等,是在与学生一起克服种种学习中的困难过程中形成的。

  作为前言,已经写得有些冗长了。这应该是一个工作量很大的事情,且需要利用份内工作之外的时间完成,但期盼着我能够协调好自己,争取以最快的速度将之贡献出来。跟随着这个系列完成学习的学子,代码行的积累也将达到1.5-2万行,这是一个能够让你找到专业之门的数据。

  采用了发博文的方式,其实也想借助读者的力量,帮助避免一些各种错误的产生。就此拜托读者,错误之处、不当之处,以及没有说清楚的地方,还请通过评论指出。采用这个系列学习的读者,请也在CSDN开通博客,将学习中写过的程序发表成博文共享。借助博客中的相互关注,我也将为读者解答学习中遇到的问题。 



回到系列文章的目录——[系列文章目录]



你可能感兴趣的:(C++程序设计实践学材)