计算机发展史
世界上很多的高科技发明,来自于军事领域
计算机最初是用来计算弹道导弹轨迹的
弹道导弹 ~~国之重器,非常重要
两弹一星
原子弹,氢弹,卫星(背后的火箭发射技术)
计算弹道导弹轨迹的计算过程非常复杂,计算量也很大 ~~ 但是可以手动计算出来的(当年我国研究两弹一星,就是全靠算盘算出来的) ~~ 1.算的慢 2. 算得可能不准 => 因此,就迫切的需要一台机器来帮助我们计算=> 计算机(专用计算机)就出现了
第一台计算机, 埃尼阿克,诞生于1946年,美国普林斯顿大学,主要用来计算弹道导弹轨迹,运算速度(CPU主频)每秒5000hz(每秒5000次),重达几十吨,占地面积为好几个房间 ~~ 虽然非常low,但还是远远超过人工手动计算
博主破笔记本的处理器处理器 12th Gen Intel® Core™ i5-12500H2.50 GHz ~~ 1GHz即十亿赫兹(10^9 Hz),每秒计算25亿次
珠脑心算(珠心算) ~~ 打算盘,或者心算
看着一长串需要运算的数字,在极短的时间内就能得出正确的结果的珠心算人才,
是属于国家战略储备人才!!!这种人才在极端情况下(即所有电子设备都失效了),仍然
可以把弹道导弹的轨迹算出来对敌人进行反制
随着时代的发展,通用型计算机开始出现
通用型计算机的愿景是图灵(祖师爷)提出来的,冯洛伊曼(祖师爷)实现的
图灵和冯洛伊曼这两位祖师爷是属于同一个时代的人,都是那个时代的天才,诺依曼只比图灵大8岁
~~ 但是冯洛伊曼在美国,图灵在英国
冯洛伊曼曾经对图灵抛出橄榄枝,邀请他一起来研究通用计算机,但可惜被图灵给拒绝了,因此两位祖师爷就没有一起共事过
图灵的介绍
图灵,本来只是一个数学家,但是随着二战爆发,
在欧洲战场,作为世界老大,号称日不落帝国的英国,被后起之秀的德国打的很惨
英国为了寻求反击,对德国进行有效的进攻,就需要获取到德国的军事部署
当时各国的通讯都是通过无线电报进行的,只要你有电台,就能收到数据.
但是由于德国的无线电报都是加密的,就需要进行解密
~~ 对于无线电报的解密,很多国家都是有专门的人才储备,英国也有.
但是由于德国的著名密码系统Enigma的出现,通过机器的方式来进行加密,
导致使用人力破解这种方式就没了作用,束手无策了,根本算不过来,就算破解了,
也会发现加密方式早就变了
由于图灵本来就一直在研究计算机相关的内容,于是,图灵就站了出来
~~提出用魔法打败魔法!!! => 通过仔细研究Engima的构造,造出来一个反Engima机,
用机器来破解机器加密的数据!!!
因此,通过这样的一种手段,让英国解析出了很多来自德国的重要军事情报,
这些情报在当时就直接推动了著名战役诺曼底登陆(欧洲战场重要的转折点)的发生,
最后,帮助盟军取得了二战的胜利.
不过,遗憾的是,图灵祖师爷,在战后遭到了政府的迫害 =>
1952年,英国政府对图灵的同性恋取向定罪,随后图灵接受化学阉割,
1954年6月7日,图灵吃下含有氰化物的苹果中毒身亡,享年42岁。
2013年12月24日,在英国司法大臣克里斯·格雷灵的要求下,
英国女王伊丽莎白二世向图灵颁发了皇家赦免,进行了平反
图灵奖,名称就取自艾伦·麦席森·图灵,计算机领域的国际最高奖项,被誉为“计算机界的诺贝尔奖”。
独显跟集显有什么区别
集显是集成在CPU内部的.
独显是独立出来的.
同时代的产品相比,最好的集显,也打不过最差的独显
CPU 工作流程
~~ (工作不用&面试不考)
逻辑门
电子开关 —— 机械继电器(Mechanical Relay)
~~ 它可以实现 1 位(bit) 的基本逻辑运算
门电路(Gate Circuit)
-
与门
-
或门
-
非门
与门,或门,非门的实现,借助于二极管等设备特殊物理特性
输入的信号是1,0这样的比特位,通过这个门电路,来计算出与或非的值
异或门 ~~ 相同为0,相异为1
算术单元(Arithmetic Unit)
~~ 算数单元,负责计算机里的所有数字操作,比如四则运算
- 半加器
~~ 两个比特位相加
- 全加器
~~ 三个比特位相加
- 加法器 ~~ 由半加器和全加器构成
~~ 针对两个二进制的数字进行相加
不仅仅是针对一个比特运算,而是多位的运算
~~ 加法器,不仅可以算加法,
还可以算减法 => 本质上是加上减数的补码
乘法 => 连续相加
除法 => 连续相减
有了加法器,加减乘除都搞定了!!!
CPU的设计理念与道家老祖宗提出的道生—,一生二,二生三,三生万物不谋而和!!!
推荐阅读一下科幻小说<<三体>>中有关人列计算机的描述,有助于加深你的理解!!!
博主在这为你们简单介绍一下
<<三体>>的人列计算机的诞生背景:
三体星人(外星人),他们的生存的星球上方有三个太阳,三个太阳做着三体运动,导致其运动轨迹是
相当混乱的,这就导致他们无法进行正常的农业生产,社会发展举步维艰,文明发展甚至出现倒退的情况!!!
这时,他们的领袖“秦始皇”广招天下能人,来制作“万年历”,对农业生产进行指导,促进帝国发展.无数的大佬
就站了出来,贡献出自己制作的“万年历”,不过都前赴后继的都失败了.直到两位大佬的出现,牛顿和冯洛伊曼
牛顿 : 万有引力定律 + 牛顿三定律 => 列方程 ~~ 有关恒星与行星之间运动的轨迹方程
微积分 => 解方程 ~~ 就可以得到“万年历”
冯洛伊曼 : 陛下,给我三千万个训练有素的士兵!!!我来解方程
用三个士兵来为陛下进行演示
三个士兵站成品字形,上面两个代表输入,下面一个代表输出.
每个士兵拿着两个小旗,一个旗子是黑旗(图中用红旗代替),一个是白旗(图中用绿旗代替)
红旗表示0,绿旗表示1
士兵挥旗规则
如果两个为输入的士兵都挥动红旗 ~~ 输入了2个0 => 输出的士兵挥动红旗 ~~ 输出了1个0
如果两个为输入的士兵都挥动绿旗 ~~ 输入了2个1 => 输出的士兵挥动绿旗 ~~ 输出了1个1
如果两个为输入的士兵一个挥动红旗,一个挥动绿旗 ~~ 输入了1个1和1个0
=> 为输出的那个士兵挥动红旗 ~~ 输出了1个0 ~~=> 就构成了一个与门
如果两个为输入的士兵一个挥动红旗,一个挥动绿旗 ~~ 输入了1个1和1个0
=> 为输出的那个士兵挥动绿旗 ~~ 输出了1个1 ~~=> 就构成了一个或门
类似的,如果用两个士兵,一个代表输入,一个代表输出
为输入的那个士兵挥动红旗 ~~ 输入了1个0
=> 为输出的那个士兵挥动绿旗 ~~ 输出了1个1
相反的是:
为输入的那个士兵挥动绿旗 ~~ 输入了1个1
=> 为输出的那个士兵挥动红旗 ~~ 输出了1个0
~~=> 这两个士兵就构成了一个非门
有了基本的与门,或门,非门,用更多的士兵组合,就可以构成异或门
更多的异或门 => 就可以构成半加器和全加器
更多的半加器和全加器 => 就可以构成加法器
通过更多的士兵,构造出更多的门电路,也就有了CPU ,
进一步的也就有了存储器,输入设备,输出设备…
这时,一个人列计算机就出现了,冯洛伊曼还为这个计算机编写了一套操作系统,
基于这个操作系统,来进一步的去进行解方程操作
结果如何???
最终棋差一招.牛顿力学体系,不够精确,
没有考虑相对论造成的影响,计算出现误差,功亏一篑,
这黑锅得牛顿来背,最可气的是牛顿最后还跑路了!!!
这本书,对于我们找工作也是有一定帮助的
因为面试中有一些非技术的问题.
最近在看啥书?"(常见经典问题)
你回答说你看的书必须是有意义,
另一方面家喻户晓.三体就是很好的选择.(很多程序猿都看过)
和面试官聊三体,你就很容易和面试官有共同语言,刷得好感,提高印象分
比如一些三体中值得讨论,具有争议的话题,”“章北海的做法是否正确?”
让面试官对你有更多的了解!!!
编程语言(Program Language )
~~ 被视为是程序猿和计算机之间沟通桥梁
编程语言和日常使用自然语言,是有很大的区别的.编程语言必须要严谨,无歧义.
世界上的编程语言种类繁多.大体可以分成三个大类
注意:高级语言的一条语句(Statement)往往对应很多条指令(Instruction)才能完成
-
机器语言
二进制(0,1)构成的指令 ~~ CPU能够识别
厂商在设计CPU的时候就会设计好"指令集”CPU都支持哪些指令,以及这些指令要怎么工作.(这就类似于CPU提供的API)
~~ 但是人对机器语言很难理解,于是发明了汇编语言 -
汇编语言
通过简单的单词作为"助记符",代替二进制的指令.
汇编语言与机器语言是一 一对应的,
每一个机器指令,就对应到一条汇编语句不同的CPU有不同的体系架构支持的指令集也是不一样的.
即使是同类架构,不同的版本,指令集也是不一样的,导致了汇编语言会不一样.你在学习汇编的时候,一定要明确你学的是针对哪个系列的 CPU的…
CPU有x86, arm, mips…很多不同种架构的学校学汇编大概率是8086CPU体系下的汇编语言
=> 16位汇编,支持的指令有限寄存器个数也比较少,
现在是64位CPU,支持的指令更多寄存器个数也更多.8086CPU ~~ Intel早期的一个经典CPU,是一个16位CPU.
后面又有了286,386,486….而这些后面诞生的以86结尾的CPU型号
~~ 被统称为x86(非常重要的CPU的体系结构.当下主流的PC和服务器都是x86结构)
手机,路由器,主要是arm架构. -
高级语言
C,C++,C#(读作C sharp)
~~ C++ 相比于C做出改进,多2个加号++
~~ C# 相对于C++做出改进,又多2个加号++.
~~ 一个 # 相当于4个+(一个井字可以由4个+构成)Java,Python,PHP
Ruby,JS(JavaScript),GO
U型号
~~ 被统称为x86(非常重要的CPU的体系结构.当下主流的PC和服务器都是x86结构)
手机,路由器,主要是arm架构.
-
高级语言
C,C++,C#(读作C sharp)
~~ C++ 相比于C做出改进,多2个加号++
~~ C# 相对于C++做出改进,又多2个加号++.
~~ 一个 # 相当于4个+(一个井字可以由4个+构成)Java,Python,PHP
Ruby,JS(JavaScript),GO