学了半天,计算机组成原理,到底有啥用?
发布于 2021-09-26 07:46
相信很多朋友大学中都学过一门微机原理的课,涉及到汇编和最基本的CPU和外设,甚至可能还做过实验。其实这门课上行还有一个偏理论的课,叫做《计算机组成原理》。
这门课很有意思,搞计算机的很多人觉得用不上,搞硬件的又很少学。
下面从几个领域和方向介绍下这课的作用。
先说硬件领域。
问个问题,一个传感器输出0-20k的PFM脉冲,设计一个传感器接口,将某个时间窗内读到的脉冲数送给CPU。这个需求,是用MCU做还是用模拟电路搭?为什么?如果用模拟电路,最低复杂度是什么样的。
这个电路本质是一个有限状态机,74器件即可搭出。
再比如,你做x86硬件系统的设计,是外设的问题,还是BIOS的问题,系统工作到底卡在了哪一步骤,哪个层面?硬件?固件?OS?甚至有些x86高级的硬件工程师需要对计算机架构及组成原理有所了解。
计算机组成原理能够告诉我们软硬件的边界。
再说CPU设计,群友老李之前用74系列数字逻辑芯片设计过一款CPU。主要考察的是数字电路和计算机组成原理的知识。
随着RISC-V架构的兴起,很多人涌入这个领域。中科大的一生一芯计划,一个国外的一些大学,本科生就可以用FPGA设计出CPU,甚至可流片。
这样看来,电子,通信等领域的学生涌入微电子行业,谋求更好的发展,也未尝不是一条好路子。
最后说说编程及软件开发。不管是做嵌入式编程,还是做软件开发,懂计算机组成原理,在基础上,可以秒杀大多数从业者。一些做软件的,尤其是电子专业做软件的朋友,由于不像计算机专业那样,有这些基础课程,所以可能比计算机专业的人在这方面可能是劣势。这也是计算机考研的必修课。
下面的观点也挺鲜明的:这是科班与培训班的区别。
只能说,太真实了。我上学的时候,就没学好组成原理。后来到工作中就发现,增删改查还可以,遇到点底层问题就懵逼,而那些基本功好的科班生,学新东西都很快,升职加薪更是轻轻松松。
我想,这也是一个人能否去大厂的一个区别。毕竟大厂都很看重基本功,尤其想做一名优秀的工程师,如果都不了解计算机是怎么工作的,程序在计算机中怎么运作的,那怎么行得通呢?
像我经常会收到一些粉丝的反馈:升小领导接触更多项目后,感觉自己底层原理很弱,在编程的时候总有空中楼阁的感觉;有的说工作多年,竟然看不懂科班出身同事实现的数据序列化协议,太尴尬了;还有人日常搬运代码,遇到些网络或者数据库里的乱码、强制类型转换等等大坑,就懵逼了。
说白了,就是基本功出了问题。这也是为什么,很多人在工作两年后,反而回去补组成原理这些专业课知识。
而且,计算机领域的学科渗透和交叉很厉害,学点底层的东西,有一门精通,你找工作就很占优势。
作为计算机入门和底层知识的第一课,组成原理其重要程度,就和数据结构与算法一样,都是程序员必修的“硬核内功”。
要知道,它可以直接解决你在并发编程、性能优化中经常遇到的一些困惑,比如 CPU Cache 的原理是什么,CPU 和 I/O 之间是如何通信的,虚拟内存是要解决什么问题。可以说,你基本可以掌握计算机的全貌了。
我曾经下苦功,想好好啃啃组成原理,但概念多,太抽象,难理解,不好学以致用。资料我也看过不少,说句不好意思的,我大部分买来的书,都是前面 10 页已经发黄了,后面 500 页从来没有打开过。
只啃原理不行的,还是要与实际代码工作相结合,在这我分享一份,之前收藏的学习资料 —— 「组成原理全景图」,把零散的概念系统地整理在一起,建议收藏:
这张思维导图,出自徐文浩的专栏《深入浅出计算机组成原理》,这课可以说是我在极客时间学习,收获最大的课之一了,他用工作实际场景 + 软件开发案例,讲了 30+ 组成原理的核心知识,教你真正看懂、学会、记住,从源头理解软、硬件的共同之处,洞悉性能问题的本质。
除了理论讲的透彻,最重要的,还结合工业界的应用,要知道徐文浩老师在创业,随手就是各种实践案例,简直是一个宝藏老师,宝藏课程,口碑那么好,群众的眼睛是雪亮的,我目前 2 刷完毕,真是常看常新,时时有收获。
我来介绍下徐文浩, BotHub.AI 创始人,从 7 岁开始接触代码,近 30 年的码龄。写过各种大型企业软件,从零开始搭建支撑每天百亿流量的广告算法系统,提升了十倍以上的广告收入和 ROI,工业界的牛人了。
现在专栏已经更新完毕,一共 62 讲。跟着读下来,最大的感触是,这个老师太会讲了,要知道越是底层的东西,越不好讲透,能把这么枯燥无聊的原理,讲得明明白白,讲述中还充满了魔力,又吸引着我去深挖下去。
比如,特色之一:图文并茂,配合给大家讲解复杂问题,简洁又清晰。
一图胜千言,理论看不懂,拆开了揉碎了,总能明白吧。
比如,专栏特色之二:每个章节都会留个符合内容的思考题,徐文浩老师经常在评论里解答,这种耐心、负责的分享精神,真的很难得了。
我的建议,光读文章可不够,还得多看看下面的思考题,更精彩,而且往往能有新的启发。
关于组成原理对程序员的作用,我再来引用一下 Rust 大神张汉东在知乎上的回答:
大家都知道,计算机考研统考有 4 门核心基础课程:数据结构与算法、操作系统,计算机网络,以及组成原理,等你做了多年研发以后,会发现,原来这么多年就是围绕这 4 门课程打转。
关于基本功的重要性,我觉得怎么强调都不过分,记得《倚天屠龙记》里,张无忌几个时辰,就把别人几十年没有练成的乾坤大挪移学会了,最根本的原因,是他有“九阳神功”练就的内功底子。
同样的,深入学习这门“底层知识”,就是在练扎马步、核心肌肉力量,提升你自己的“根骨”和“资质”,从而拔高你发展的上限。
下面是专栏的目录,看着感觉很不错,理论和实践相结合。
都说大学玩游戏,工作来补课,出来混迟早要还的。
所以还是那句话:种一棵树最好的时间是十年前,其次是现在,抓住机会。
再次提醒 :
拼团 + 口令「yuanli999」,到手 ¥119,
立省 ¥80,只能帮你到这了 !
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材