天天看点

再会,旧时光——软工热身作业

项目 内容
这个作业属于哪个课程 2020春北航计算机学院软件工程(罗杰 任健)
这个作业的要求在哪里 第一次个人作业
我在这个课程的目标是 系统学习软件工程,在实践中获得个人提升
这个作业在哪个具体方面帮助我实现目标 回顾过去,温故知新;展望未来,规划行程

第一部分:结缘计算机

你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?

有时候我也会问自己,对自己生活的模样是否还满意。

我还清晰的记得那个夏天,那个许多年来唯一一个刻在我骨血里的夏天。

我相信天赋这件事情,所以理所当然的成为了其忠实信徒,也就没有像大多数人一样,囿于纷繁的专业中无从选择。

物理,是我高中时学的最痛苦的科目之一,我几乎完全无法理解其中的奥妙何在,以至于我将高三复习的绝大部分时间双手奉上,却依然热脸贴了冷屁股。因祸得福,想选择一门靠技术吃饭的活计,又不需要学特别高深的万物之理,我的视野里只剩下了医学和计算机。

我是一个喜欢搜集信息的人,喜欢那种掌控了全局的感觉,所以我请教了许多前辈。

不谈人,只谈结论。

她说:“做医生要熬得住,快钱是没有的,但越老越吃香。”

我觉得,逐渐被生活招安,不如趁时光未老,斗它一斗。

于是我把目光投向了计算机。

作为一个与计算机的关系只停留在游戏的高中生来说,我也算是初生牛犊不怕虎了。带着对这个领域完全的未知,也带着家里人若有若无的埋怨,我终于是填下了高考志愿书。

现在想想,若是换条路走,我也只是走到了学校对面而已。

为什么选择计算机专业?自从写下一纸志愿,我已经思索了三年了。

为了工作吗?高薪、996、快节奏,这一点也不美妙,只不过是另一种形式的血汗工厂罢了。为了地位吗?“码农”这个词可不是用来夸人的,这个专业成功的让农村户口转了城镇户口的人们,又遇返“农”潮。为了梦想吗?这个似乎最靠谱,毕竟“科学家”,可是孩子们最常见的梦想之一,计算机科学家当然也可以是。

我不得不承认,我内心深处是藏着这种悸动的。当初,我告诉自己,要赚快钱,否则等到七老八十了,年薪上亿又如何。可现在,我莫名的觉得自己应该去做一些事情,我对探寻这个学科的真理越来越感兴趣,我想继续研究,我想深入探索,我想与它结合地更紧密。或许那时我功利誓言的伪装下,潜藏着的真实是与热爱撞了满怀。

但我又只是一个,仅仅对计算机中的游戏有些许了解的孩童。我曾以为大家都是差不多的起点,后来发现,不光起点不同,起跑时间亦不同。入学几年来,最耀眼的人甚至在我还未曾接触过计算机的时光里,就已经着手学习第二语言——计算机语言了。而给与我最深的体悟是,我不光没有通过几年的修行,与他们拉近距离,反倒是越来越远了。如果让我给这段旅程下一个定义的话,我会说,尚可的条件,取得了尚可的成果,但仍需努力追赶。

其实,

真正的方向,

是自己决定,

不由别人左右。

——博客1

我们眼前总是有着阳光的,我们朝着他们走,感受到的是越来越瞩目的光和热。但其实,每个人都曾是冥冥长夜下的石子。或许现在看来,有些人确实光彩夺目,他们的人生历程是我无法复制,无法企及的。

纵有千般不如人,亦有万途通罗马。

计算机是你喜欢的领域吗?是你擅长的领域吗?你热爱这一专业吗?你对计算机的热爱是怎样的?仅仅是口头的吗?

我相信,日久生情不是对妥协之后的矫情,而是一如既往赤诚的热爱。我喜欢计算机领域吗?喜欢,我擅长它吗?我想应该没有任何一个人可以说自己擅长这个瑰宝。

#include <stdio.h>
int main() {
	printf("Hello, world!");
	return 0;
}
           

我们都从这里来,但谁又知道,它的结尾是什么呢?

我们只能如沙滩捡拾贝壳的孩童罢了,秉持着热爱与敬畏,在这片沙滩下一往无前。

虽千万人,吾往矣。

与君共勉。

第二部分:在计算机系里学习

你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。

如果说槽点的话,确实有很多。

高中的理想如此简单:上清华,考北大

——博客3

最初的年少轻狂,让我错误的以为自己可能摸到清北的门槛。可后来才发现,自己只不过是芸芸众生中最普通的那个。第一个槽,吐的不是大学生活,是我自己。本以为努力学习的大学生活,可以给我充实感,可不断失败的挫败,却让我有些许恍惚。但谁又不是口嫌体正直呢?矫情地说着自己没啥希望了,手上的活计却依然干个不停,不能不说是一个很好的槽点。

雪崩的时候没有一片雪花是无辜的。

谁又能想象,信息大类的学生,在那一段时光,学习飞机理论的热情超过了两航?或者是在本该休息的日子,手不停笔地誊抄物理实验报告?

目前大学教育的课程设置陈旧腐朽,建议选择性学习。

——博客2

我们想选择,我们没有选择。

而同样的,内卷带来的痛苦也是难以忍受的。纵使口中说着“他强任他强,明月拂山岗”,但谁又能在这卷集着攀比的浪潮中独善其身呢?这不过是徒增对大学生活的吐槽罢了。

如果说,现实中的大学教育差强人意,为了政治正确去迎合形式主义,那么理想中的计算机专业,在我看来当是剔除了那些于己身仅有浪费时光之职的科目。也许有人说,这样做的结果就是极度缺乏人文关怀。但少做了这些徒劳的事情,我们自然可以把眼光放在令我们更感兴趣的事物,譬如我,甚是喜欢文学艺术,那文学与计算机碰撞出来的火花,叫NLP。

我是向往着出国读书的,原因无他,只是想多见见世面。而我内心也深以为,那边不会有太多形式主义的课程,诸如政治思想教育、航空航天概论都不复存在。但我也必须承认的是,对于学校,对于教师,水平当是同一层次,所以若是不考虑其它因素,于我来说,还是愿意相信我的学校和我的老师的。

迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。

回顾大学生活至此,我已经写了很多代码。譬如计算机组成原理,譬如操作系统,譬如编译原理。

仔细算起,仅仅是课程内的代码,归总起来也差不多有上万行了,更别说课外自己尝试的一些新奇事物,当然,这其中不乏不作数的废品,但确实也是成长的经历。或许这对于计算机行业的人们来说,只是起步,可仔细想想,在过去的大学日子中,我确实挣扎在这代码浮沉。

趁着印象还算新,我想谈谈编译原理。

虽然计算机组成原理的代码数量比编译原理要多一些,但在我看来,我更加难以理解的确实是编译原理。

从最初的文法设计,到词法分析,再到语法分析、错误处理,最后是生成mips代码,说实话,网络的发达让我有了一些参考资料,不然仅凭我自己,我是绝不能完成任务的。

文法分析和词法分析过于简单,不再赘述。

我是在十月一回家的火车上完成了我的语法分析的。我清晰的记得重构的次数,三次。令我改动次数最多的,当然是“表达式-因子-项”这个魔鬼。由于当时对其理解的不深刻,在写递归嵌套的时候仅是想到什么写什么,最后成了惨不忍睹的结局。

再说说错误处理。

一个计算机科学家走进酒吧,要了一杯啤酒,要了一杯咖啡,要了2^32个鸡腿,要了一份#%#……#@56,要了NAN杯NULL, 酒保从容应对。最后他问厕所在哪,酒吧炸了。

我花费了整整一周的时间,去定位到底是输出行数不对,还是错误类型不对。我不光不知道客户的需求能有多恐怖,课程组的需求我也不知道。本来规整好的代码,因为错误处理的不规整,又变成了散乱的一摊。而这时候一两千行的代码量,调试起来的感觉让人酸爽。

完成了这次作业之后,我取了巧。

因为生成mips代码不需要检测错误,一定可以运行。所以我删掉了错误处理。饶是如此,我也研究了很久才写出了最后的部分。

我得规划变量的地址,得规划寄存器的分配,得记录变量的值,一切的一切。成功的让它庞大的身躯,又增长了近一半。

最后为了竞速,还进行了不计其数的优化。

也许是为了仪式感吧,我把留存下来的最终版本统计了一下,4388,听起来像某个游戏网站。

让我最费解的部分不光是错误处理,还有优化。

在当今内卷的大环境下,大家会为了几分的差距在群里大吵特吵,或许写出来的编译器没有error,但我们都要思考自己的warning。

科班出身和北大青鸟有什么区别?速成的培训班和打基础的大学教育还有mooc之间有区别吗?

我是科班——却没学懂计算机

是了,科班出身和北大青鸟有什么区别呢?和mooc又有什么差距呢?

这是争论已久的话题了。反正最后都是要沦为码农的,科班码农和培训班码农,谁的血统更高贵,又如何呢?抬头不见低头见的。

有的人说,培训班的人,不学基础,像万丈高楼却无筑基,还有人说,科班的人,太重基础,技术实力差距明显。

虽然我没有学懂计算机,至今我还是只能照本宣科的谈谈算法,谈谈计算机体系结构,甚至还无法流利的表述清楚自映射是什么,也无法完美的处理错误。但我不得不承认,科班教学的重视基础,给了我对于这一行业的热爱。

我相信,如果不是通过基础的学习,我是不能很好的触类旁通的。当高中同学请教我从未学过的语言时,才是科班教学体现出优势的地方。也许我不懂那门语言,但简单的了解,便可以帮他理清思路。基础教学,重在于此。

当然,也不能说科班就比非科班有优越性了。

但遗憾的是,我和大部分我的同学们,就这样,因为缺乏必要的指导,迷迷糊糊、庸庸碌碌地过完了本科。

确实如此。大部分人其实都是在庸碌中科班,那似乎比非科班也没有优越感。甚至可能由于非科班高强度的代码训练,科班庸碌者与其相比更应觉得惭愧。

所以,在我看来,科班与非科班,本无区别,区别在于人。

学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?

至于学习数学类课程,我向来是比较赞同的。

记得听过比较经典的段子:

某大学数学系为了招生,打出的旗号竟然是容易转行计算机。

确实,你不学习,机器学习。

离散数学、概率统计,和我们有关吗?或许每个人都有这个问题。但是我想大部分人都不会觉得机器学习和自己无关。我们或许可以算出,我们,概率统计,机器学习的相关系数矩阵。

即使不谈当下令计算机专业狂热的人工智能领域。于我来说,“数学无用论”与“学习无用论”的信徒等同,非傻即坏。

就好像我在之前说的,我们都是口嫌体正直。嘴上说着不想学习数学,其实乖乖享受着它的美感。

但轮到其它学科,也一如我之前所述,思想教育?航空概论?物理实验?我只能说,不可以,也没必要。

要是大学能重新来过一次,我会少读一些书,多读透一些书,这可能是我觉得当年猛读书的唯一遗憾。

——博客4

当然,数学自然属于后者,而上述种种,则是前者。

第三部分:未来规划

对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?

数旬苦研凝剑意,多载丹心逐北辰。

如之前所述,我的梦想,还依然和童年时一样。

对,我依然想成为一个科学家,一个计算机科学家。

兴趣能让你开始让你执着,但只有喜爱才会投入热情,只有投入热情才可能会出成绩。

——博客5

我是一个喜静的人,又是一个喜研究的人。所以私以为,最适合我的职业便是去做研究。在我的想象中,能够成果出国读研,读博,然后或是进入私企担任研究员,或是进入研究所。至于研究什么呢?在这方面我并未有过挑挑拣拣,因为在我看来,研究本身,就是令人着迷的事物。

谈及技术道路,我对于自己的评价是,半步入门,所以似乎每一项技术都对我有十足的吸引力。那么走哪一条呢?趁着年轻,多实验实验就知道了。

至于社交,我是不擅长的。所以也就没有多少思索,或许与三两志同道合的好友,能谈天说地就好。

你对于实现自己的梦想已经做了或者计划做什么样的准备?

30岁以前,踏踏实实地学习。学技术,学做人,学做事。30岁以后再谈自己的发展。

——博客6

如果说从小梦想开始,便是出国。从初入大学便被塞进脑子的这个直念,至今没有甩脱。我考了GRE,又在准备托福,保持还算可以的GPA,又热情参与科研。

但我深知,我的梦想还很遥远,即使不谈多年后的科学家之梦,饶是出国,也并非坦途。“革命尚未成功,同志仍需努力”,接下来尽我所能的,继续科研,或许还能蹭上论文的发表;继续学习英语,或许还能为之后出国减少交流障碍;继续学习技术,即使学分满足毕业要求,也要持之以恒;继续保持热爱,即使梦想还很遥远。

你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?实习经验究竟有多重要?是否需要马上开始积累实习经验?

实习,并不是马上面临的。从大二下学期就已经开始在实验室实习了,无他,仅为了热爱。

但其实,我还是对参与企业实习有着向往的。听人说,论文中的模型并不是叫人去用的。我深以为然,理论与实际还是相差甚远,所以,即使对于一个有志于研究的人,去工业界畅游一些时日,也是十分明智的举动。

我们不害怕转行,害怕的是自己对自己缺乏认识,害怕的是小猫钓鱼,害怕的是一山望比一山高

若仅仅把自己囿于象牙塔中,我想,最高明的科学家也不过如此了。

虽然未曾去过企业实习,但从身边同学的描述中可以想见,实习经验确实比仅仅注目在课本知识重要多了。

仅仅谈及在实验室的科研,也能体验到,很多时候任务并不是交给你的,而是直接甩到你脸上的。

push,是唯一的旋律,这和赶作业的ddl完全不同。你或许可以对自己的学习偶尔说不,但你又怎能和自己的boss say no呢?

不要只把心思放在技术上,技术是hard skill,只要下工夫就一定会掌握。更要注意与人沟通等为人处事的soft skill上。hard skill像一个大树的根,而soft skill则像一个大树的枝叶。树根是你的根基,能让你站得很稳,而枝叶能让你向天空伸展,获得发展。

所以,实习的重点,不仅在于对技能的培养,而更加在于对心态的磨砺,对社交的锤炼。

或许我们会被打磨的能够装进社会的躯壳,但又有几人能脱离这等桎梏呢?再者说,桀骜不驯,也并非全然是喜人之事。

第四部分:自己的话

不谈感激这样的机会,只谈自己内心的想法。

我喜欢写一些文学类的作品,也曾有过发表。

但确实,我从未对自己的专业生活做过一个思考。一个是因为我的行文风格与专业性似乎格格不入,另一个也是因为常年累月触及新知识,我未曾有过多少时光能够停下来仔细思量这段时间的经历。

对于以上所写文字,我都进行了仔细的思考,如何用我的语言,写出我的心声。这确实不是一件容易的事情,我花了大概两天才理清头绪。

虽然可能用的时间比较长,但是我觉得是值得的。

起码,现在我可以轻松的说:

再会,旧时光。

参考文献

博客1:我的软件开发生涯 (10年开发经验总结和爆栈人生)

博客2:【野生程序员】:优先招聘

博客3:刘帅:在失望中寻找希望

博客4:徐宥:掉进读书的兔子洞

博客5:对程序员职业的一些建议

博客6:谈谈职业规划——CSDN对我的采访