夜雨聆风学习资料网

ARTICLE · 1038441

软件专业为何学硬件?写给刚入学的你

软件专业为何学硬件?写给刚入学的你

刚踏入大学校园,很多同学心里可能犯嘀咕:我是来学写代码的,为什么导论课里要讲二进制、门电路这些硬件内容?这跟敲代码有关系吗?

先说结论:如果你只想写个微信小程序,做个简单的网页,确实不用懂硬件。现在的高级语言和框架太成熟了,它们把底层硬件封装得干干净净,你只要敲代码,电脑就能帮你把结果算出来。

但是,软件专业只学写代码,那是远远不够的。导论课里的硬件内容,只是给你们种下一颗种子。将来你们还会陆续接触到计算机组成原理、操作系统、计算机网络等硬件相关的课程。如果你对未来四年的规划,不仅仅是会写代码,而是想成为一名优秀的软件工程师,那么,硬件知识就是你绕不过去的必修课。

我们来看几个场景。

场景一:开发系统软件

如果你未来想做操作系统、数据库、编译器、虚拟机这类底层系统软件,硬件知识就是你的空气

数据库为什么要设计“B+作为索引?为什么不是二叉树?因为硬件底层的磁盘I/O读取是按来的。不懂磁盘的物理结构,就设计不出最高效的数据结构。

操作系统里的多线程内存管理缓存一致性,每一个概念背后,都是硬件物理定律在逼着软件妥协。

不懂硬件,你看系统源码就像在看天书。

场景二:开发游戏

游戏开发是最典型的吃硬件行业。

做游戏,最怕什么?卡顿。为什么卡顿?因为CPUGPU、内存之间的数据带宽和读写速度跟不上了。

如果你想做游戏引擎优化,你需要懂:为什么把游戏数据放在显卡显存里比放在内存里快?如何利用CPU的多级缓存来减少延迟?如何通过SIMD指令让CPU一次处理多个数据?

不懂硬件,你只能写能跑的游戏;懂了硬件,你才能写出丝滑的游戏。

场景三:服务器端开发

现在的互联网大厂,后台服务器动辄几万、几十万的并发量。

只懂代码的工程师,遇到性能瓶颈,第一反应是:加服务器!加内存!

而懂硬件的工程师,会去分析:这个服务是CPU密集型还是IO密集型?”“是不是锁竞争导致了CPU缓存颠簸?”“网络包从网卡到应用层,拷贝了几次内存?

真正的性能调优,最后拼的都是对硬件资源的极致利用。

场景四:AI / 大模型开发

很多人觉得AI就是写Python调库,跟硬件没关系。但现实恰恰相反。

训练一个大模型,动辄需要几千张GPU组成集群,跑几周甚至几个月。为什么用GPU而不是CPU?因为GPU有成千上万个核心,天生适合并行计算。

但光有GPU还不够。你还要懂:显存带宽够不够?多卡之间怎么通信?数据在CPUGPU之间搬来搬去,瓶颈在哪?模型推理时,怎么量化、怎么裁剪,才能塞进手机或边缘设备?

AI的尽头,是算力。算力的尽头,是硬件。

写在最后

现在技术界有个很火的词,叫软硬协同设计。未来的顶尖软件工程师,一定是既懂上层业务逻辑,又懂底层硬件特性的复合型人才。

现在你可能觉得这些二进制、门电路离你很遥远。但当你未来在代码里遇到性能瓶颈、内存泄漏、并发死锁时,你会发现,那个能让你豁然开朗的钥匙,其实早就藏在你大一导论课上学过的那些硬件知识里。

别把导论课里的硬件内容当成听听就过的科普,也别把将来要学的硬件课程当成应付考试的负担。你们现在学的每一分硬件知识,都是在为未来的软件大厦打地基。

:哪些软件开发方向需要硬件知识

资料引用:AI创作

相关学习资料