Skip to main content

一个普通人的cs学习道路

· 19 min read
ayanami

2024年或许是回旋镖元年。

再重新整理出这篇文章的时候, 我也是过了一年多的时间了。这篇文章是刚上大二的时候写的, 现在回过头来看, 无疑充满了回旋镖, 那个曾经觉得cs就是奇绝瑰伟、基础架构就是开天辟地、cs道路留有千万条待有兴趣者探究的我也不复当年的心境。说实话, 我也不知道我将来会去做什么, 一年多的时间让我对很多的方向都逐渐“祛魅”, 迫近的实习科研压力也让我对cs的热情逐渐消退。我还是喜欢着计算机的,只不过那些年少的放言已经如同奔走的风,再也不会回来了。

而再看我当年的文字, 另一个狠狠的回旋镖是我发现我当时确实有点在我一个学期后和一些其他人所警惕的“技术崇拜”的风气, 神化名词, 神化个人的努力与学业上的某种天赋, 小朋友过早的看了这些未必是一件好事。我希望下面的内容里面传递的是一些“经验性”东西和“立志”的精神, 而不是内卷和焦虑的风气, 当时也有人指出过这一点, 可惜意气风发?(或许是金课上多的义愤填膺, 笑)的我没听进去。何况现在在看, 当年认为的“神”并没有我想象的那么超凡脱俗, 生活中除了技术之外的东西也有太多, 或许从来没有天才, 只有永远在和生活搏斗的普通人。

现在的大环境是否还允许满腔热血的底层少年入伙呢?我不知道。我当年提到的星爷已经转了后端, 我自己也看起来不做基架的样子, 一起刷课的朋友做基架的也承认国内前景确实一般(但也很好笑,所有非AI方向都是一副难评的样子), 打算到国外去做DB。

当年的心境宛如 “拿起笔, 想写点东西, 以为是武器能伸张正义” 现在的心境却是 “我想要说的, 前人们都说过了; 我想要做的, 有钱人的做过了”

总之, 我觉得这篇文章应该发出来,我再也写不出差不多的东西了, 但也必须要注意它写于2023年, 来自一位刚刚转专业面试结束, 心血澎湃的大二少年

由于涉及到了一些隐私,有一些删改。以下ABC等均为化名。

Last updated: 2024-11-2


文:

先前看到A说我之前的帖子有些热血漫的味道,我其实还挺开心的,因为我始终觉得我们现在缺乏那一种热血。大环境的低落让很多人丧失了锐气,我完全理解,甚至自己就是这样,但是我总是更崇敬和憧憬那种“直面生活淋漓的鲜血”的人

扯远了,我想说的一件事情是,其实大家都是普通人

不普通的人是怎么样的呢?我举个例子

莎莎(工业学术两开花,学术上去年OOPSLA,千年ICLR,工业上代码被amazon accept,github 1w+ star; 自传之中初中开始拿上课时间学cs还能考到成外前几,美本大一和phd谈笑风生):

这种天赋是看得见的,我记得之前知乎还看到了高一数学发顶级paper的,反正看不懂一点的水平;还有某位我的高中同学,小学四年级竞赛省队(年龄小取消成绩),初三准高一时,丘赛全国第一,被丘成桐亲自见面,然后好像也是去年的数竞世界第一。

但“普通人”就只能仰望了吗?生为普通人的我们能做点什么呢?

我不太想学着高中老师的腔调,给自己或者是源u灌着努力的鸡汤,因为我自己就远称不上足够努力,但我想说的是,相信自己所走的道路

或许,我们的生活有除了在课内的分数之中苦耗的另一种方向。

(当然不是说可以完全不管课内成绩,或许生存手册作者有这种能力)

引用生存手册所言

挖空心思研究解题技巧的学生们,与同样挖空心思研究出题技巧的老师们,构成了一个完美的圆环。

....

学习最需要的,不是悲壮的毅力,而是对无限未知的渴求

​ ——From 生存手册:悲壮的学习方式

在打着各种华丽口号的诱惑面前,我们要保持清醒,并且时刻告诫自己

总有更值得做的事。

​ ——From 生存手册:总有更值得做的事情

安排时间道理真的很浅显:成功人士往往会津津乐道于他们在校期间锻炼出的专业素养,但几乎没有成熟(甚至不需要成功)的人,喜欢炫耀自己当年高数考了年级第一。

​ ——From 生存手册:正确地浪费剩下的时间

再来列举和我同届的,在某校外cs群聊之中见到的几个“普通人”:

星爷(b站 降星驰, 专栏有详细的学习经历):

哈工大22级

2022年8月17日,完结cs61A(程序的构造与解释)

2022年10月8日,完结cs61B(数据结构与算法)

2023年1月1日,完结cs61C(计算机体系结构)

2023年3月28日,完结cs70(离散和诸多计算机进阶数学)

2023年8月23日,完结6.S081,OSTEP, jyy os(操作系统:国外+国内,jyy os更是以难度著称)

2023年9月26日,完结6.031,csc151,cmpt379(软件工程和编译原理)

至今(2023年11月?),又学完了计网, 别的细碎的我就不写了

其中,lab,proj, homework甚至考试全写,一年时间,几乎走完了科班的前三年

川流(知乎https://www.zhihu.com/people/riemann-32-30)

深圳大学22级

以下节选自知乎文章

6.s081已完结,CMU15-445已完结,MIT6.5840 Lab4 未完成(过于复杂加没时间写)

CS:APP已完结,OSTEP已完结,Data Structure And Algorithm Analysis:已完结

Computer Organazation and Design : The Hardware Software Interface : 已完结

Unix Network Programming:看了两百多页, DDIA:开了个头

Understanding The Linux Kernel:当字典翻

Database System Concepts :把15-445要求的那些看完了

xv6 book:已完结

C++ Primer:看了八百多页,半途而废

C++ Template 2th:看了一百多页,当字典翻

Effective Modern C++:看了一半,还在翻

论文:MapReduce, GFS, BigTable, Raft, Percolator, Spanner, Zookeeper, FaRM, Dynamo DB已完结

LSM Survey

WiscKey: Separating Keys from Values in SSD-conscious Storage

半途而废的:

Zanzibar,Spark, SUNDAR

开源代码

Leveldb(大致能理解整体框架,大部分代码已看完)

Rocksdb(太tmd复杂了)

Apache Doris(只会点冷热分层的东西,有做过相关issue)

力扣:

116道


看到有没有觉得一些震撼?

反正我是被震撼到了,这两位大学之前也都不算有很多基础,星爷每天学大概6小时,川流说TA能每天学13个小时cs(群里show过一个月平均每日20分钟左右的手机使用时间)

在cs这样一个对时间相对公平的环境之中,谁又能说努力不是一种天赋呢?

一年下来的蜕变,可能远超过自己的想象。


我又想起了先前B在骂交大连个python都不教

可深大会教如何让人一年变成川流吗?哈工会教如何让人一年变成星爷吗?

打着交大的牌子,我又会什么呢?

如果说得难听一点,真是:感觉不如双非,都不用继续举这两个例子,群里不少双非老哥水平真不差。

人与人的差距远大于人与学校,而交大的同学并不是没有这个天赋,而是被各种宣传的活动、无聊的金课、无用的内卷所裹挟,而忽视了这条少有人走的路

我承认这一条路上只有自己,没有助教,没有老师,甚至没有同学和成绩,但这条路有着非同一般的价值


说回我自己

在夜深人静的时候,其实我emo了很多次

为什么我们交大对普通班的学生没有成熟的助教体系?为什么我们上了一年课还不知道自己专业在学些什么?为什么有些开的课程能让一个大一的学生从直觉上都感觉是答辩?为什么没有自己选择的自由?

我看了不下20次21级转专业经验,不下10次生存手册,不下10次SJTU微电子指北,我想从这些前人的经验里面去寻找答案

在夜深人静的时候,我想着自己的水平和学积分,想着那似乎遥不可及的专业和恢弘的学科,在水源上不记得多少次从0点搜索【转专业】【软件工程】【SE】的tag直到4点;不记得多少次深夜无法入眠,趴在床上看知乎的cs技术帖、前景帖、科普帖、牢骚帖;

我自知绝对是普通人的水平,而普通人的学习takes time

It takes time

It takes time

然而交大没有给同学们留足时间,于是只能自己挤出时间,比如我进步最快的时间就在于那个暑假

而付出了时间+正确的道路,它会改变的


最后讲讲可能的自学道路,对于cs一脉的转专业学术,我认为早日自学国外课程早日超生

暴论:国内的大多数网课的质量(除去少数课程外)连给国外对应神课提鞋的资格都没有

最王道的版本:程序设计、数据结构、体系结构——操作系统,编译原理,计网,数据库——自行再进阶

cmu15112/cs50 ——cs61A(如果基础还行,可以跳过前一个)——cs61b——cs61c——6.s081——compiler(如,cmpt379)——stanford144——cmu15445——.......

我的经历已经证明了,只要刷完abc,起码码力上不会吃太多亏,要是一年像星爷那样刷,我相信SE的老师会对你复现21级的经典

"你是怎么做到大一一年学习这么多东西的?" ——From tmp的面试

自学的时候多用google、stackoverflow等, 多搜多问,积累优质网站资源,有空看看蒋炎岩的一些cs鸡汤(搜索:nju PA, 开始几篇就是)。知乎+google+qq群+学长+......

最后,贴上我很喜欢的几篇知乎文章,或许xpy们可以看看(我强力推荐):

https://zhuanlan.zhihu.com/p/84927997 魔理沙《半条命》

https://www.zhihu.com/question/471105298/answer/1995471916 魔理沙:如何看待2022年秋招Java后端开发岗一片红海?

https://www.zhihu.com/question/21326179/answer/2532074457 invalids 夹生饭

至于网课资源,csdiy,请

附上一个群佬们的对csdiy的补充

除了csdiy之外的一些其他课程

计网:https://rrc-uiuc.notion.site/Communication-Networks-51d2dd4fd9c44fcdbcf6a67a86237e0c cs438

https://cs.brown.edu/courses/csci1680/f22/assignments/ cscs1680,据说非常难

rust并发:https://github.com/kaist-cp/cs431

https://www.bilibili.com/video/BV1Xp4y1w7xG/?spm_id_from=333.337.search-card.all.click&vd_source=85acf0a59ded02e4c75ae1158baca207

PL&compiler: nju软件分析 b站

nju编译原理http://docs.compilers.cpl.icu/,某佬强推

cmpt379:据说最友善的编译原理,某佬强推

交大的IEEE的课,不知道哪里有资源https://jhc.sjtu.edu.cn/public/courses/CS2612/,某大佬强推

计组:csci0300,某佬强推,非常软件的计组,据说proj设计得很好

https://cs.brown.edu/courses/csci0300/2023/schedule.html

cs4414 康奈尔的csapp,也是某佬强推,教授是云计算超级大牛

http://www.cs.cornell.edu/courses/cs4414/2023sp/

storage sys https://animeshtrivedi.github.io/course-stosys/

哈深os, 好像仿照的6.s081 https://hitsz-cslab.gitee.io/os-labs/

游戏开发:cs248, mit6.837,cmu15462, 15869

物理和数学:https://www.diegovera.org/resources-1

数据库:mit 6.830

c++导论:据说萌新引导做得很好,cs103 https://bytes.usc.edu/cs103

ucb latex(逆天,这课都有):http://persson.berkeley.edu/math124

算法:http://web.stanford.edu/class/cs97si/ 古老的算法课,但据说不错

https://cseweb.ucsd.edu/~dakane/CSE101

前端:https://fullstackopen.com/zh/

blockchain:https://cs251.stanford.edu/

shell: https://decal.ocf.berkeley.edu/

附录:

技术文章摘抄:

http://learn.lianglianglee.com/ 大佬推荐

什么,你问我这么多资源哪里来的?

我是真的0基础欸,我相信从csdiy起,github,知乎一些sjtu学长的关注列表,关注列表的关注列表......各种地方多看看,大家都能找到一些的,

最后贴一个魔理沙的回答的全文

知乎cs大佬魔理沙的编程之路是什么样的?

圆角骑士魔理沙

计算机科学已经有六七十年历史了,这段时间内书写历史的人不在小数:图灵,冯洛伊曼,Dijkstra,John Reynold,Tony Hoare,John McCarthy,Alan Kay。。。有的人生怕你不知道谁做出了杰出奉献,专门弄了个奖出来呢:)!

你如果真想向更强的人学习,图灵老冯哥德尔都有传记,尽管我没看过,也不知道年代久远的天才有什么借鉴之处;ACM每年都会请图灵奖得主来做freestyle演讲,有展示自己领域的一个漂亮的idea的(Reflections on Trusting Trust),有总结自己所在领域的(Principles for Computer System Design),有当场开创新领域的(Can programming be liberated from the von Neumann style?),有对编程跟设计做出foundational comment的(The humble programmer, The Emperor’s Old Clothes),还有让我们rethink computer的(The Computer Revolution Hasnt Happened Yet)。

如果嫌一年一次的演讲太短,学不到太多,上面所述的很多人都把自己的人生经验整理下来了:Richard Hamming写了本教你如何规划学术生涯的书(The Art of doing science and engineering),Dijkstra的一生所著被整理进了EWD Archive,里面的精品除了The Humble Programmer,还有A case against the GO TO statementProgramming considered as a human activityOn the cruelty of really teaching computing science。Alan Kay则每过一段时间发个视频上youtube(Power of Simplicity

领域相关的也有很多:在编程语言领域,History of Programming Languages 把这半世纪的杰出的编程语言设计者的见解汇集在一起, Dealers of LightningThe Dream Machine 则描述了改变了世界的Xerox Parc的文化。如果你看的paper足够多,你可以从里面倒推出一个researcher的taste:比如John Reynold就很软,能把多种风格混合在一起(https://zhuanlan.zhihu.com/p/42907876),同时能在很脏的领域做出严谨的工作(Seprational Logic),我就很喜欢。

如果嫌这些人都是上世纪的,很多成功人士也有blog,教你如何做research,如何申请大学,如何规划career,还有自己领域的见解:http://www.pgbovine.net/https://programanalysis.blogspot.com/https://existentialtype.wordpress.com/http://worrydream.com/http://matt.might.net/

我一个小本科生,拿啥跟上面的人比,也就比普通人更努力点更早学编程而已,没什么好讨教的

我相信,我们更努力点学编程,也能触及另一片天空

Loading Comments...