过年期间一直在啃一本书,学习计算机组成原理。

这是一本很棒的书,是一个基于项目的学习过程。可以让人理解的很深刻。

coursera上有这本书前半部分的教程,是由书的作者团队们开的课,个人认为很棒,可惜就是后半部分的教程还没出。

不过他们的制作团队说,16年春季就会出后半部分的教程了。

课程链接是这样的:https://www.coursera.org/learn/build-a-computer

这本书有自己的官方网址,教程和软件提供很完善,Q&A也很Nice,基本上要问什么问题都能得到回答:http://www.nand2tetris.org/


当然这本书的缺点似乎是讲的内容实在太多,所以很多细节并没有处理到很完善,省略了很多内容。

但这并不是说这本书就是一本不完整的书。事实上,从第一章到最后一章,这个项目的完整性是超出我的想象的。

学习的人将从完全不理解计算系统的级别开始,搭建起一台计算机,然后在这台计算机上搭建一款简单的编译器,实现一个操作系统,然后完成在上面的程序的编写。

整本书的跨度是从数字电路到操作系统。当然,这也就不可避免地让它不能在很多问题上太过纠缠,所以,这本书重实现和了解,轻优化和深入。

作为我一个EE学生的计算机结构入门,实在是太美好不过了。

它自底向上的构建方式让学习曲线平滑到不能更平滑。


具体总结一下这本书的内容,这本书围绕着一个框架来说明:

把整个计算机系统分成两个部分,硬件层和软件层。

自顶向下的观点是这样的,最高级的是人的想法,为了实现人的想法我们需要编程描述语言和操作系统,操作系统由编程语言来写,而要使编程语言能够工作,需要有编译器,编译器的实现是有虚拟机技术的,把高级语言翻译成虚拟机上的中间代码,然后虚拟机将中间代码翻译成相应硬件平台的汇编代码,而汇编代码是等价翻译成机器语言才能使用的(用汇编器翻译)至于机器语言是怎么使用和实现的,和相应的硬件平台是有关系的,计算硬件平台的实现依靠的是数字芯片,数字芯片是一堆数字逻辑门的封装,而数字逻辑门的实现,电子学上的实现是EE研究的东西,至于为什么能实现,这是物理学的领域了。到这里就不接着向下研究了。而整个结构是这样完整的。

当然学习的过程是自底向上的,从唯一逻辑门与非门(Nand)开始搭出各种不同的逻辑门,组合成ALU,CPU,直至最后组成一台完整的被称为Hack的电脑,然后是使用它的机器语言编程,用一个汇编器来将汇编语言翻译成机器语言。然后通过设计一款编译器来实现一款基于类的名叫Jack的语言,实现一个有一些函数接口的操作系统。

这是一个浩大的工程,然而却被很好的整合在了这本书里

这本书是我这个学年至今读到最好的书。

今天这篇随笔是一个总结和推荐。大家有兴趣有空的可以看看这本书,然后我们可以一起探讨。

我会陆续发这本书的具体内容的读书笔记。

2016/2/13 《计算机系统要素》(The Elements of Computing Systems)读书笔记(1)的更多相关文章

  1. the elements of computing systems 的读书笔记2

    懒癌发作,本来计划是两到三天就一个unit的,没想到一直拖到今天才完成第二部分(6-8章). 第6章,介绍了hack汇编到二进制,也就是用翻译到01来表示.从课后习题来看,这一章目的就是设计一个程序( ...

  2. the elements of computing systems 的读书笔记1

    想转职程序猿,还真不是说懂一门语言就够的了,想要继续进步,必须懂其相关实现原理,比如这些底层的构造.最近看的就是这一本计算机入门级的书,但是对我这个纯自学的人来说真是能学到很多. 这本书从最基本的Na ...

  3. 20150206读书笔记<深入理解计算机系统>

    ●第一章 C是系统级编程的首选.C++显示支持抽象,属于应用级程序设计语言. 简单例子: 一个典型系统的硬件组成: 存储器的层次结构: 注:存储器层次结构的设计思想是,该层存储器作为下一层存储器的高速 ...

  4. 强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods)

    强化学习读书笔记 - 13 - 策略梯度方法(Policy Gradient Methods) 学习笔记: Reinforcement Learning: An Introduction, Richa ...

  5. 机器学习实战 - 读书笔记(13) - 利用PCA来简化数据

    前言 最近在看Peter Harrington写的"机器学习实战",这是我的学习心得,这次是第13章 - 利用PCA来简化数据. 这里介绍,机器学习中的降维技术,可简化样品数据. ...

  6. 《深入理解计算机系统》 Chapter 7 读书笔记

    <深入理解计算机系统>Chapter 7 读书笔记 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(货被拷贝)到存储器并执行. 链接的时机 编译时,也就是 ...

  7. 《Android开发艺术探索》读书笔记 (13) 第13章 综合技术、第14章 JNI和NDK编程、第15章 Android性能优化

    第13章 综合技术 13.1 使用CrashHandler来获取应用的Crash信息 (1)应用发生Crash在所难免,但是如何采集crash信息以供后续开发处理这类问题呢?利用Thread类的set ...

  8. <深入理解计算机系统>第七章读书笔记

    第七章读书笔记 链接 链接:将各种代码和数据部分收集起来并组合成为一个单一文件的过程.(这个文件可被加载或拷贝到存储器并执行) 链接可以执行于编译,加载或运行时. 静态链接: 两个主要任务: 1 符号 ...

  9. 读书笔记:《人有人的用处》------N.维纳. (2016.12.28)

    读书笔记:<人有人的用处>------N.维纳 ·某些系统可以依其总能量而和其他系统区别开来. ·在某些情况下,一个系统如果保持足够长时间的运转,那它就会遍历一切与其能量相容的位置和动量的 ...

随机推荐

  1. Pytorch相关内容

    ---恢复内容开始--- Pytorch中文官方文档:https://pytorch-cn.readthedocs.io/zh/latest/package_references/torch-nn P ...

  2. JVM的GC策略

    1 前言 GC(Garbage Collect)是jvm对于内存管理的核心功能,正是因为它才让Java程序员从内存释放的苦海中脱离出来,所以作为一个程序员都有必要去了解一下他的原理. 说一句题外话,我 ...

  3. IIS8.5 的环境下添加配置WCF服务!!!!!

    添加步骤: 1.打开iis8.5,先部署wcf服务. 2.首先添加MIME类型 扩展名:“.svc” MIME类型:“application/octet-stream” 3.添加 处理程序映射 请求路 ...

  4. HDU 2103 Family planning

    http://acm.hdu.edu.cn/showproblem.php?pid=2103 Problem Description As far as we known,there are so m ...

  5. IPV6的链路本地地址和站点本地地址的不同

    转帖 中关村 http://ask.zol.com.cn/x/2230274.html IPV6涉及到一个概念,link-local address, 中文叫“链路本地地址”,它的前缀是FE80::/ ...

  6. spring注解方式注入

    1.通过Resource注入 1.在属性上注入 1.默认注入 即不指定spring容器里面的名字 匹配规则:先通过属性的名字查找 再通过属性类型与实现类类型匹配查找 当有两个实现类会报错 2.通过指定 ...

  7. Spring(2):Spring Ioc

    1.下载spring-framework-3.2.0 完整包下载路径: https://repo.spring.io/webapp/#/artifacts/browse/tree/Properties ...

  8. Power Strings POJ - 2406(next水的一发 || 后缀数组)

    后缀数组专题的 emm.. 就next 循环节../ 有后缀数组也可以做 从小到大枚举长度i,如果长度i的子串刚好是重复了len/i次,应该满足len % i == 0和rank[0] - rank[ ...

  9. KMP之Z-function (扩展kmp)

    http://codeforces.com/blog/entry/3107 // s[0, ..., n-1], z[0] = 0// z[i] is the length of the longes ...

  10. PKUWC Slay The Spire

    题面链接 LOJ sol 好神啊.果然\(dp\)还是做少了,纪录一下现在的思维吧\(QAQ\). 我们首先可以发现期望是骗人的,要不然他乘的是什么xjb玩意. 其实就是要求所有方案的最优方案和. 因 ...