作者:invalid s
    链接:https://www.zhihu.com/question/21326179/answer/2532074457
    来源:知乎
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

    熟悉的人都知道,在下一贯反对死记硬背。
    因为在我看来,死记硬背逃避了真正去理解知识,是一种不负责任的逃课行为——这种行为必然导致你在将来付出惨重代价。

    因此,我也在不同的答案/文章中反复强调过,学知识一定要循序渐进、一定要把表层知识之下的脉络彻底掌握——掌握到你自己都已经独立的“从头发明”了一些简单算法时,才是学习《数据结构与算法》的时机。
    同样的,当你能够活用《数据结构与算法》教给你的内容、把各种知识随意的转换为算法时,才是进一步学习数据库原理、操作系统原理、编译原理、图形图像原理的时机。
    在此之前,你其实是没有资格碰这些知识的。你根本就不可能学会它们

    那么,再强调一次:夹生饭是理科学习之
    学习中一旦出现夹生饭,轻则理解出偏、工作中造成重大损失;重则彻底断绝你在这门课程上继续学习发展的可能——计算机专业毕业开公交做餐饮的多了,不怕多你一个。
    你爱浪费时间,随意。

    所谓“夹生饭”,就是那些你没有真正理解、不能在忘记后自发推导出来的东西。

    没错。在我看来,“会用”都不行,都是“夹生饭”;必须掌握思路、然后无参考的重新把《数据结构与算法》、操作系统原理、数据库原理等书自己写出来——可以存在疏漏,但大的章节必须有、也必须对,这才算学会了,没有夹生饭了。
    如果做不到,哪个桥段写不出来,就说明这个桥段是“夹生饭”,就必须重学、重新思考,直到真正吃透它——吃透的标志就是,哪怕扔下书十年不看,你提到什么,我照样张口就来;而且张口就来的内容虽然完全是我自己的语言、自己的推理,却和课本内容相互印证,甚至可能比课本更深入、更清晰(课本毕竟需要照顾初学者,因此很多东西会各自独立出来、并且做了简化处理、或者只给了原理性描述;那么你在实践中用过之后,理应给出更清晰更丰满的论述)。

    但是,很多人在学习中养成了这么一种恶习:为了欺骗自己,越是搞不懂的东西,他越要死记硬背下来;不光要死记硬背,还要天天说,直到那个诘屈聱牙的术语变得顺滑——啊,这东西,我懂了!

    你懂个屁。

    不要欺骗自己。
    把书本上的黑体字倒背如流,那是连皮毛都没学会;后续当别人讨论相关问题时,你是没有丝毫理解的可能的。

    学C/C++/Java/python,并不是把书背下来就行的——倒着背也不行。

    学会C/C++/Java/Python等语言的标志,是看到这段话,你立即就能写出代码:
    image.png
    不行?搞不定?真弱。
    来,这是提示——注意,看了提示才做出来只能算勉强及格哦。
    image.png
    还不行?继续提示的话,做出来就是不及格:
    image.png
    什么?抄代码?零蛋。

    优秀的、学有余力的,不妨试试这个:
    一个学校高一有八个班,每两个班有语文/数学老师各一名;每四个班有地理/历史老师各一名;教师A每周三要去医院,故他的课不能排在周三;教师B住的很远,故不能安排他上早晚自习——这个条件仅为示例,你可以照自己学校的实际情况制定条件——编程就是为了解决你自己的实际问题嘛。

    请写个程序,同时为八个班排课并打印课程表。要求课表安排合理,不要逼老师学分身术

    你能轻轻松松玩转这些,学《数据结构与算法》才简单轻松;不然……你压根就不知道那些人在神神叨叨的捣鼓什么——等你明白过来,这学期都结束了;而你,基本的循环这节课恐怕都还没补上来呢。

    接下来的数据库原理、操作系统原理等等课程,都是需要《数据结构与算法》的基础才能学的;结果你连循环都不大会写,独立实现一个课程表APP对你来说都还是哥德巴赫猜想……那你瞎跟着念经,能学到点啥?

    你看,一步慢,步步慢。
    怎么办?
    凉拌。
    癌症是绝症,没得治。

    嗯,其实理论上也还有机会——你从哪开始逃课的、哪里有了夹生饭,就从哪开始补课。
    你说我小学三年级开始就逃课了,那就从三年级教材开始自学——只要肯下功夫,只要能敏锐的发现“啊,这个词我天天说,其实并没有理解……从头学从头学”,那三四五六七八九高一高二高三大一大二大三的补起来,还是有机会的。

    好消息是,理科知识重在理解;因此三到九年级乃至高中的知识,在眼界开阔之后,你或许只需要一年半载就能补上。
    坏消息是,理科知识环环相扣,必要的知识缺一环都不行——缺了,你可能就只能反反复复的走弯路、甚至读了好几年都还是在看天书!
    比如,我学编译原理时,因为那本书太坑,基本概念都没有定义,因此在校读、毕业了带着书到工作单位继续读,读了五六年都没有寸进——直到遇到“龙书”,补上了缺失的基础,我才明白自己读不懂学校那本烂教材的原因。
    你看夹生饭可怕不可怕。

    当然,理论上有路,可你有没有这个决心、能不能找到另外的一到十年从头补;尤其是,能不能敏锐的识别出“啊,这里我是不懂装懂,不行,夹生饭,我得从头学”,就全看你自己了。

    注意,最可怕的魔鬼来了:怎么知道某个知识是不是被自己学成了“夹生饭”呢?
    很遗憾。刚学到这个知识的时候就是最佳时刻。这时候学岔了还容易发现;但一旦过了多年……
    嗯,就我学编译原理那个例子:当你拼尽全力学习、学了N年毫无寸进时,这就意味着你可能有夹生饭了
    但究竟“夹生”在哪里,如你所见,自己是不可能知道的
    你欠账越多,梳理起来越难。
    正因此,我才说“夹生饭”是癌;一旦出现,你经常就只能被它空耗到死,怎么努力都没用。
    除非你“欠账”不多、又巧遇“贵人”帮你点透、让你意识到这个险恶的、自以为懂了其实没懂的陷阱存在,你才可能脱出;一旦欠账过多,很可能你看多少遍,对习惯性错误都还是“熟视无睹”;甚至,谁给你点出来,你还会仇恨他——因为他把你贬的一文不值。

    没错,一文不值。这才是“夹生饭”最可怕的地方。
    这是因为,理科概念的环环相扣的;那么,一个概念出错,肯定会连带着歪掉一大片。
    一颗夹生饭的后果,就是带的一大片知识都是歪的;这些歪着的知识自然也是“夹生饭”,那么它们自然会带歪更多……而这些知识既然是歪掉的,那就意味着它极其的反直觉、极其的难理解、难记忆;因此你必须付出十倍百倍的努力,才能建立起一个歪掉的、坑自己一辈子的体系
    而要纠正这一颗夹生饭,代价就是毁掉你好不容易建立的整个错误体系。

    完全不理解的东西没那么可怕,最可怕的是你觉得自己理解了其实没理解的那些知识。
    这些知识会彻底带歪你,让你越学越倒退、越学越茫然——因此,我称之为“癌”。

    一旦学成这样,非大决心、大毅力、大智慧,是不能从中逃脱的——但如果你真有大决心、大毅力、大智慧,从一开始你都不可能接受夹生饭,因为它和其它知识是如此的格格不入。
    因此,当你学歪后,你的不那么大但的确有的决心、没那么强但仍然存在的毅力、有一点但并不怎么地的智慧,反而会变成一种叫做“死犟”的恶劣品质,纠正起来反而比庸人更难百倍。

    重点:
    因此,我学东西就喜欢忘。学不会就忘掉从头来;觉得自己学会了,也忘掉,自己从头推导——推导出来了,就说明真学会了;否则,宁可忘掉。因为,那就是可怕的“夹生饭”。
    这不是扯淡。因为错误比无知离真理更远。
    你看,睡一觉,把学岔了的知识忘掉、于是反而得到了进步,还有比这更合算的好事吗
    所以我就喜欢夸自己“记忆力差”,这真的是吹牛,是自夸——但听到的人总以为这是自谦……
    并不是。对理科学习来说,“忘性大”是一个非常珍贵的好品质,因为它能逼你“理解记忆”、逼你一次次冲刷你心中的理论体系,直到它无懈可击。


    总之,既然“夹生饭”是癌,那么得了癌、又闹扩散了的,存活率自然不可能有多高。
    好消息是,因为老师鼓励逃课,因此绝大多数人的水平都没多高。你能补上大一的课、哪怕写不出课程表,也足够找一份码农工作了。

    最后,不得不再提醒一次:
    image.png
    当然,哪怕你真的学到了万事俱备、看操作系统原理、编译原理像看小说一样简单;也请谨记:学习任何知识都是一种冒险,都需要一个从未知到已知的过程;理解对了,冒险成功,学到了新的知识;理解错了,就可能学成夹生饭。
    因此,“君子博学而日三省乎己”,只有不断的接受新的知识/事实的冲击、及时更正自己头脑中不太正确的概念,才能避免学到错误的东西。这个“自净”过程是一辈子都做不完的。
    但另一方面,当你尽可能把知识成体系的组织起来、方便它反复接受事实冲击验证时,“夹生饭”的问题就没那么严重了,因为它存活不了多久就会被你发现和淘汰。

    换句话说,知识越成体系、越能相互印证,它的质量就越高,就越能抵抗“夹生饭”的侵蚀。
    这也正是我极力反对死记硬背的原因。因为死记硬背的知识是不成体系的;不成体系,就无法相互印证,自然也就不可能有“自净”能力。