一组能让计算机识别和执行的指令
电子计算机
能够执行程序的机器
现代计算机
英国数学家、逻辑学家,艾伦.麦席森.图灵被称为计算机科学之父,人工智能之父。图灵提出的著名的图灵模型为现代计算机的逻辑工作方式奠定了基础
图灵机,又称图灵计算机、图灵计算机,由图灵提出的一种抽象计算机模型,即将人们使用纸笔进行数学运算的过程进行抽象,由一个虚拟的机器替代人们进行数学运算。
所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成一个一个的小方格,每个方格都有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。
冯.诺依曼著名匈牙利美籍犹太人,数学家、计算机科学家、物理学家和化学家,数字计算机之父。他提出了以二进制作为数字计算机的数制基础,计算机按照程序顺序执行,应有五大部件。
1、CPU由运算器和控制器组成
2、运算器,完成各种算数运算、逻辑运算、数据传输等数据加工处理
3、控制器,控制程序的执行
4、存储器,用于记忆程序和数据,例如内存
5、输入设备,将数据或者程序输入到计算机中,例如键盘、鼠标
6、输出设备,将数据或程序的处理结果展示给用户,例如显示器、打印机
7、CPU中还有寄存器和多级缓存Cache
寄存器:寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,存器有累加器(ACC)。—可以不用过多了解。
缓存就是数据交换的缓冲区(称作Cache),当某一硬件要读取数据时,会首先从缓存中查找需要的数据,如果找到了则直接执行,找不到的话则从内存中找。由于缓存的运行速度比内存快得多,故缓存的作用就是帮助硬件更快地运行。
工作原理
1、读取顺序
CPU要读取一个数据时,首先从Cache中查找,如果找到就立即读取并送给CPU处理;如果没有找到,就用相对慢的速度从内存中读取并送给CPU处理,同时把这个数据所在的数据块调入Cache中,可以使得以后对整块数据的读取都从Cache中进行,不必再调用内存。
正是这样的读取机制使CPU读取Cache的命中率非常高(大多数CPU可达90%左右),也就是说CPU下一次要读取的数据90%都在Cache中,只有大约10%需要从内存读取。这大大节省了CPU直接读取内存的时间,也使CPU读取数据时基本无需等待。总的来说,CPU读取数据的顺序是先Cache后内存。
2、缓存分类
Intel从Pentium开始将Cache分开,通常分为一级高速缓存L1和二级高速缓存L2。在以往的观念中,L1 Cache是集成在CPU中的,被称为片内Cache。在L1中还分数据Cache(D-Cache)和指令Cache(I-Cache)。它们分别用来存放数据和执行这些数据的指令,而且两个Cache可以同时被CPU访问,减少了争用Cache所造成的冲突,提高了处理器效能。
3、读取命中率
CPU在Cache中找到有用的数据被称为命中,当Cache中没有CPU所需的数据时(这时称为未命中),CPU才访问内存。从理论上讲,在一颗拥有2级Cache的CPU中,读取L1 Cache的命中率为80%。也就是说CPU从L1 Cache中找到的有用数据占数据总量的80%,剩下的20%从L2 Cache读取。由于不能准确预测将要执行的数据,读取L2的命中率也在80%左右(从L2读到有用的数据占总数据的16%)。那么还有的数据就不得不从内存调用,但这已经是一个相当小的比例了。在一些高端领域的CPU(像Intel的Itanium)中,我们常听到L3 Cache,它是为读取L2 Cache后未命中的数据设计的—种Cache,在拥有L3 Cache的CPU中,只有约5%的数据需要从内存中调用,这进一步提高了CPU的效率。
编程基础
计算机语言
人与计算机之间交互的语言
机器语言
1、一定位数组成二进制的0和1的序列,成为机器指令。机器指令的集合就是机器语言
2、与自然语言差异太大,难学、难懂、难写、难记、难查错
汇编语言
1、用一些助记符号代替机器指令,称为汇编语言。ADD A,B指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中
2、汇编语言写好的程序需要汇编程序转换成机器指令
3、汇编语言只是稍微好记了些,可认为就是机器指令对应的助记符,只是符号本身接近自然语言
语言分类
低级语言
1、面向机器的语言,包括机器语言、汇编语言
2、不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序
高级语言
1、接近自然语言和数学语言的计算机语言
2、高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序
3、1954年正事发布的Fortran语言是最早的高级语言,本意是公式翻译
4、人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理
二者对比:
1、语言越高级,越接近人类的自然语言和数学语言
2、语言越低级,越能让机器理解
3、高级语言和低级语言之间需要一个转换的工具:编译器、解释器
4、C、C++等语言的源代码需要本地编译
5、Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行
6、编译语言,把源代码转换成目标机器的CPU指令
7、解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码
程序:
1、算法+数据结构=程序
2、数据一切程序的核心
3、数据结构是数据在计算机中的类型和组织方式
4、算法是处理数据的方式,算法有优劣之分
写程序的难点:
1、理不清数据
2、搞不清处理方法
3、无法把数据设计转换成数据结构、无法把处理方法转换成算法
4、无法用设计范式来进行程序设计
5、世间程序皆有bug,但不会debug