这几年学EECS电子工程和计算机科学的人数不断激增,但在EE和CS之间大家几乎清一色选择了CS,也就是软件行业。
确实,CS有非常优秀的就业前景,科研应用繁多且明星领域非常扎眼。而硬件领域的应届薪资比不过软件工程,科研门槛高和热度也不及软件领域的创新迭代。
那么,学硬件有什么未来?
我从去年开始把计算机的学术重心移到了硬件,此后主攻了嵌入式系统、集成电路、半导体物理和数字电路设计,从半导体到主机板到芯片设计全摸索了一遍。
我在学微电子器件和电路时分析过CS和EE的差别,当时我正被陌生的物理和电路一顿毒打、感叹自己为什么要不知好歹挑战硬件。大半年后,我有了不同的理解。我发现学习硬件带来的提升极其多面。它赐予我计算机学科的完整框架,教我深刻且高效地破解软硬件项目全生态的创新空间和难点。那么,我来聊聊学硬件带来的未来。
为什么大家只聊CS?
我身边的小伙伴大多觉得学硬件很冷门:过去几十年里几家硬件巨头早已定义了这个行业,而摩尔定律倒下后硬件创新碰到了瓶颈,那我们再去盯半导体有什么意思?硬件怠工带来了软件的机会:处理器不够快那平行运算来凑,基建机会有限那应用来凑。科技巨头在过去20年如雨后春笋般填满了我们生活的方方面面,软件变成了主角。
而每个人决定行业的时间莫过于大学前后的四五年,于是我们目睹的现况缩影变成了我们的决策工具。所以,我的同龄人们信仰着软件应用带来的机会。不过,风水轮流转,硬件和软件都是计算机行业的左膀右臂。当我们在为这一代软件提升效劳时,也该想到未来硬件领域有突破后的腾飞,不妨都有涉猎。
门槛
对学生而言,EE的门槛比CS高不少:要从物理开始打基础,而后每节课都有一套新的公式和逻辑方式,光入门就要费好大力气,有所深入就一定要读博了。而CS亲民不少,数学和统计基础融会贯通,在理科和社科中都很实用,而细分领域也很好理解,帮我们从软件使用者升级成科研人和开发者。
所以,不难发现EE的博士生和本科生出路相差很大,只有博士生才能冲在开发创新的一线,而CS本科生的生产力就够解决软件行业的不少需求。
综合能力
那为什么还要碰硬件?就业、学习速率、短期前景都不如软件?可别忘了,软件最终还搭在硬件上:基础运算需要半导体开开关关,仓库规模计算机需要理解硬件运行的交互速度和温度变化,神经计算等更需要贴身定制硬件提速。于是,理解硬件能让我们学CS时降维打击,你能从一个电流开始推导此后的运算元、组件通讯、程序运作、内容存储,升华你对计算机的全栈理解。
我大一时分别接触了EE和CS的初阶课,而大二学系统结构时才恍然明白它们之间的强连接。教授比喻计算机科学是个汉堡,CS和EE是上下的面包,而两者相交才能咬到肉。所以,硬件基础能为CS带来更深的理解,也意味更强的竞争力。储备些EE知识也像应急储粮,在行业变迁、技术突破时就能有备而来地快速同步、抓住机会。
我的体验
学硬件需要熬,而硬件内也有不同领域。上半导体物理和器件时我很痛苦,因为我看不到应用场景、内容也需要更多物理课打基础。而这学期上数字设计和集成电路时我感到恍然大悟。我能深刻明白电路里小小的半导体的运作原理,分析他们之间的交互和性能,更好地推理芯片的建造和设计。
而实验课中的FPGA和ASIC也与我关注的区块链领域很相干,我能从计算原理到硬件加速设计、分析挖矿等高影响性的计算流程。零知识证明方向也带出一波硬件加速需求,也就是用定制的硬件设计更快地生成证明。我可以一手研究密码学中的算法,一手研究哪些算法可以放入FPGA带来可观产出。前沿应用更少不了全栈的理解。我和zkVM的朋友聊算法绕不开对计算机本身的架构要求,吐槽现在的硬件二进制局限、或有限域计算对浮点数算法的局限,畅想未来的开发。
这些视野自带极大的满足感,也就是从浅入深地明白自己的领域。花几节课的时间收获新一片天空,我觉得非常值得。
一技之长或许已经足够,但我认为在变化剧烈、迭代超快的领域中,多一些广度和深度会带来质的飞跃。这个时代偏袒融会贯通、反应快动作快的人,那多一块知识面就是给自己加了许多筹码。学硬件或任何斜杠学科不需要是你的未来,但却能加持你未来的势能。