计算机发展简史
计算机发展四个阶段
畅想第五个阶段的计算机
生物计算机
量子计算机:腾讯,阿里,中科院
后面主要讨论微型计算机
微信计算机的发展历史 早期,受限于性能只有有单核cpu
在这个时期提出了摩尔定律: 集成电路性能每隔18-24个月就会提升一倍
单核的cpu性能逐渐到上限, 就衍生出了多核cpu
计算机分类
超级计算机
大型计算机
迷你计算机(服务器)
工作站
微型计算机
微型计算机与上述计算机无本质上区别
计算机的体系与结构
早期的计算机只能实现固定的程序(计算器, 游戏机)
后面出现了 冯诺依曼体系
将指令与数据一起存储的计算机设计概念结构
存储程序指令, 设计通用电路
冯诺依曼体系具体要求:
必须有存储器
必须有控制器
必须有运算器
必须有输入设备
必须有输出设备
现代计算机都是冯诺依曼计算机
将需要的数据放到计算机里(输入设备) ,
能够长期记忆程序、数据、中间结果、 最终结果的能力 (存储器),
能够具备算术、逻辑运算、数据传送等数据加工处理的能力(控制器,运算器),
能够按照要求将结果输出给用户(输出设备)
早期冯诺依曼体系
早期CPU = 运算器 + 控制器
早期冯诺依曼体系存在瓶颈: cpu和存储器速率之间存在不可调和的问题
CPU速率很快, 存储器传输速率慢, 导致cpu经常空转等待数据传输
为了解决这个问题,出现了现代冯诺依曼体系
现代CPU = 存储器+控制器+运算器
广义存储器: 磁带,硬盘 这里的存储器是指围绕着cpu的更高速的设备,CPU寄存器、内存
计算机的层次和编程语言
程序翻译与程序解释
程序翻译
高级计算机语言L1
低级计算机语言L0
进行语言间的转换, 转换的过程使用编译器来实现的
程序解释
解释器将每一句L1的语言转换成L0的语言(与程序翻译不同, 程序翻译用编译器直接生成L0)
程序翻译型语言:c/cpp, Object-C Golang
程序解释型语言:Python, Php, Javascript
翻译+解释 Java C#
计算机的层次与编程语言
硬件逻辑层:
门, 触发器等逻辑电路组成
属于电子工程的领域
微程序机器层: 编程语言是微指令集, 微指令所组成的微程序直接交由硬件执行
传统机器层: 编程语言: CPU指令集(机器指令), 编程语言和硬件直接相关 不同CPU架构的指令集不同
一条机器指令对应着一个微程序,一个微程序对应一组微指令集
操作系统层: 向上提供简易操作界面 向下对接指令系统,管理硬件资源 操作系统是在软件和硬件之间的适配层
汇编语言层: 编程语言: 汇编语言;可翻译成直接执行的机器语言。完成这个翻译过程的是汇编器
高级语言层: 程序员用的高级语言(汇编语言程序员也会用,但是很少),高级语言类别多, 几百种,常见 Java,cpp, golang,python
计算机的计算单位
容量单位
用 0/1来记录 为什么是0/1? 因为高低电平的关系, 高电平1 ,低电平0
计算机的计算单位
1Byte = 8 bit 1kb = 1024b
容量单位: 为什么网上买的移动硬盘500g, 格式化之后只剩465g了?
硬盘商一般用10进位标记容量
速度单位
100M宽带是什么意思?
是指100M/s 为什么电信拉的100M光纤, 测试峰值速度只有12M每秒?
网络常用单位为Mbs
100M/s = 100 Mbps = 100Mbit/s = (100/8)MB/s = 12.5MB/s
CPU速度 CPU速度一般为CPU的时频率
单位一般是赫兹(Hz)
主流CPU的时钟频率在2GHz以上
Hz 其实是秒分之一
不是专有单位 表示每秒种周期性变动重复次数的计量
2GHz = 2*10^3Hz = 每秒二十亿次
计算机的字符与编码集
字符编码
ASCII码
一开始是7bit位,后来扩充成8bit位 变成Extended ASCII
中文编码 GB2312
GBK 向下兼容GB2312 ,向上支持国际ISO标准
Unicode: 统一码,万国码,单一码
Unicode定义世界通用符号集, UTF-*实现了编码
UTF-8以字节为单位对Unicode进行编码
兼容全球的字符集: Unicode
windows默认GBK编码
编程推荐UTF-8