C语言编程之背和理解间的关系
对于程序设计,我们和同行的见解是:背程序是非常困难的,最好是理解并记思路。
“背”和“记”其实是同义词,只是“背”很多时候带贬义,特别是经常提到的“死记硬背”。我们从不提倡并且反对死记硬背。
你说很多同学都靠背过了,你怎么知道他们一定是死记硬背而不是理解了、记的思路呢?你怎么知道他们背之后能否灵活运用呢?如果有人背下了很多东西,但不知灵活运用,这是死记硬背,但若能灵活运用,这就是掌握了、消化理解了。
记(背)是理解的前提和基础,说某人见多识广、经验丰富,则他的记忆力一定很好,一定是他的记忆里记住了很多东西(某类事情该怎么处理、人家是怎么处理的、需要考虑什么意外、程序算法要考虑哪些问题、该怎么设计)并能灵活应用,否则,见得再多,也不能识广,经验书上的经验、别人的教训记得再多,也不能成为经验。
记(背)也分多种,也很讲究背法:自然而然记住(童年的回忆),因为教训或印象深刻而难以忘怀(如某件事重复多次),纯记符号(不知其含义)的死记硬背,理解性的记(背),背大体思路(小思路其实也知道,但可在多类记忆中通用或举一反三应用),速记方式背…。
我们反对的是纯记符号(不知其含义)的死记硬背,强调的是背的同时要搞懂。当然,有些东西也可能“搞不懂”,只有记住——但应以此为基础灵活运用,使用打开文件用fopen、定义结构体要先写struct,就没有什么道理可讲,只需记住需要打开文件就用fopen、需要定义结构体就先写struct这样做就行,用多了也就自然而然的习惯了,也不会有什么困惑。
背程序很难,既然要花那么多时间,为何不把它弄懂、理解并记(背)思路呢?
“背”和“记”其实是同义词,只是“背”很多时候带贬义,特别是经常提到的“死记硬背”。我们从不提倡并且反对死记硬背。
你说很多同学都靠背过了,你怎么知道他们一定是死记硬背而不是理解了、记的思路呢?你怎么知道他们背之后能否灵活运用呢?如果有人背下了很多东西,但不知灵活运用,这是死记硬背,但若能灵活运用,这就是掌握了、消化理解了。
记(背)是理解的前提和基础,说某人见多识广、经验丰富,则他的记忆力一定很好,一定是他的记忆里记住了很多东西(某类事情该怎么处理、人家是怎么处理的、需要考虑什么意外、程序算法要考虑哪些问题、该怎么设计)并能灵活应用,否则,见得再多,也不能识广,经验书上的经验、别人的教训记得再多,也不能成为经验。
记(背)也分多种,也很讲究背法:自然而然记住(童年的回忆),因为教训或印象深刻而难以忘怀(如某件事重复多次),纯记符号(不知其含义)的死记硬背,理解性的记(背),背大体思路(小思路其实也知道,但可在多类记忆中通用或举一反三应用),速记方式背…。
我们反对的是纯记符号(不知其含义)的死记硬背,强调的是背的同时要搞懂。当然,有些东西也可能“搞不懂”,只有记住——但应以此为基础灵活运用,使用打开文件用fopen、定义结构体要先写struct,就没有什么道理可讲,只需记住需要打开文件就用fopen、需要定义结构体就先写struct这样做就行,用多了也就自然而然的习惯了,也不会有什么困惑。
背程序很难,既然要花那么多时间,为何不把它弄懂、理解并记(背)思路呢?