ARTICLE · 1038441
软件专业为何学硬件?写给刚入学的你
刚踏入大学校园,很多同学心里可能犯嘀咕:“我是来学写代码的,为什么导论课里要讲二进制、门电路这些硬件内容?这跟敲代码有关系吗?”
先说结论:如果你只想写个微信小程序,做个简单的网页,确实不用懂硬件。现在的高级语言和框架太成熟了,它们把底层硬件封装得干干净净,你只要敲代码,电脑就能帮你把结果算出来。
但是,软件专业只学写代码,那是远远不够的。导论课里的硬件内容,只是给你们种下一颗种子。将来你们还会陆续接触到计算机组成原理、操作系统、计算机网络等硬件相关的课程。如果你对未来四年的规划,不仅仅是“会写代码”,而是想成为一名优秀的软件工程师,那么,硬件知识就是你绕不过去的必修课。
我们来看几个场景。
场景一:开发系统软件
如果你未来想做操作系统、数据库、编译器、虚拟机这类底层系统软件,硬件知识就是你的“空气”。
数据库为什么要设计“B+树”作为索引?为什么不是二叉树?因为硬件底层的磁盘I/O读取是按“块”来的。不懂磁盘的物理结构,就设计不出最高效的数据结构。
操作系统里的“多线程”、“内存管理”、“缓存一致性”,每一个概念背后,都是硬件物理定律在逼着软件妥协。
不懂硬件,你看系统源码就像在看天书。
场景二:开发游戏
游戏开发是最典型的“吃硬件”行业。
做游戏,最怕什么?卡顿。为什么卡顿?因为CPU、GPU、内存之间的数据带宽和读写速度跟不上了。
如果你想做游戏引擎优化,你需要懂:为什么把游戏数据放在显卡显存里比放在内存里快?如何利用CPU的多级缓存来减少延迟?如何通过SIMD指令让CPU一次处理多个数据?
不懂硬件,你只能写“能跑”的游戏;懂了硬件,你才能写出“丝滑”的游戏。
场景三:服务器端开发
现在的互联网大厂,后台服务器动辄几万、几十万的并发量。
只懂代码的工程师,遇到性能瓶颈,第一反应是:“加服务器!加内存!”
而懂硬件的工程师,会去分析:“这个服务是CPU密集型还是IO密集型?”“是不是锁竞争导致了CPU缓存颠簸?”“网络包从网卡到应用层,拷贝了几次内存?”
真正的性能调优,最后拼的都是对硬件资源的极致利用。
场景四:AI / 大模型开发
很多人觉得AI就是写Python调库,跟硬件没关系。但现实恰恰相反。
训练一个大模型,动辄需要几千张GPU组成集群,跑几周甚至几个月。为什么用GPU而不是CPU?因为GPU有成千上万个核心,天生适合并行计算。
但光有GPU还不够。你还要懂:显存带宽够不够?多卡之间怎么通信?数据在CPU和GPU之间搬来搬去,瓶颈在哪?模型推理时,怎么量化、怎么裁剪,才能塞进手机或边缘设备?
AI的尽头,是算力。算力的尽头,是硬件。
写在最后
现在技术界有个很火的词,叫“软硬协同设计”。未来的顶尖软件工程师,一定是既懂上层业务逻辑,又懂底层硬件特性的复合型人才。
现在你可能觉得这些二进制、门电路离你很遥远。但当你未来在代码里遇到性能瓶颈、内存泄漏、并发死锁时,你会发现,那个能让你豁然开朗的钥匙,其实早就藏在你大一导论课上学过的那些硬件知识里。
别把导论课里的硬件内容当成“听听就过的科普”,也别把将来要学的硬件课程当成“应付考试的负担”。你们现在学的每一分硬件知识,都是在为未来的软件大厦打地基。
例:哪些软件开发方向需要硬件知识

资料引用:AI创作