查看原文
其他

Java、C++ 内存模型都不知道,还敢说自己是高级工程师?

字节流动 2022-09-25
前两天刷知乎,看到一个 Compiler 被猎头“三顾茅庐”的经历,尽管他一次次拒绝,但貌似因为猎头确实也没遇到比他更懂行的人,所以一直抓着他不放,也太真实了。
基础软件领域,太经常出现这种供不应求的情况。如今贸易战下,华为、BAT等大厂都在紧锣密鼓地各自软硬件技术的研发,所以他们对底层开发的系统级程序员的需求越来越大。就拿刚提到的编译器来说,想招聘合适的人才,周期往往得拉长到一到两年。
可以说,一名基础软件人才,千万年薪都难求。
可惜的是,编译器原理本身就非常枯燥,需要上承算法,下接指令集,以及高水平的布尔代数和计算机架构和算法知识,光它一个,就称得上是知识大杂烩。更别提掌握其他的CPU核设计知识、操作系统的内存管理模块、编译器的内存分配、并发锁、基础库的设计原理等其他基础软件开发必备的知识点了。
想从这些庞大的知识体系中选择一条脉络的话,之前看到一种说法是以内存管理为线索去进行学习更佳整体的知识结构,可以参考下面这张我搜到的知识点图:
显然,这里面涉及的知识覆盖了《数字电路设计》、《计算机原理》、《微处理器架构》、《体系结构》、《操作系统》、《编译原理》,还有各种编译语言库和虚拟机等等。每一点拎出来,都是一门独立的课程。
没办法,内存相关的知识体系,涉及到的学科就是多,且很难形成体系。我也还是这两天看到上图作者海纳老师,在极客时间的直播,才摸到一些门道。
为了更系统全面的讲解内存,他还专门跟极客时间推出了一个课程,叫《编程高手必学的内存知识》,内容真的不错,如果你对上面提到的任何一个知识点感兴趣,都应该去看看,现在还能赶上新人首单特惠活动,直接便宜40块钱,到手¥59。


极客时间新用户首单特惠
入手仅 ¥59,立省 ¥40
当然老用户也不贵,到手¥69

作者海纳,原是 Huawei JDK 团队的负责人,现在担任华为资深编译器专家,主要负责华为编译器领域的相关创新工作。这两年,他笔耕不辍,不仅在极客时间连载新的内存专栏,还在业余时间筹备了《从零开始写Linux内核》的新书,估计年底上市,是真的很勤奋了。
海纳的工作,主要涉及的都是数据库、操作系统、编译器和图像处理,以及计算机视觉等方面,因此也让他积累了大量相关的一线实战经验。
在这个专栏里,海纳秉承着“垂直化学习”的理念,避免了水平式讲解难以形成体系的问题,带你将内存知识的繁多、复杂等难点问题层层突破。课程主要分为三个部分:软件篇,硬件篇和自动内存管理篇。

软件篇

这一部分,以操作系统为核心,将进程和内存的关系彻底讲清楚,让你对操作系统、编译器,以及应用程序的运行原理有深入的理解。
编译器和应用程序都是围绕着操作系统这个核心来构建的。因此,在具体的讲述上,海纳采取的是由核心向外延方式,把软件篇的知识都给你串联起来,如下图所示。

硬件篇

 
这一部分,主要讲解的是与内存相关的计算机体系架构,包括存储器电路、存储体系结构和多核CPU内存模型,让你最大限度地使用好缓存,写出正确而高效的代码。同时,还可以让你掌握CPU设计一些简单原理,并且在此基础上,深入地学习RISC-V等开源CPU的实现。 
从下面这张图可以看到,硬件的结构是从下到上层层搭建的。所以,这部分会采用自底向上的讲解方式,带你理解存储系统是怎样由简单的器件一步步变得越来越复杂的。
 

内存管理篇

 
在这一部分关注点会从计算机软硬件,转向对具体内存管理算法的学习。
学习内存管理算法,能够让我们正确地使用各种不同语言,例如在Python和Swift中你要注意解循环引用等等。 
还有很多具体内容,一起看看课程目录。
 
未来,越来越多的企业会需要开发者做到能自主可控的芯片设计和进行基础软件设计,届时这个专栏会是你最好的启蒙,它不仅仅包含计算机方向的内存知识,还能帮你掌握 CPU 设计、操作系统、编译器开发等热门领域,带上它,就从现在开始吧。

读者 7 折专属粉丝福利:

金秋特惠  立省 ¥30
到手仅 ¥69
新用户更优惠,到手仅 ¥59

👇 点击「阅读原文」
限时 7 折  入手仅 ¥69 
掌握编程高手的开发诀窍

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存