计算机的编程语言
翻译型语言:C/C++、Objective-C、Golang
解释型语言:Python、Php、JavaScript
翻译+解释型语言:Java、C#
程序翻译和程序解释
计算机只能理解二进制这样的比特位,无法理解人类的语言,所以需要做语言之间的转换。
假设现在有高级的程序语言A,和低级的程序语言B(B能被计算机直接执行)
程序翻译
我们用A编写的代码会先生成B语言代码,再交由计算机执行。
将A生成B的工具叫编译器,生成的过程叫程序翻译。
程序解析
我们使用B语言实现了一个程序,这个程序接收A语言作为输入,然后将A语言进行等价的逻辑转换成B语言,再执行。
这个转换的过程叫程序解释,使用B语言编写的程序叫解释器。
总结
计算机执行的指令都是低级语言B
翻译过程生成新的B程序,解释过程不生成新的B程序
解释的过程是拿B编写的解释器来解释A程序
计算机的层次
计算机的层次一般如下图:
硬件逻辑层
门、触发器等逻辑电路组成
属于电子工程的领域
微程序机器层
编程语言是微指令集
微指令所组成的微程序直接交由硬件执行
传统机器层
编程语言是CPU指令集(机器指令)
编程语言和硬件是直接相关
不同架构的CPU使用不同的CPU指令集
机器指令 = 微程序 > 微指令
一条机器指令对应一个微程序
一个微程序对应一组微指令
操作系统层
操作系统层是在软件和硬件之间的适配层
向上提供了简易的操作界面
向下对接了指令系统,管理硬件资源
汇编语言层
编程语言是汇编语言
汇编语言可以翻译成可直接执行的机器语言(机器指令)
完成翻译的过程的程序就是汇编器
高级语言层
编程语言为广大程序员所接受的高级语言
高级语言的类别非常多,常见的高级语言有:Python、Java、C/C++、Golang等
应用层
满足计算机针对某种用途而专门设计的软件,如XCode
计算机的速度单位
容量单位
在物理层面,高低电平记录信息,理论上只认识0/1两种状态,0/1称为bit(比特位)
0/1能够表示的内容太少了,需要更大的容量表示方法, 字节:1Byte=8bits
速度单位
网络速度:Mbps ==> M bit per second
100Mbps = 100 / 8 = 12.5 MB
CPU频率
CPU的速度一般体现为CPU的时钟频率
CPU的时钟频率的单位一般是赫兹(Hz,秒分之一,每秒中的周期性变动重复次数的计量)
主流CPU的时钟频率都在2GHz以上
计算机的字符和编码集
ASCII码
使用7个bits就可以完全表示ASCII码
包含95个可打印字符,33个不可打印字符(包括控制字符),95 + 33 = 128 = 2^7
由于很多应用或者国家中的符号ASCII码都无法表示,于是对其进行扩充,7bits => 8bits
Extended ASCII码
常见数学运算符,带音标的欧洲字符,其他常用符、表格符等。
世界上有很多语言体系,ASCII无法胜任字符编码国际化的任务。
中文编码集
GB2312
《信息交换用汉字编码字符集——基本集》
一共收录了 7445 个字符,包括 6763 个汉字和 682 个其它符号
GBK
《汉字内码扩展规范》
向下兼容GB2312,向上支持国际ISO标准,收录了21003个汉字,支持全部中日韩汉字
兼容全球的字符集:Unicode
Unicode:统一码、万国码、单一码
Unicode定义了世界通用的符号集,UTF-*实现了编码
UTF-8以字节为单位对Unicode进行编码
Windows系统默认使用GBK编码,编程推荐使用UTF-8编码。
有疑问加站长微信联系(非本文作者)