《计算机是怎样跑起来的》读书笔记

今天,计算机正在以惊人的速度发展变化着,变得越来越复杂,而这期间产生了许多技术,但是人们并没有过多的时间去深入学习每一门技术,这就是问题的根源。稍微看了看技术手册,只学到了表层的使用方法,觉得自己“反正已经达到目的了”,这就是现状。如果仅仅把技术当作一个黑盒,只把时间花在学习其表面上,而并没有探索到其本质,就绝不应该认为自己已经“懂”了。不懂的话,做起来就会感到没意思,也就更不会产生想要深入学习的欲望了。

 

计算机的三个根本性基础

1. 计算机是执行输入、运算、输出的机器

2. 程序是指令和数据的集合

3. 计算机的处理方式有时与人们的思维习惯不同

 

试着制造一台计算机吧

只要用电路把CPU、内存以及I/O上的引脚相互连接起来,为每块IC提供电源,再为CPU提供时钟信号,硬件上的计算机就组装起来了。

其实计算机的工作原理非常简单。CPU在时钟信号的控制下解释、执行内存中存储的程序,按照程序中的指令从内存或I/O中把数据输入到CPU中,在CPU内部进行运算,再把运算结果输出到内存或I/O中。无论是小型的微型计算机,还是高性能的个人计算机,其工作原理都是相同的。

 

体验一次手工汇编

1.因为程序的作用是驱动硬件工作,所以在编写程序之前必须要先了解微型计算机的硬件信息。然而真正需要了解的硬件信息只有以下7种,所以没有必要在编程时还总是盯着详细的电路图看。

2.在CPU的资料中,明确写有所有可以使用的助记符,以及助记符转换成机器语言后的数值。只要查看这些资料,就可以把用汇编语言编写的程序手工转换成机器语言的程序,这样的工作称为“手工汇编”。进行手工汇编时,要一行一行地把用汇编语言编写的程序转换成机器语言。

3.内存地址:内存中有多个数据存储单元。计算机用从0开始的编号标识每个存储单元,这些编号就是地址(Address)。I/O中的寄存器也可以用地址来标识。哪个寄存器对应哪个地址,取决于CPU和I/O之间的布线方式。

4.尝试将下面的汇编指令翻译成机器语言,完成一次“手工汇编”

操作码       操作数

LD           A, 207

OUT          (2), A

LD           A, 255

OUT          (2), A

LD           A, 207

OUT          (3), A

LD           A, 0

OUT          (3), A

LOOP:  IN    A, (0)

OUT          (1), A

JP           LOOP

结果:

地址              操作码       操作数		机器语言                   
00000000           LD           A, 207      00111110 11001111          
00000010           OUT          (2), A      11010011 00000010          
00000100           LD           A, 255      00111110 11111111          
00000110           OUT          (2), A      11010011 00000010          
00001000           LD           A, 207      00111110 11001111          
00001010           OUT          (3), A      11010011 00000011          
00001100           LD           A, 0        00111110 00000000          
00001110           OUT          (3), A      11010011 00000011          
00010000           LOOP:IN      A, (0)      11011011 00000000          
00010010           OUT          (1), A      11010011 00000001          
00010100           JP           LOOP        11000011 00010000 00000000 

5.尝试估算程序的执行时间

从前面的图中看到每条汇编指令需要的时钟周期,把每条指令的时钟周期数累加起来,LOOP之前的指令:7+11+7+11+7+11+7+11=72个时钟周期;LOOP之后指令:11+11+10=32个时钟周期。因为微型计算机采用2.5MHz的晶振,1s可以产生2,500,000个时钟周期,每个时钟周期1s÷2,500,000=0.4μs。前72个时钟周期为28.8μs,后32个时钟周期为12.8μs,一秒钟可以执行LOOP 78125次,可见计算机的计算速度多么惊人。

 

程序流程

与河流的流动方式一样,程序的流程也分为三种。在程序中,把犹如水流向着一个方向流淌的流程称作“顺序执行”;把犹如水流流着流着产生了支流的流程称作“条件分支”;把犹如水流卷成漩涡的流程称作“循环”。

 

面向对象

在大型程序中需要用到大量的函数和变量。假设要用非面向对象的编程方法编写一个由10000个函数和20000个变量构成的程序,那么结果就很容易是代码凌乱不堪,开发效率低到令人吃惊,维护起来也十分困难。于是一种新的编程方法就被发明出来了,即把程序中有关联的函数和变量汇集到一起编成组。这里的组就是类。

为了拉近计算机和人的距离,使计算机成为更容易使用的机器,围绕着计算机的各种技术都在不断发展。在人的直觉中,大件物品都是由组件组装起来的。因此可以说面向对象编程方法把同样的直觉带给了计算机,创造了一种顺应人类思维习惯的先进的开发方法。

 

SE负责监管计算机系统的构建

笔者经常在面向立志成为SE的新员工培训会上问这样一个问题:“你认为作为SE,一上来应该向客户提什么问题?”多数的新员工都会回答:“您需要什么样的计算机系统?”这当然也没有错,但并不能算是最好的答案。因为客户最关心的是使用计算机解决眼前的问题,而并不是引进什么样的计算机系统。因此SE应该首先询问客户:“您遇到什么困难了吗?” 倾听客户的难处,给出解决对策即IT解决方案,这才是SE的职责

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值