zoukankan      html  css  js  c++  java
  • 2月书单 《编码隐匿在计算机软硬件背后的语言》 17-20章

    第17章 自动操作

    人类是非常富于创造性而且是十分勤勉的,但是,人类在本质上也是十分懒惰的。非常明显,人类并不愿意去工作,这种对工作的反感导致人们用大量的时间来设计和制造可以把工作日缩短到几分钟的设备。幻想使人感到兴奋,甚至远比我们所看到新奇的事物更令人兴
    奋得多。

    享乐——锁定技,当你成为一名角色使用【杀】的目标后,除非该角色弃置一张基本牌,否则此【杀】对你无效。

    本章将通过设计更精密的机器,使加减法运算更加自动化。

    我们知道,人是很懒惰的,尤其讨厌做重复又无聊的任务,于是我们想外包给机器来帮我们完成无聊的累加。

    设想一下,如果想把1 0 0个二进制数加起来,你就得坐在加法机前耐着性子输入每一个数字并累加起来。当你完成时,却发现有两个数字是输入错误的,你只好又重复全部的工作。但是如果我们先将数据存入RAM,再由CPU将数据进行运算,这样的话,数据修改就会方便得多。下图就是一个可行的模型。

    但是这种电路也有很多问题:1.当计数器最终到达F F F F h时,它又会翻到0 0 0 0 h(就像汽车里程表)2.它只能用于加法,并且只能加8位数。

    之后介绍了存储器与运算器的简单协同工作,以及初步介绍了汇编代码,比较简单,不予赘述。

    第18章从算盘到芯片

    纵观历史,人类发明了很多灵巧的工具和机器以满足广泛的需求,从而使数学运算变得更容易了些。虽然人类天生就有使用数字的能力,但仍能经常需要帮助。人们常遇到一些自己不能轻易解决的问题。数字可看成是早期帮助人类记录商品和财富的工具。许多文明,包括古希腊和美洲土著,都借用石子或谷物来计数。在欧洲使用计数板,而在中国则对由框和珠子组成的算盘较为熟悉:

    之后介绍了计算机关于帮助人类运算方面的一些历史,我印象比较深刻的是 赫曼·霍勒瑞斯( 1 8 6 0—1 9 2 9 ),他是1880年人口普查的统计员,为了解决人口统计数据冗杂巨大的问题,开发了新机器进行人口普查,最后获得成功,他创立了制表机公司,出租和出售穿孔卡片设备。1911年,经过合并,该公司成为计算-制表-记录( computing - Tabulating - Recording)公司,即C - T- R公司。到1 9 1 5年,C - T- R的主席是Thomas J.Watson ( 1 8 7 4-1 9 5 6 ),他在1 9 2 4年把公司的名字改为国际商用机器公司,即I B M。

    开始的时候,可用的很小的存储器只是用来存储中间结果,而程序本身存储在像带有穿孔的纸带这样的物理媒体上。的确,把代码和数据放入存储器的处理方式是一个很现代化的概念。

    继电器并不是制造计算机的最好器件,因为它是机械的,工作时需弯曲一个金属簧片,如果超负荷工作,簧片就会折断;如果有一小片污垢或纸片粘在触点之间,继电器就会失效。一个著名的事件发生在1 9 4 7年,从Harvard Mark II 计算机的一个继电器中找到一只蛾子。Grace Murry Hopper (1 9 0 6—1 9 9 2)1 9 4 4年加入A i k e n的小组,此人后来在计算机程序设计语言领域非常有名。他在计算机日志中记录了这只蛾子,写道“第一次发现了真正的b u g”。

    继电器的一种可能的替代品是真空管,真空管可以连接成与、或、与非和非门,这一点非常像继电器。不过真空管也有问题,它们昂贵、耗电量大、散发的热量多。然而最大的问题在于它们最终会被烧毁,这也就是它们的寿命问题。有真空管收音机的人就习惯于隔一段时间更换这些管子。电话系统设计成有许多多余的管子,因此损失点儿管子也不是大的问题。(没有人能指望电话系统不出一点儿问题。)然而计算机中的一个管子烧毁以后,并不能很快被检测到,
    而且,计算机中使用了如此多的真空管,可能每几分钟就会烧毁一个。

    使用真空管相对于继电器的最大好处在于它每百万分之一秒(即1微秒)就可以跳变一次。真空管改变状态(开关闭合或断开)的速度比继电器快1 0 0 0倍---->相当于主频变快了

    在2 0世纪4 0年代初,真空管开始在新的计算机中替换继电器。直到1 9 4 5年,晶体管制成。正如继电器机器称为机电式计算机,真空管则是第一台电子计算机的基础。

    之后介绍几位大佬:是艾伦· M·图灵,约翰·冯·诺依曼,克劳德·香农

    简单介绍一下约翰·冯·诺依曼,他改进了EDVAC,使得EDVAC比ENIAC(此机器为第一代)更先进。EDVAC的设计者感觉到在计算机内部应该使用二进制数,而E N I A C用的是十进制数;计算机应该具有尽可能大的
    存储器,当程序执行时,这个存储器可用来存储程序代码和数据;( E N I A C中的情况不是这样,对E N I A C进行编程是通过断开开关和插上电缆来进行的。)指令应该在存储器中顺序存放并用程序计数器来寻址,但也应该允许条件转移。这种设计思想叫作存储程序概念。这种设计思想是重要的革命化的一步,今天称为冯·诺依曼体系结构,但冯·诺依曼体系结构也带来冯·诺依曼瓶颈,冯·诺依曼型机器需要花费大量的时间从存储器中取出指令来准备执行

    通过贝尔实验室过度到晶体管,

    基极上的一个小电压能控制一个很大的电压经过集电极到发射极。若基极上没有电压,它会有效截止晶体管。

    晶体管首创了固态电子器件,意思是晶体管不需要真空,可由固体做成,特别是指由半导体和当今最普遍的硅制成。除了比真空管体积更小外,晶体管功耗小,发热少,并且更耐
    用。携带一个电子管收音机很不方便。晶体管收音机靠小电池供电,并且不像电子管,它不会变热

    这里有一个问题:晶体管当然使计算机更可靠,更小和更省电,但晶体管能使计算机的制造更简单吗?
      并非如此。虽然晶体管使得在一个小空间里能安装更多的逻辑门,但你还得担心这些组
    件的互连。连接晶体管形成逻辑门像连接继电器和真空电子管一样困难,某种程度上,它甚
    至更困难,因为晶体管较小,不容易掌握。如果想用晶体管建造第1 7章所建造的计算机及
    6 4 K B的R A M阵列,设计工作中的一部分将是设法发明某种能容纳所有组件的结构。这些劳
    动是乏味的,需要在数百万晶体管之间建立起数百万连接。

    但是,我们知道一些晶体管的连接会重复出现。许多晶体管几乎都是先连接成门,门再连接成更高级的部件。

    如果晶体管事先能连接成通用的结构,那么组装一台计算机就容易多了,这就是集成电路的基础思想。

    第19章 两种典型的微处理器

      不是很感兴趣,扫了一遍,记下我感兴趣的

      把微处理器寻址的存储器叫作随机访问存储器( R A M)是有原因的:微处理器可以简单地根据提供的地址访问某一存储位置。R A M就像一本书一样,我们可以打开它的任何一页。它并不像做在微缩胶片上的一个星期的报纸,要找到周六版,需扫过大半周。同样,它也不同于磁带,要播放磁带上的最后一首歌需快进整个一面。微缩胶片和磁带的存储不是随机访问的,而是顺序访问的。

      介绍堆栈的重要性,提供子程序调用。

    第20章 ASCII码和字符映射

      为了以数字形式表示文本,必须开发一些系统使得系统里的每一个字母有唯一的编码。文本中也存在数字和标点符号,所以也必须有它们的编码。简单地说,所有的字母、数字和符号都要编码,这样的系统叫作字符编码集,每一个编码叫作字符编码。

      在介绍ASCII码之前,首先介绍了B a u d o t码,其只有6位,基本的通信是没有问题的,但是会导致歧义,由于转义字母导致的结果。为了改进,需要设计新的编码系统。引入如果想确定比B a u d o t更好的编码系统需要多少位,只需把各种符号加起来:大小写字母需5 2个代码,0~9数字需1 0个代码,这已经有6 2个,加上一些标点符号,则超过了6 4个代码,这意味着需要多于6位的编码。但是距离1 2 8个字符数,似乎还有足够的余地。如果超过1 2 8个字符,则需要8位编码。故此系统需要7位来进行编码,但由于计算机内一般是按字节存储信息,故一个ASCII码占1个字节,8位。‘  

      但是ASCII码也有缺陷:太倾向于美国,为了进行拓展,进行了各种改进,其中有一种,设计了新的码制,这就是Unicode。

      在假定会有一个特定的字符编码系统能适用于世界上所有语言的前提下, 1 9 8 8年,几个主要的计算机公司一起开始研究一种替换A S C I I码的编码,称为U n i c o d e。鉴于A S C I I码是7位编码,U n i c o d e采用1 6位编码,每一个字符需要2个字节。这意味着U n i c o d e的字符编码范围从0 0 0 0 h~F F F F h,可以表示65 536个不同字符。对世界上所有可用计算机进行来通信的语言来说,有足够的扩展空间。U n i c o d e编码不是从零开始的,开始的1 2 8个字符编码0 0 0 0 h~0 0 7 F h与A S C I I码字符一致。U n i c o d e编码0 0 A 0 h~0 0 F F h也与前面讲到的对A S C I I码扩展的第1号拉丁字母表一致。其他世界范围的标准也收编在U n i c o d e中。

  • 相关阅读:
    博客开通第77天
    guzzlephp使用教程
    Mac下php70memcache安装
    opcache开启和关闭
    php的getimagesize方法详解
    Yii2框架解剖
    AES加密:PHP与Java互通问题
    公司网页监控到的各种不能识别的浏览器userAgent,都是些什么啊
    document.write
    js模版引擎v6注解
  • 原文地址:https://www.cnblogs.com/caishunzhe/p/12304112.html
Copyright © 2011-2022 走看看