路海长,青夜旷,越过群山追斜阳
路海长,青夜旷,越过群山追斜阳
写代码带给我的最大快乐,是它让我重拾了学习这件事原本该有的激动。在这之前的大学,上课,考试,完成作业,背诵知识点,这些事情在while(true)的循环中无限重复。为了多考一分,还会借来各种练习册,从打印店购买往年试卷来刷题。如此一来二往,学习就像是被迫从事的机械运动。常常是不明所以,不问缘由,只要是可能出现的考点,不假思索地照单全收。
放下教材,不再与理论纠缠,我要做的第一件事就是搞定自学。网络上的知识分享,视频讲解数不胜数,总是让人看得眼花缭乱。一些标题党、期末冲刺更是不胜其烦。转机发生在一个偶然的时刻,我抱着“就当练习听力”的想法,观看了一段The Cherno讲解C++的视频。我才意识到互联网中沉睡着未经挖掘的矿脉,复杂的语法原来是这样被设计出来的。在那一瞬间,我对教育第一次产生质疑:或许,学习可以不是这样的。你完全可以抛开所有的假设,不去理会课本中的定义定理,以一种更接近勘探的方式,走向知识本身。

帅气又充满智慧的技术大佬Cherno,有实力说精通C++的天才
下面的内容涉及一些专业知识,请允许我讲述这段深刻的回忆。
相信在大学里学过 C 语言的同学都记得,无论翻开哪一本教材,都会郑重其事地强调指针的重要性。事实也的确如此。奇怪的是,从国内大多数教材到B站热门视频,在一开始就会讲解指针是如何工作的,什么是解引用运算符啦,怎样对指针运算等诸如此类的内容。我不否认,这是必不可少的知识点。可你在第一次遇到这个新概念时,有没有想过:“这东西能帮我解决什么问题?”“为什么非要引入这样一种看似另类的变量?”这本应是再正常不过的思维逻辑,提出这样的问题也是自然而然。我曾多次翻阅课本,去B站上搜索,试图找到一个合理的解释。但是教材里,课堂上,却从不关心这些“无关紧要”的想法。我小小的疑惑也在教学大纲与考试内容的设定下没了后续。
直到一年后的暑假,我在印度老师 Abdul Bari 的《数据结构与算法》课程里,才第一次真正明白设计指针的缘由。首先,程序可以直接访问的部分是代码部分和栈内存,无法直接使用堆内存。所以需要一个指针来指向内存地址。其次,外部资源(如文件、硬盘、互联网)在程序外部,操作系统通过句柄或地址管理,指针是程序访问这些资源的唯一途径。最后,指针支持的地址传递可以直接操作数据,解决了值传递效率低下的问题。仅仅一段十一分钟的视频,却真真实实地坚定了我的想法:要想扎实学习一门技术,脑中的知识脉络绝不是被切割成不同分值的考试重点。也许一个不起眼的念头就可以让你顺藤摸瓜,编织出属于自己的思维体系。这本身理所当然,我却是脚踏实地学到的。尽管有些走样,我也渐渐掌握了其中原理性的东西,从四处碰壁中窥探学习的诀窍。在这里,我必须向 Abdul Bari 老师表达我最深的谢意。

油管算法大神Abdul Bari,除了口音挑不出一点毛病
于是,我从那种长达两年的“记忆式学习”里缓缓抽身,取而代之的,是一种更接近“探索与推理”的方式。自那以后,我便有意识地筛选国外开发者讲解的视频与书籍,有些国内出版的书本及教材则直接搁置一旁。这一决定不仅直接锻炼了我的听力(特别是印度的咖喱味口音),现在想起来,我也从中学到了太多重要的东西。这段学习思维的转变期,是我认知上真正的启蒙。如果继续像过往那样,按部就班,囫囵吞咽着抽象的理论,背诵僵硬的原理,学习的的兴趣早晚有一天会山穷水尽,索然无味。
我对于大学,原本并不觉得讨厌,甚至还怀着几分敬意。可当见识到国外老师的课堂与独特的教育方式,让我开始对考试上课这些玩意儿厌恶至极。它们是上头强迫我们做的事情。“嘿,赶紧上课去!”逼迫我在不喜欢的时间去做不喜欢的事情,我从小就无法忍受这一点。凡是学校强制学习的东西,我基本都提不起兴趣。我也告诉自己“这是非学不可的东西”,可每当大人们在讲台上以一种居高临下的姿态冲我说教,反过头来,自己继续复述着PPT上空洞的理论,我的心里只会涌起更强烈的逃离和反抗欲望。虽然我无力改变这一现状,但是在我看来,课堂或许不再是“传道授业解惑”的平台,而更像一场心照不宣的表演。大人和我们各自带上面具,一方表演上课,另一方来扮演听众。我们所有人都仿佛活在了楚门的世界里。

“第一性原理”在Elon Musk的访谈中被反复提倡,使我受益匪浅
倘若是我自己想做的事情,在自己想做的时间爱做多少就做多少,我会做得比别人更加卖力。对感兴趣的领域和相关的事物,按照与自己相配的节奏,借助自己喜欢的方法去探求,就能极其高效地掌握知识和技术。比如《数据库原理与应用》这门课程。说来就是去找一些免费的付费课程,结合chatGPT等工具,采用第一性原理,一点一滴地学起来。这一过程花费了许多时间,在学习方面也有了一些有限的长进,写出来的代码才拥有初步清晰的灵魂。虽然反复出现过错误,也曾为自己的愚钝而苦恼。但正因如此,学到的东西才更扎实,学过的知识才得以在实践中体现。

我的数据库老师Tim,看完拿捏Leecode困难题
当我能一步步推理出结果时,我有了某种感触,觉得找出了自己的学习方式。我深切体会到可以条理清晰地思考,不必考虑概念和定理,只从最基础的事实条件出发,集中精力组合推导出解决方案。这是多么美好的事情,又是多么遗憾的事情。我意识到自己在应试教育的体系下浪费了太多时间,灌输了太多无中生有的概念定义。所谓的专业名词不过是凭空捏造的文字,看起来望而却步的技术难点,也只是被一群教授带上了“高大上”的面具。从此也坚定了信念:“如此下去,日后我也能当好程序员。”于是,没有再发生“和同学继续无休止的保研内卷”这样的事。虽然如今我还偶尔萌生进入名校的念头,好拥有向别人吹嘘自己的光环。

《三傻大闹宝莱坞》有这样一个片段:兰彻在黑板上写下两个根本就不存在的名词,交给学生们去定义。当计时开始,所有人都低头忙于寻找正确答案,却没有人停下来,思考完成这项任务的意义。而在我的身边,这样的事情司空见惯。学校推崇的优绩主义像一股无形的水流,冲淡了学习的原始激情,谁也不知道这究竟是好事还是陷阱。我们习惯了去应付考试,去比拼分数,却很少有人问自己:学这些东西,到底是为了什么?曾经,人们坚信“知识改变命运”。可是在今天,人工智能正不断颠覆想像、重写规则,或许更贴切的说法是:“有用的知识,才能改变命运。”那些能解决问题、能创造价值的知识,才是真正的财富。
当我拿起望远镜,回望来时的两年。透过网络眺望那片无际的海面,天边的桅杆刺破摩天大厦的剪影。就在那一瞬间,我恍然看见一个从未被言说的真相:我曾经拼命摇橹、心驰神往的彼岸,不过是一场烟雨过后的海市蜃楼。
致谢
在学习的道路上,我得到了无数来自老师、开发者和作者的帮助与启发。除了文中提到的 Cherno、Abdul Bari 和 Elon Musk,还有许许多多优秀的开发者与书籍作者,他们的名字也许没有被写在这里,但他们的影响早已刻进了我的学习经历里。
虽然我们素未谋面,仅仅是通过网络和文字与他们相遇,但他们传递出的知识与思想,让我相信学习不只是一个人的孤独跋涉,它更是一场跨越时空的对话。他们的作品值得被铭记,而我也会始终怀着感激,继续走下去。
原创声明 :本文为作者原创文章,转载请注明出处。









