虽然越来越多的代码由 AI 生成,但一个好的程序员仍然需要对计算机底层有所理解,程序员能力的差距往往也体现在这里。
1. 故障排查
线上 P99 偶发毛刺,到底是 GC、缺页中断、NUMA 跨节点访问,还是容器 CFS quota 被限流?多线程偶现的脏数据,是锁写漏了,还是内存序没对齐?这类问题不懂底层就只能靠猜,或者重启大法。
2. 性能优化
现实中八成以上的性能问题在算法、IO、数据库和网络层,轮不到底层出场。
但剩下小部分就是不同程序员拉开差距的地方——CPU 侧是缓存局部性、分支预测、指令级并行;GPU 侧则是另一套模型:合并访存、warp divergence、shared memory bank conflict。
3. 代码审查
AI 写出来的代码往往「看着对」,但藏着数据竞争、意外的内存拷贝、O(n²) 的隐式行为。看不出来,你就只能全盘接受 AI 的输出。
现代编译器已经非常高级、非常复杂,作为写代码的程序员,我们完全不需要懂编译器的底层细节。
但如果需要做性能优化,理解一些基本的编译原理也是非常有帮助的,例如:
(a) switch 是否永远比 if-else 性能更好?
(b) 函数调用的开销到底有多少?
(c) 为什么遍历二维数组时,行优先比列优先快几倍?
(d) 指针是否比数组 index 性能更好?
(e) 为什么循环里用本地变量累加,比用 argument passed by reference 强得多?
(f) 为什么调整运算的结合方式,就能提高一个函数的性能?
(g)为什么 if 分支的顺序会影响性能?
当 AI 编程普及、写代码不再是门槛的时候,对计算机底层的理解——能写出更高性能的代码,能解决更底层的 bug,能做更底层的性能优化——就更加重要了。
顯示更多