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

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

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. Django Model基础操作

    关于设计django model django为我们集成了ORM对数据库进行操作,我们只需要进行定义model,django就会自动为我们创建表,以及表之间的关联关系 创建好一个django项目-首先 ...

  2. 【大数据应用技术】作业八|爬虫综合大作业Molly134

    本次作业的要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/3075 前言:本次作业是爬取CBO中国票房2010-2019年每年 ...

  3. Internet History, Technology and Security (Week 6)

    Week 6 Technology: Transport Control Protocol (TCP) Welcome to Week 6 of IHTS. We are in our second ...

  4. dedecms 织梦本地调试 后台反映非常慢的处理办法

    最近需要做几个企业站,所以呢,考虑了一下,没有用phpcms,而选择了 织梦.毕竟么,织梦用来做企业站还是比较合适的.好了,进正题: 在本地调试的时候,会非常的卡顿.调试的方法如下: 安装目录/dat ...

  5. poj 1185(状态压缩DP)

    poj  1185(状态压缩DP) 题意:在一个N*M的矩阵中,‘H'表示不能放大炮,’P'表示可以放大炮,大炮能攻击到沿横向左右各两格,沿纵向上下各两格,现在要放尽可能多的大炮使得,大炮之间不能相互 ...

  6. Delphi 判断一个字符串是否为数字

    //函 数 名: IsDigit//返 回 值: boolean//日       期:2011-03-01//参       数: String//功       能: 判断一个字符串是否为数字// ...

  7. 【Java并发编程】之五:volatile变量修饰符—意料之外的问题

    volatile用处说明 ​ 在JDK1.2之前,Java的内存模型实现总是从主存(即共享内存)读取变量,是不需要进行特别的注意的.而随着JVM的成熟和优化,现在在多线程环境下volatile关键字的 ...

  8. MT【160】格点

    (2017年清华大学  THUSSAT) 把不超过实数 $x$ 最大整数记为 $[x]$,任取互质且不小于 3 的正奇数 $m,n$,令$$I=\sum_{i=1}^{\frac{m-1}{2}}\l ...

  9. Vue设置页面的title

    原文地址:http://www.cnblogs.com/JimmyBright/p/7410771.html 前端框架如Vue.React等都是单页面的应用,也就是说整个web站点其实都是一个inde ...

  10. ajax请求提交到controller后总是不成功

    最近在做实习时,点击查询时在js中发送ajax请求到controller后台,但是无论怎么样都不成功,请求地址是正确的,因为在后台用system.out.println输出有值,并且也确实return ...