现代计算机在冯诺曼体系结构基础上进行修改,解决CPU与存储设备之间的性能差异问题。
我们将人类语言变为计算机能看懂的语言,需要进行语言之间的转换。程序翻译就是将较为高级的计算机语言L1转为较为低级的计算机语言L0(编译器),L0就是计算机实际执行的语言。程序解释就是把较为高级的语言L1,作为用L0语言实现的一个程序的输入,然后得到较为低级计算机语言L0。
程序翻译与程序解释的对比:
计算机实际执行的指令都是L0
翻译过程生成新的L0程序,解释过程不生成新的L0程序
解释过程由L0编写解释器去执行L1程序
程序翻译的常见语言:C/C++, Object-C, Golang; 程序解释的常见语言:Python, Php, JavaScript。而Java和C#是属于翻译加解释性语言,Java程序转为JVM字节码的过程是程序翻译,由JVM字节码变成机器码的过程是程序解释。
计算机的层次硬件逻辑层:门、触发器等逻辑电路组成,属于电子工程领域。
微程序机器层:编程语言是微指令集,微指令所组成的微程序直接交由硬件执行。
传统机器层:编程语言是CPU指令集(机器指令),编程语言和硬件直接相关,不同架构的CPU使用不同的指令集。一条机器指令对应一个微程序,一个微程序对应一组机器指令。
操作系统层:向上提供了简易的操作界面,向下对接了指令系统,管理硬件资源,操作系统层是硬件和软件之间的适配层。
汇编语言层:编程语言是汇编语言,汇编语言可以翻译成可直接执行的机器语言,完成翻译过程的程序就叫汇编器。
高级语言层:编程语言为广大程序员所接受的高级语言,高级语言的种类非常多,有几百种,常见的高级语言有C/C++、Java、Python、Golang等。
应用层:满足计算机针对某种用途而专门设计,例如常见的办公软件Excel,Word,PPT等。 计算机的字符与编码集
使用7个bits就可以完全表示ASCII码,包含95个可打印字符,33个不可打印字符(包括控制字符),即 33+95=128=27,但是这个ASCII码在很多应用和很多国家中的符号都无法表示,例如数学符号:“\(\div\) \(\neq\) \(\geq\) \(\approx\) \(\pi\)”。所以在第一次对ASCII码进行扩充时,7bits=> 8bits,在可拓展的ASCII码中,包含了常见的运算符,带音标的欧洲字符,和其他常用符、表格等。
字符编码集的国际化:由于欧洲、中亚、东亚、拉丁美洲国家的语言多样性,造成语言体系不一样,不以有限字符组合的语言,尤其是中国、韩国、日本的语言最为复杂。国标2312(GB2312):《信息交换用汉字编码字符集-基本集》是中文编码集,一共收录了7445个字符,包括6763个汉字和682个其他符号。Unicode(统一码、万国码、单一码)定义了世界通用的符号集,UTF-*实现了编码,UTF-8以字节为单位对Unicode进行编码。Unicode是兼容全球的字符集。