先上地址:
(两个链接是同一门课, Introduction to Computing Systems (计算机系统导论), B站体验较好)
Bilibili :Introduction to Computing Systems
Youku : Introduction to Computing Systems
白发长髯,气定神闲.浑厚内力,登峰造极.一眼望去,便知该人不是等闲之辈. 如果CS也有江湖,他则是当之无愧的祖师: Yale Patt
大佬2011年的时候,竟然跑去中科大,开了一门正儿八经的计算机系统导论课,更为神奇的是,有人把上课的视频几乎全部上传到了网络上(全部有24个视频),简直是造福人类,1024! 这 是该课开设的背景. Yale上课从不带讲义,所有知识全部手写,再复杂的数字电路图,体系结构图,一律粉笔作画.开课时已73嵗高龄,思路却异常清晰,计算机知识如同硬编码在他的脑中.Yale能以大量的生活实例解释复杂的抽象概念,娓娓道来,如数家珍. 在我看完若干课之後,对其在教育上的执著和投入,敬佩万分.
很多人一谈到计算机体系结构,便想到CSAPP(深入理解计算机系统),其实Yale写的Introdution to computer systems评价也颇高. 从其副标题(From Bits and Gates to C and Beyond),便可以看出一些端倪, 这本书从bits和门电路开始讲起,通过层层像上抽象,一直讲到高级语言, 最後甚至还提到了递归和数据结构. 虽然计算机的应用领域日新月异,但是这些在表层技术背後的底层知识,却稳固不变.该书从99年出版至今,长盛不衰.
网上的这门课便是Yale亲自操刀,以他的这本书为纲要来授课. 国内的传统CS教育,并没有这样一门课.它不是数字逻辑,不是组成原理,不是体系结构,不是汇编语言,不是编译原理,也不是高级语言编程,但是它却把所有的这些知识都串联起来了,以一种自底层逐层向上的方式,搭建出一个麻雀虽小五脏俱全的计算机系统的模型. 对,正如这本书的名字,它教的是Computer System.
抽象的核心之一便是提取和隐藏,把共性的内容提取出来,封装入盒,成为组件,那些具体的实现细节便被隐藏了起来.从此以後,便可以只关心对外的接口,而不用再计较内部的具体实现. 举个例子(基本顺著课本的逻辑, 开始例子之前,先用The Elements of Computing Systems的图镇楼):
整个抽象过程至此差不多就完整了,至此,我们从晶体管开始(晶体管层往地下室走,是固态物理层,再往下是量子物理,再往下..)逐层朝上走,通过不断封装和抽象, 构建出一个计算机系统. 下图是对这些层次的另一种表述.
总结
国外的计算机专业往往会在第一年开设这样一门帮助学生瞭解计算机系统的课程, 有两种切入方法, 一种是自上而下, 也就是从高级编程语言开始讲起, 一点点往下走, 这种切入方法属於programmers' perspective, 还有一种方法便是从下往上走, 从硬件开始一点点往上, 最终让你看到整个计算机系统的结构.
如果让我来设计这样一门课程的话,我会综合这两种方法,分成三个阶段,第一个阶段是从下往上走,从transistors一直到冯诺依曼模型, 然後第一阶段结束; 第二阶段是从上往下走, 从算法, 到高级语言, 然後到编译器和汇编; 第三阶段是这两个阶段的交接层: 指令集, 操作系统, 硬件调度等, 重点看清如何通过第二阶段生成的汇编指令,去控制第一阶段用晶体管搭建出来的系统的不同组件.
我认为对学习计算机的人而言,对整个计算机系统有一个整体的认识非常重要. 按照国内的传统教法, 就好比你去饭店点个菜, 然後厨师把你拉去後厨培训3年, 教你八大菜系的各种手艺, 然後再给你上那道菜. 等你那时候再吃,八成是要吐的,而且很可能一门手艺也没学精通. 计算机最好的学法还是动手娱乐,带著好奇心去探索未知. 如果有这样一门导论课程, 前期可以建立大局观,後期分门别类学习各种专业知识的时候能够知道每一门课所在的位置. 就像是画画, 一开始先勾勒出轮廓,而後慢慢再细化和填充,这样的模式是更为科学的.
免责声明:本平台仅供信息发布交流之途,请谨慎判断信息真伪。如遇虚假诈骗信息,请立即举报
举报