Java、C++ 内存模型都不知道,还敢说自己是高级工程师?
共 1841字,需浏览 4分钟
·
2021-11-08 13:41
前两天刷知乎,看到一个 Compiler 被猎头“三顾茅庐”的经历,尽管他一次次拒绝,但貌似因为猎头确实也没遇到比他更懂行的人,所以一直抓着他不放,也太真实了。
基础软件领域,太经常出现这种供不应求的情况。如今贸易战下,华为、BAT等大厂都在紧锣密鼓地各自软硬件技术的研发,所以他们对底层开发的系统级程序员的需求越来越大。就拿刚提到的编译器来说,想招聘合适的人才,周期往往得拉长到一到两年。
可以说,一名基础软件人才,千万年薪都难求。
可惜的是,编译器原理本身就非常枯燥,需要上承算法,下接指令集,以及高水平的布尔代数和计算机架构和算法知识,光它一个,就称得上是知识大杂烩。更别提掌握其他的CPU核设计知识、操作系统的内存管理模块、编译器的内存分配、并发锁、基础库的设计原理等其他基础软件开发必备的知识点了。
想从这些庞大的知识体系中选择一条脉络的话,之前看到一种说法是以内存管理为线索去进行学习更佳。整体的知识结构,可以参考下面这张我搜到的知识点图:
显然,这里面涉及的知识覆盖了《数字电路设计》、《计算机原理》、《微处理器架构》、《体系结构》、《操作系统》、《编译原理》,还有各种编译语言库和虚拟机等等。每一点拎出来,都是一门独立的课程。
没办法,内存相关的知识体系,涉及到的学科就是多,且很难形成体系。我也还是这两天看到上图作者海纳老师,在极客时间的直播,才摸到一些门道。
为了更系统全面的讲解内存,他还专门跟极客时间推出了一个课程,叫《编程高手必学的内存知识》,这两天刚上线。看了开篇词,内容真的不错,以上涉及到任何一个知识点,只要有你感兴趣,都应该去看看。
新人首单 ¥59,售价 ¥99
早鸟+口令「neicun666」立省 ¥30
作者是海纳,华为资深编译器专家,原 Huawei JDK 团队负责人。现在是华为鲲鹏生态的布道师,同时还在负责华为编译器领域的相关创新工作。2019年他出版了《自己动手写Python虚拟机》一书。这两年,他利用业余时间又筹备了一本《从零开始写Linux内核》,预计2022年上市。
他的工作主要涉及数据库、操作系统、编译器和图像处理,以及计算机视觉等方面,在这些领域积累了大量的一线实战经验。同时,他也是开源社区的积极贡献者,发起了Railgun虚拟机和海浪编程语言等项目。
这门课程主要分为三个部分:软件篇,硬件篇和自动内存管理篇。
软件篇
这一部分,会以操作系统为核心,将进程和内存的关系彻底讲清楚,让你对操作系统、编译器,以及应用程序的运行原理有深入的理解。
操作系统是软硬件设计的核心,它管理着所有的硬件资源,同时又为各种运行在它上面的应用程序提供服务。而内存是计算机的核心资源之一,它深刻影响着应用程序使用内存的方式。
编译器和应用程序都是围绕这个核心来构建的。因此,在具体的讲述上,海纳会采取由核心向外延的方式,把软件篇的知识都给你串联起来,如下图所示。
硬件篇
这一部分,我们将会学习与内存相关的计算机体系架构,包括存储器电路、存储体系结构和多核CPU内存模型。
通过这部分的学习,你可以快速掌握缓存原理、多核CPU通信的核心知识,让你最大限度地使用好缓存,写出正确而高效的代码。同时,课程里对硬件知识的讲解,还可以让你掌握CPU设计一些简单原理,并且在此基础上,深入地学习RISC-V等开源CPU的实现。
从下面这张图可以看到,硬件的结构是从下到上层层搭建的。所以,这部分会采用自底向上的讲解方式,带你理解存储系统是怎样由简单的器件一步步变得越来越复杂的。
内存管理篇
在这一部分关注点会从计算机软硬件,转向对具体内存管理算法的学习。
学习内存管理算法,能够让我们正确地使用各种不同语言,例如在Python和Swift中你要注意解循环引用等等。
还有很多具体内容,可以看看课程目录。
粉丝专属福利:
新人首单 ¥59,售价 ¥99
早鸟+口令「neicun666」立省 ¥30
订阅后生成海报发给好友,
每成功邀请 1 位好友,可得 ¥20 返现。
👇 点击「阅读原文」
输入优惠口令 「neicun666」
立省 ¥30 入手,仅限 前 50 人