开发者学堂课程【Python 开发基础入门:开发必会计算机理论基础】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/556/detail/7648
开发必会计算机理论基础
内容介绍:
一、编程基础
二、计算机五大部件
三、冯诺伊曼体系架构
四、语言分类
五、低级语言到高级语言的发展
六、编译语言
七、解释语言
八、高级语言的发展
九、程序 Program
十、Python 解释器
一、编程基础
程序:
一组能让计算机识别和执行的指令
电子计算机:
能够执行程序的机器
现代计算机:
图灵提出的著名的图灵机模型,为现代计算机的逻辑工作方式奠定了基础
冯·诺依曼提出了以二进制作为数字计算机的数制基础,计算机应该按照程序顺序执行,计算机应该有五大部件
二、计算机五大部件:
1.输入设备
2.存储器
3.运算器
4.控制器
5.输出设备
三、冯诺曼体系架构:
1.CPU由运算器和控制器组成(中央处理器)
2.运算器完成各种算术运算、逻辑运算、数据传输等数据加工处理
3.控制器,控制程序的执行(控制运算器在数值上还是传送到存储器上,控制一条条指令)
4.存储器,用于记忆程序和数据,例如内存,即计算机pce内存,内存速度快
5.输入设备(I),将数据或者程序输入到计算机中,例如键盘、鼠标
6.输出设备(O),将数据或程序的处理结果展示给用户例如显示器、打印机等
7.CPU中还有寄存器和多级缓存Cache(CPU并不直接和磁盘打交道)
CPU并不直接跟存储打交道,它会把数据暂时性的放到内存中,通过控制器把内存中的数据写入到磁盘或者从磁盘把数据读取到内存中供CPU来使用,CPU的指令是直接去读取CPU中的计算器的或者内存中的地址,它没有读取磁盘的能力。
CPU并不直接和内存打交道,它只是暂时性的放在内存里,通过控制器把内存中的数据写进磁盘里,CPU没有读取磁盘的能力,磁盘是工具,帮助永久存储。
寄存器放在CPU内部,CPU要对数据进行处理,必须使用寄存器 不能直接使用内存中的数据,必须把数据装载到寄存器当中,然后用运存器进行处理,然后通过指令写到内存当中进去。
寄存器速度快,跟CPU同个频率,CPU速率远远高于内存,内存的速率远远高于IO设备,CPU的运存速率是最快的,CPU经常处于等待状态。
大量数据需要被多个地方用到时可以先放缓存里,缓存是放在CPU里面的,越接近CPU核心速度越快。
多核到三级缓存的时候是多核共享三级缓存了计划等于20万,一级缓存在某些CPU里面他们都是独享的,每一个CPU核心自己独享计算器,但是三级缓存是多核,CPU是多个CPU,越到三级缓存,速度越慢,寄存器与CPU是同频率的,一级缓存再慢一点,而在内部当然比外部的快,在外部的话它还需要运算器旁边那个控制器控制电路,控制bus就总线控制总线,然后把数据送到内存上去,当然这些都是通过电信号的,CPU里面有运算器和控制器以及计算器和多级缓存。
计算机语言:
人与计算机之间交互的语言
机器语言:
一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言,要在CPU中设计好
与自然语言差异太大,难学、难懂、难写、难记、难查错。
汇编语言:
用一些助记符号替代机器指令, 称为汇编语言。ADD A,B指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中,这是一条指令
汇编语言写好的程序需要汇编程序转换成机器指令,把写好的助记符转化成机器语言
汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接近自然言
四、语言分类
低级语言:
面向机器的语言,包括机器语言、汇编语言
不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序
高级语言:
接近自然语言和数学语言的计算机语言
高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序
1954年正式发布的Fortran语言是最早的高级语言, 本意是公式翻译
人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理
高级语言是对人类友好对机器不友好,而低级语言是对人类不友好,对机器友好的语言,人类看不明白或者学习起来非常难。
高级语言也要转化成本地指令,这样CPU才能执行,低级语言和高级语言可以来回转化,C语言和C++需要通过转化成本地执行的二级指令文件或直接生成exe文件。
五、低级语言到高级语言的发展:
语言越高级,越接近人类的自然语言和数学语言语言越低级,越能让机器理解
高级语言和低级语言之间需要一个转换的工具:编译器解释器
C、C++等语言的源代码需要本地编译(源代码编译)
D、
Java、Python、C#的源代码需要被解释器编译成中间代码(Bytecode ) , 在虚拟机上运行,这些都需要编译成中间代码,由虚拟机去执行
(编译成一种虚拟机可以认得的质检码,有一个虚拟的CPU,只有自己本身才可以识别出来)由虚拟机去执行所需要的代码,质检码是通用的。
六、编译语言
把源代码转换成目标机器的CPU指令,CPU只认指令级,指令不相同不兼容,如果不兼容重新本地编译。(C和C++是编译性语言,先转化成质检码,在不同环境中执行)
七、解释语言:
解释后转换成字节码,运行在虑拟机上,解释器执行中间代码
八、高级语言(多范式的开发语言)的发展:
非结构化语言:
编号或标签、GOTO ,子程序可以有多个入口和出口(一旦有GOTO出现就不是结构化语言)
标签:在某一行前面加一个名称,在加上冒号便是标签,标签可以用一个指令或者用一个 GOTO语句
有分支、循环
缺陷:因 GOTO 会打破编程语言结构化,不适合现在的软件工业使用
结构化语言:
任何基本结构只允许是唯一入口和唯一出口、步
顺序、分支、循环,废弃 GOTO
优势:便于人阅读,不会成为“蜘蛛网”
缺陷:不能利用 GOTO 将代码精简化,不能运用到超大规模领域上
面向对象语言(利用人类对大千世界的理解来编程):
优势:更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承
三要素:封装、继承、多态
函数式语言:
古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中
函数是“一等公民”,高阶函数
九、程序 Program:
程序:
算法+数据结构=程序
数据:一切程序的核心
数据结构是数据在计算机中的类型和组织方式口算法是处理数据的方式,算法有优劣之分。
写程序难点:
理不清数据
搞不清处理方法(搞不清算法)
无法把数据设计转换成数据结构,无法把处理方法转换成算法
无法用设计范式来进行程序设计(设计思想)
世间程序皆有 bug,但不会 debug
十、Python 解释器:
官方 CPython(必记):
特点:C语言开发,最广泛的 Python 解释器
IPython:
一个交互式、功能增强的 Cpython
PyPy:
Python 语言写的 Python 解释器, JIT(动态编译)技术
JIT技术:
动态编译 Python 代码成本地代码,可以提高运行效率,可以动态调整生成的字节码,比 CPython 快五倍
Jython:
Python 的源代码编译成 Java 的字节码,跑在 JVM 上
IronPython:
与 Jython 类似,运行在.Net 平台上的解释器, Python 代码被编译成.Net 的字节码
计算速度不快。