如果从 7 岁第一次在少年宫写程序开始算起,到今天,我的码龄快有 30 年了。
05 年上海交通大学计算机系毕业后,我写过各种大型企业软件,也从零开始搭建过广告算法系统,16 年底进军人工智能领域,这期间我最大的感受就是,软件开发行业发展变化太快了,有时候不免会觉得焦虑,唯一的解决办法,就是迎头赶上,并选择那些最有挑战的去学。
在攻克一个又一个领域之后,我发现这些看似新兴的技术,背后的原理和逻辑却是融会贯通的,无外乎计算机组成原理、数据结构、算法、操作系统这些基础知识,它就像一座大楼的地基,决定了我们的技术高度,而这其中,“计算机组成原理”更是入门和底层知识的第一课。
在这个高级语言层出不穷的时代,我们如果不学汇编、不理解一点硬件,就好比一名赛车手不知道赛车的内部构成和工作原理,你相信他能在专业赛事中夺得冠军吗?
同样的道理,要成为一名优秀的软件工程师,写得一手好程序,就要了解计算机是怎么工作的。
举个例子,如果你不懂浮点数的原理,你能知道为什么计算金额的时候不能用浮点数,而要用定点数或者整数? 为什么在做机器学习、图形运算的时候,我们又会选择使用浮点数?再或者字符编码,为什么会遇到乱码?在 Web 页面展现,网络传输数据、日志文件,又或数据库层面,遇到中文乃至更多语言的乱码的时候,到底是哪里出错了?I/O 也是工程师日常工作中非常重要的一个知识点,当你遇到服务器性能调优的时候,很多时候瓶颈都在 I/O,你会看到机器的 load 很高,看到 io_wait 很大,那么这背后究竟代表什么含义?我们又该从哪些角度去排查问题?
我说的这些问题,你应该常常遇到。在我看来,底层原理知识不等于简单基础知识,或者说不等于不重要的知识。相反,组成原理是让你搞懂计算机的本质。
简单地说,你只需要对计算机的硬件有原理性的理解,就可以信赖硬件的可靠性,安安心心用高级语言来写程序。无论是写操作系统、编译器这样的硬核代码,还是写 Web 应用、手机 App 这样的应用层代码,你都可以做到心里有底。
学习组成原理之后,向下,你可以学习数字电路相关的课程,向上,你可以学习编译原理、操作系统这些核心课程。它会让你真正对计算机的知识有一个全局的了解。
如果你看过倚天屠龙记,会发现张无忌几个时辰,就把别人几十年没有练成的乾坤大挪移学会了,最根本的原因,是他有“九阳神功”练就的内功底子!
深入学习这门“底层知识”,就是在练扎马步、核心肌肉力量,提升你自己的“根骨”和“资质”,从而拔高你发展的上限。
△扫码免费试读或订阅
在很早之前,极客时间的编辑找到我,想让我开一个计算机组成原理的课程,在考研统考的 4 门核心基础课程中,极客时间已经出了数据结构与算法、操作系统,计算机网络相关的 3 门很受欢迎的计算机基础课程,这是第 4 门,也是计算机底层知识的第一课,等你做了多年开发以后,会发现,原来这么多年就是围绕这 4 门课程打转。
市面上有不少经典的书籍,我身边很多工程师都买了资料,却只囤积没怎么学,大部分反馈概念偏多,太抽象,难理解,不好学以致用,不少非科班出身的程序员,直接说“这些书根本看不懂”。
基于此,我和极客时间共同打磨了《深入浅出计算机组成原理》专栏,不同于学校的课程和市面上那些晦涩难懂的资料:
我会将理论与实践相结合,以通俗易懂的语言,把 30+ 计算机组成原理的核心知识,通过工程师工作中的实际场景 + 典型案例,教你真正看懂、学会、记住,洞悉性能问题的本质,学以致用。
我是徐文浩,一个目前正在创业的工程师。2005 年上海交通大学计算机系毕业后,在 Trilogy Software 写过各种大型企业软件;曾任 MediaV 技术总监,从零开始搭建支撑每天百亿流量的广告算法系统,提升了十倍以上的广告收入和 ROI;2016 年底进军人工智能领域。我创办的 BotHub.AI,是唯一进入 F8 大会开发者代表的中国公司。
为了方便大家的学习,我特地整理了一份学习脑图,希望你对将要学习的内容有个总纲的了解,做到心中有数。
这个课程上线几天的时间,已经有超 6000 人加入学习了,很开心看到同学们对这个课程重要性的认知,也看到了大家对专栏的期待。
我将以日常开发中的真实案例,让你理解计算机的各个组件是怎么运作的,遇到问题的根源是什么,从知识→应用→知识,形成闭环,学以致用。
我会把整个的计算机组成原理通过指令、计算、CPU、存储系统和 I/O 串起来,以一个程序的执行过程进行逐层分解,从历史视角讲清楚“是什么”,结合案例讲清楚”怎么做“。
理解计算机是怎么运作的,以及为什么这么运作,在此基础上,我们才能又快又准地优化性能,提升效率。而我们想要解决的性能问题,其实就是去关注时钟周期时间、每条指令的平均时钟周期数 CPI、指令数。
我将手把手带你实操,利用存储器层次结构设计大型 DMP 系统,并通过 Disruptor,跟你一起感受 CPU 的风驰电掣,让你真正学有所用。
总之,学好这门“硬核内功”,会让你在整个软件开发领域中,看到更加广阔的天地,它还会为你带来更多的职业发展机会,比如像我自己的团队里,有个小伙伴开始是做算法应用开发的,因为有扎实的计算机基础知识,后来就转去开发 TVM 这样的深度学习编译器了,是不是很厉害?
△扫码免费试读或订阅
1. 限时优惠 ¥68(原价 ¥99)。
2. 分享海报,邀请好友订阅即可获得¥24 的现金奖励,多邀多得,上不封顶,APP 内立即提现。
3. 今日订阅,可加入「计算机组成原理学习小组」,仅限前 500 人,还可免费领取 70 位大咖公开课礼包。【公众号后台回复「计算机」领取!】
专栏详细目录
“练拳不练功,到老一场空”。越早弄清楚计算机的底层原理,在你的知识体系中“储蓄”起这些知识,也就意味着你有越长的时间来收获学习知识的“利息”。长久的”复利效应“,会让你的未来走的更远更轻松。
点击阅读原文,一起打通计算机学习的“任督二脉”!
1、头条易读遵循行业规范,任何转载的稿件都会明确标注作者和来源;
2、本文内容来自“InfoQ”微信公众号,文章版权归InfoQ公众号所有。