阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

大学学习计划之计算机

74次阅读
没有评论

共计 2631 个字符,预计需要花费 7 分钟才能阅读完成。

导读 计算机相关专业学生在大学期间更应该学习什么?毫无疑问,为了毕业后找个好工作,在大学期间应该学一些应用层的技能,掌握一门应用广泛的语言及其框架。最好做过实际的项目,有过实习的经验,这些都是简历中能看得到的加分项,是脱颖而出的重要砝码。
1 前言

最近有不少还在读书的同学来问我大学期间到底应该学什么,学了 Java,看了 JS, HTML,CSS, 尝试了一下 SSH 以后似乎就迷茫了,这其中还有不少是计算机系的同学。

毫无疑问,为了毕业后找个好工作,在大学期间应该学一些应用层的技能,掌握一门应用广泛的语言及其框架。最好做过实际的项目,有过实习的经验,这些都是简历中能看得到的加分项,是脱颖而出的重要砝码。

但是这些东西都是一颗大树的枝叶和花朵,在大学期间更应该学习的是看不见的根,也就是基础知识,对于科班出身的人更是如此。

原因很简单,基础知识虽然可以在工作以后再补,但是再也找不到这么多大块的时间,这么安静的环境,让你心无旁骛的钻研了。

你不用考虑着第二天怎么去应对客户的脸色,也不用去想着怎么去给领导解释昨晚的严重 Bug 不是我们的问题,你只需要单纯的学习就好,看到有这么多同学把美好的时光都花在打游戏上,实在是令我扼腕叹息,要是把这些时间给我就好了!

我现在只能利用一些碎片时间补一下基础的知识,如果时光倒流,让我再坐到图书馆中去静静地看书该多好!

同学甲说:基础,又是基础,老刘你说了多少遍了!我耳朵都听出茧子来了!

抱歉,基础就是这么很重要,我还是要像祥林嫂一样继续啰嗦。

我认为大学期间应该搞定的基础知识应该包括(不限于)这些:

2 C 语言

大学期间不要忙着去学 Java , Python 等高级语言,你应该先去搞定 C 语言(不是 C ++ 啊),因为这门语言太贴近机器了,能帮助你理解计算机的运行原理,不信你看看《深入理解计算机系统》,通篇都是 C 语言,它怎么不用 Java,Python 去描述啊?因为他们太高级了,太抽象了,描述不了底层啊。

学会 C 语言,才能给其他基础知识打下基础,因为大部分基础软件、系统软件都是 C 语言写的,你看不懂 C 程序那怎么行?

不要像我当年一样,看到别人已经能做网页了,自己还在命令行的小黑窗口中折腾,头脑一热就把 C 语言给扔了,后来又花了很多时间来弥补。

要记住你学会了 C 这门贴近硬件的,简单而又复杂的语言以后,再去学别的语言,几乎不费吹灰之力,他们都太简单了!

3 理解计算机的组成原理

如果你是科班的,老老实实地把《计算机组成原理》和《数字电路》这两门课学了,把那些实验内容(如门电路,半加器,全加器,触发器等)兢兢业业地做好。

你应该定个目标:自己折腾一个简单的 CPU,简单的就是进行数值运算,复杂一点儿的可以实现指令,如果觉得教材实在枯燥,可以结合《编码》或者《穿越计算机的迷雾》来学习,如果实在喜欢玩游戏,可以到《我的世界》游戏中去制造 CPU 啊,已经有大牛这么做了。

4 理解操作系系统原理

操作系统太重要了,对操作系统的理解决定了你以后工作中能达到的深度,这里边藏着太多极为重要的概念,例如进程,线程的概念,锁、调度,IO 模型,虚拟存储等等,他们会在你以后做高性能,高并发系统这一块儿起到重要作用。

即使你先学会了 Java , SSH/SSM, 随着你能力的提升,最后你还是得走入这些基础知识的世界。为什么不在大学期间把他们都搞定呢?

有人可能觉得 OS 太枯燥了,实在是看不下去,其实 OS 是一门动手实践课,你可以去看看早期 Linux 内核的源码(要求 C 语言啊),书籍文章多如牛毛;也可以自己动手自制简单的操作系统,视频书籍也不少,就看你愿不愿意把玩游戏的时间花在上面了。

举个例子:哈工大的 VOID 同学就在本科期间从零开始做了一个类似于 Linux 0.11 的操作系统出来,他拿到了阿里的 Special Offer , 目前在阿里就职。他录制的《从零开始编写操作系统》视频可以在 B 站看到:https://www.bilibili.com/video/av12169693/

同学乙要问了:“人家是大牛,还有一个好学校,我一个三本的渣渣怎么可能做得出来?你这不是给我设置了一个不可能完成的任务吗?”

确实是这样,天才永远只有少数,不可能每个人都成为天才,也不可能每个人都做出天才的成果。

但是我们也要在天才铺好的道路上坚持往前走走,也许有一天就会发现,哦,我已经超越了这么多人了啊!

要坚持使用 Linux 而不是 Windows,立志在后端做开发的更是要如此,别像我大学时安装个双系统,结果整天宠幸 Windows , 从来不翻 Linux 的牌子。

5 网络,数据库,编译原理

把这三者合到一起,是我个人觉得他们的重要性没有前面的高。

对于网络,需要理解网络分层模型,可靠性传输原理,TCP/IP 协议,Socket 编程,和操作系统结合起来可以考虑写一个 Web 服务器。

数据库的话首先理解 SQL、关系模型、事务、索引,要想深入学习的话可以看看查询是怎么实现的,事务是怎么实现的,如果确实感兴趣一定要看看 sqlite 的源码。

学编译最好的方式就是自制一个编程语言了,搞出来以后会对编程语言有个极为透彻的理解。

6 数据结构和算法

这个重要性就不用再强调了,经常看码农翻身的可能都要烦了,可以看看之前的文章《学习数据结构有什么用?》

学习的过程中除了看书理解各种算法和数据结构外,更重要的就是做题、做题、做题!

同学丙说:“老刘,你说的不都是计算机的专业课吗?”

是的,就是计算机的专业课,一般来说,工作个几年以后你才会体会到他们的珍贵,更会痛惜大学时为什么不好好学,就像我现在这样。

不要局限于学校发的教材,现在网上的视频资源异常丰富,世界级大学的课程我们也可以看到,千万不要浪费。

同学丁说:老刘你别瞎 BB 了,你让我学 Java,做项目,现在又让我造 CPU,写操作系统,数据库,服务器 …… 我都没时间和女朋友约会了。

恭喜你,已经有女朋友了,超越了大部分同学了,在大学谈一场恋爱,享受一下青春也是非常重要的事情。

但是我想说的是,你不可能把所有的都学会,你能做的就是集中火力突击一个方向,那就是你最感兴趣的方向。只有那些经得住寂寞,耐得住诱惑的才最有可能成功,如果再和自己的兴趣结合起来,那简直肯定成功。

总而言之,计算机的基础知识让你和别人区分开来,让你有着比别人更快的加速度。

但是老刘瞎 BB 这么多估计也没太大用处,因为你不行动我也没有办法。

阿里云 2 核 2G 服务器 3M 带宽 61 元 1 年,有高配

腾讯云新客低至 82 元 / 年,老客户 99 元 / 年

代金券:在阿里云专用满减优惠券

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2024-07-24发表,共计2631字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中