Python开发必知的计算机理论基础

一、冯诺依曼体系架构

在这里插入图片描述
1、CPU由运算器和控制器组成
运算器:完成各种算数运算、逻辑运算、数据传输等数据加工处理。
控制器:控制程序的执行,主要用来控制和指挥程序和数据的输入运行,以及处理运算结果。
存储器:用于记忆程序和数据,例如内存
输入设备:将数据或者碍序输入到计算机中,例如键盘、鼠标
输出设备:将数据或程序的处理结果展示给用户,如打印机输出,显示器输出等。
CPU中还有寄存器和多级缓存Cache

冯诺依曼体系结构的指令和数据均采用二进制码表示;指令和数据以同等地位存放于存储器中,均可按地址寻访;指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数所在存储器中的位置;指令在存储器中按顺序存放,通常指令是按顺序执行的,特定条件下,可以根据运算结果或者设定的条件改变执行顺序;机器以运算器为中心,输入输出设备和存储器的数据传送通过运算器。

然而现在的计算机基本以存储器作为中心,如下图所示
在这里插入图片描述

但是由于运算器和控制器在逻辑关系和电路结构上联系十分紧密,通常将它们合起来统称为中央处理器,简称CPU,把输入输出设备简称为I/O设备,这样现代计算机可以认为由三大部分组成:CPU与主存储器可以称为主机,I/O设备称为外部设备,结构图如下1.9
在这里插入图片描述

ALU叫做算数逻辑运算单元,用来完成算术逻辑运算。CU(Control Unit)叫做控制单元,用来解释存储器中的指令,并发出各种操作命令来执行指令。ALU和CU是CPU的核心部件。I/O设备也受CU控制,用来完成相应的输入,输出操作。

二、计算机语言

1.机器语言

     机器语言是用二进制代码表示计算机能直接识别和执行的一种机器指令的集合,它是计算机的设计者通过计算机的硬件结构赋予计算机的操作功能。

优点:灵活、直接执行、速度快等

缺点:不同型号的计算机的机器语言是不相通的

         难于辨别和记忆,编程人员要熟记所用计算机的全部指令代码和代码的含义

         编写程序花费时间太长,是运行时间的几十倍和几百倍

         编出的程序全是些0和1的指令代码,不方便阅读和修改还容易出错

         等等

简单来说,机器语言就是用一堆0或1构成的语言,基于机器语言的这么多的缺点,除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。

2.汇编语言

     百度百科上是这么说的:汇编语言是一种用于电子计算机、微处理器、微控制器或其他可编程器件的的低级语言,亦称为符号语言。在汇编语言中,用助记符代替机器指令的操作码,用地址符号或标号代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。

机器语言是用二进制代码也就是0或1用于程序设计,汇编语言就是用助记符等一些符号代替二进制代码。这里就有一个问题了,计算机能读懂的只有机器指令,也就是二进制代码,那么计算机如何能理解用汇编语言编写的程序呢?这时,就需要一个能够将汇编指令转换成机器指令的翻译程序—编译器,程序员用汇编语言写出源程序,在用汇编编译器将其编译为机器指令,由计算机最终执行。

3.高级语言

         高级语言相对于机器语言,是一种指令集的体系,是高度封装了的编程语言,与低级语言相对。

         它是以人类的日常语言为基础的一种编程语言,使用一般人易于接受的文字来表示(例如汉字、不规则英文或其他外语),从而使程序编写员编写更容易,亦有较高的可读性,以方便对电脑认知较浅的人亦可以大概明白其内容。

汇编语言在机器语言的基础上引入了助记符,但是这些助记符量大难记,因此,我们又有了高级语言。定义上很清楚的表达了高级语言,他以人类日常语言为基础,这样的话,更易于编写,而且有较高的可读性。

哪种计算机语言属于低级语言?

    人们通常把机器语言和汇编语言称为低级语言,可能是因为他需要程序员大量的记忆吧!虽然他们是低级语言,但并不代表就要被丢弃,相反,汇编语言仍然是计算机(或微机)底层设计程序员必须了解的语言,在某些行业与领域,汇编是必不可少的,非它不可适用。

三种计算机语言如何在计算机上执行?

机器语言:机器语言可以直接在计算机上执行。

汇编语言和高级语言:用某种汇编语言或高级语言编写的程序称为源程序,源程序不能直接在计算机上执行,如果源程序是用汇编语言编写的,则需要一个汇编程序将其翻译成目标程序后才能执行。如果源程序使用某种高级语言编写的,则需要对应的解释程序或编译程序对其进行翻译,然后在计算器上运行。

解释程序与编译程序比较?

    解释程序也成为解释器,他或者直接执行源程序,或者将源程序直接翻译成中间代码后再加以执行,而编译程序也称为编译器则是将源程序翻译成目标语言程序,然后在计算机上运行目标程序。

   两种语言处理程序的根本区别是:在编译方式下,机器上运行的是与源程序等价的目标程序,编译程序和源程序都不参加目标程序的执行过程;而在解释方式下,解释程序和源程序要参与到程序的运行过程中,运行程序的控制权在解释程序。
   总的来说:编译语言把源代码转换成目标机器的CPU指令
                     解释语言解释后转换成字符码,运行在虚拟机上,解释器执行中间代码

编译型语言在编译过程中生成目标平台的指令,解释型语言在运行过程中才生成目标平台的指令。

简单点来说就是:

                      汇编语言编写的

                               编译程序---生成目标程序 ;

                      高级语言编写的 

                               编译程序---生成目标程序---不参与程序的执行过程;

                               解释程序---翻译成中间代码,不生成目标程序---参与程序的执行过程。

在这里插入图片描述
参考:https://blog.csdn.net/hejingfang123/article/details/84668126

三、高级语言的发展

非结构化语言
1、编号或标签、GOTO,子程序可以有多个入口和出口
2、有分支、循环

结构化语言
1、任何基本结构只允许是唯一入口和唯一出口
2、顺序、分支、循环,废弃GOTO

面向对象语言
1、更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承
2、封装、继承、多态

函数式语言
1、古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中
2、函数是“一等公民”,高阶函数

四、程序Program

程序
1、算法+数据结构=程序
2、数据一切程序的核心
3、数据结构是数据在计算机中的类型和组织方式
3、算法是处理数据的方式,算法有优劣之分

写程序难点
1、理不清数据
2、搞不清处理方法
3、无法把数据设计转换成数据结构,无法把处理方法转换成算法
4、无法用设计范式来进行程序设计
5、世间程序皆有bug,但不会debug

五、Python解释器

官方CPython
C语言开发,最广泛的Python解释器

IPython
一个交互式、功能增强的Cpython

PyPy
Python语言写的Python解释器,IT技术,动态编译Python代码

Jython
Python的源代码编译成ava的字节码,跑在/VM上Slython

IronPython
与ython类似,运行在Net平台上的解释器,Python代码被编译成Net的字节码

猜你喜欢

转载自blog.csdn.net/weixin_44001568/article/details/105165120