链接:https://www.zhihu.com/question/294113482/answer/2024856160
等你以后参加了工作,你会发现的:
计算机应用层的知识你是学不完的,这是一个始终处于快速更新迭代的领域——语言上,十年前流行 PHP,现在流行Java,这两年又流行 Go;框架上,前两年流行 TensorFlow,最近又流行 PyTorch ;多年前,流行的SSH/SSM框架和集中式部署方案,现在已经被Spring MVC,微服务架构和中台概念所取代。
所以,熟练掌握应用层开发,这并不会构不成你的核心竞争力。要知道,这部分内容其实并不难,一个普通理工科大学生随便报个培训班学习四个月也能快速掌握,可替代性太高了,并且你在应用层积累的知识再牢固,也顶不住行业技术浪潮的更新换代。
真正可以构成你核心竞争力的知识是什么?是那些固定的,一成不变的,甚至是永恒的知识。大家学也应该重点学这些知识,而不是把精力主要用在应用层的学习上,这一点对于那些有着充裕时间的在校大学生来说,尤为适用。
对于计算机专业来说,那些固定不变的知识是什么?就是那些计算机基础知识,也就是CS四大基础学科:计算机组成原理、数据结构与算法、操作系统,计算机网络。
其中,计算机组成原理是这几门基础课的核心主干之一,是学习计算机的其它后续课(如微机系统与接口、计算机系统结构、操作系统等)的重要的专业基础课,在先导与后续课程之间起着承上启下和继往开来的作用。
计算机说穿了,无非硬件+软件而已,如果说《操作系统》是站在软件的角度看计算机的运行原理,那么,《计算机组成原理》则是站在硬件的角度来看计算机的运行原理。
如果你以后想要从事嵌入式、操作系统设计等和硬件结合比较紧密的工作,那么毫无疑问计组原理就是你必须要掌握的核心基础知识了。
那么如果你以后想要从事软件开发的工作,是不是就没必要去下功夫学好计组了呢?
不好意思,并不是。
如果你以后想从事编程开发这种侧重软件的工作,你同样也很有必要学好存储器、输入输出系统、计算机的运算方法、指令系统、CPU的结构和功能等计组知识,这是因为做大型系统软件会涉及到调优的问题,如果只懂软件,而不知道硬件在怎么运行的话,调优会受到限制,软件无法发挥硬件的最大优势。
以我自己为例,当我懂得内存与外存的区别,以及缓冲区这些概念时,代码的书写思维和我入门时真的有很大不同。懂了CPU如何工作,数据如何存储,知道了寻址这个概念后,我在理解一些计算机概念时,会理解的更加透彻,更加接近事情的真相。
所有的语言和框架说白了就是在某种规则(语法规则,API)上进行利用(编写代码),而一旦遇上瓶颈,或者某些bug的定位,需要为某种环境而进行方案的选择折衷(比如存储空间),这个时候,就需要那些基础知识辅助决策了。
或许上述情况很少有程序员会遇到,甚至有程序员从未遇到过,可是一旦遇到了,能否快速准确的定位并解决问题,这就是区分一名程序员优秀还是普通的标准之一,也是一个CS科班生和培训班速成的非科班生之间的差别之一。
所以,相信我。在最美好、时间最充裕的黄金年纪,就应该做最美好的事,学最有价值的知识,计算机组成原理这类基础知识,给我往死里学他妈的,没错的。
网友评论