冯诺依曼体系
- CPU由运算器和控制器组成
运算器,完成各种算数运算、逻辑运算、数据传输等数据加工处理
控制器,控制程序的执行
存储器,用于记忆程序和数据,例如内存
输入设备,将数据或者程序输入到计算机中,例如键盘、鼠标
输出设备,将数据或程序的处理结果展示给用户,例如显示器、打印机等
编程基础
- 计算机语言
人与计算机之间交互的语言 - 机器语言
一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言
与自然语言差异太大,难学、难懂、难写、难记、难查错 - 汇编语言
用一些助记符号替代机器指令,称为汇编语言。 ADD A,B 指的是将寄存器A的数与
寄存器B的数相加得到的数放到寄存器A中
汇编语言写好的程序需要汇编程序转换成机器指令
汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接
近自然语言
语言分类
- 低级语言
面向机器的语言,包括机器语言、汇编语言
不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序 - 高级语言
接近自然语言和数学语言的计算机语言
高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序
1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译
人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理
低级语言到高级语言
语言越高级,越接近人类的自然语言和数学语言
语言越低级,越能让机器理解
高级语言和低级语言之间需要一个转换的工具:编译器、
解释器
C、 C++等语言的源代码需要本地编译
Java、 Python、 C#的源代码需要被解释器编译成中间代码( Bytecode),在虚拟机上运行
编译语言,把源代码转换成目标机器的CPU指令
解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码
高级语言的发展
- 非结构化语言
编号或标签、 GOTO,子程序可以有多个入口和出口
有分支、循环 - 结构化语言
任何基本结构只允许是唯一入口和唯一出口
顺序、分支、循环,废弃GOTO - 面向对象语言
更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承
封装、继承、多态 - 函数式语言
古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中
函数是“一等公民”,高阶函数
Python基础语法
- 注释—— # 标注的文本
- 数字 整数,不区分long和int
- 进制0xa、 0o10、 0b10
- bool, 2个值True、 False
- 浮点数
- 1.2、 3.1415、 -0.12, 1.46e9等价于1.46*109
- 复数, 1+2j
- 数字 整数,不区分long和int
- 字符串
- 使用 ’ " 单双引号引用的字符的序列
- ‘’'和""" 单双三引号,可以跨行、可以在其中自由的使用单双引号
- 在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
- 3.6版本开始,新增f前缀,格式化字符串
- 转义序列
- \ \t \r \n ’ "
- 前缀r,把里面的所有字符当普通字符对待
- 缩进
- 未使用C等语言的花括号,而是采用缩进的方式表示层次关系
- 约定使用4个空格缩进
- 续行
- 在行尾使用 \
- 如果使用各种括号,认为括号内是一个整体,内部跨行不用 \
- 标识符
- 一个名字,用来指代一个值
- 只能是字母、下划线和数字
- 只能以字母或下划线开头
- 不能是python的关键字,例如def、 class就不能作为标识符
- Python是大小写敏感的
- 约定:
不允许使用中文
不允许使用歧义单词,例如class_
在python中不要随便使用下划线开头的标识符 - 常量
- 一旦赋值就不能改变值的标识符
- python中无法定义常量
- 字面常量
- 一个单独的量,例如 12、 “abc” 、 ‘2341356514.03e-9’
- 变量
- 赋值后,可以改变值的标识符
Python的语言类型
- Python是动态语言、强类型语言
- 静态编译语言
- 实现声明变量类型,类型不能再改变
- 编译时检查
- 动态编译语言
- 不用事先声明类型,随时可以赋值为其他类型
- 编程时不知道是什么类型,很难推断
- 强类型语言
- 不同类型之间操作,必须先强制类型转换为同一类型。 print(‘a’+1)
- 弱类型语言
- 不同类型间可以操作,自动隐式转换, JavaScript中console.log(1+‘a’) # 冯诺依曼体系
- CPU由运算器和控制器组成
运算器,完成各种算数运算、逻辑运算、数据传输等数据加工处理
控制器,控制程序的执行
存储器,用于记忆程序和数据,例如内存
输入设备,将数据或者程序输入到计算机中,例如键盘、鼠标
输出设备,将数据或程序的处理结果展示给用户,例如显示器、打印机等
编程基础
- 计算机语言
人与计算机之间交互的语言 - 机器语言
一定位数组成二进制的0和1的序列,称为机器指令。机器指令的集合就是机器语言
与自然语言差异太大,难学、难懂、难写、难记、难查错 - 汇编语言
用一些助记符号替代机器指令,称为汇编语言。 ADD A,B 指的是将寄存器A的数与
寄存器B的数相加得到的数放到寄存器A中
汇编语言写好的程序需要汇编程序转换成机器指令
汇编语言只是稍微好记了些,可以认为就是机器指令对应的助记符。只是符号本身接
近自然语言
语言分类
- 低级语言
面向机器的语言,包括机器语言、汇编语言
不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序 - 高级语言
接近自然语言和数学语言的计算机语言
高级语言首先要书写源程序,通过编译程序把源程序转换成机器指令的程序
1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译
人们只需要关心怎么书写源程序,针对不同机器的编译的事交给编译器关心处理
低级语言到高级语言
语言越高级,越接近人类的自然语言和数学语言
语言越低级,越能让机器理解
高级语言和低级语言之间需要一个转换的工具:编译器、
解释器
C、 C++等语言的源代码需要本地编译
Java、 Python、 C#的源代码需要被解释器编译成中间代码( Bytecode),在虚拟机上运行
编译语言,把源代码转换成目标机器的CPU指令
解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码
高级语言的发展
- 非结构化语言
编号或标签、 GOTO,子程序可以有多个入口和出口
有分支、循环 - 结构化语言
任何基本结构只允许是唯一入口和唯一出口
顺序、分支、循环,废弃GOTO - 面向对象语言
更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承
封装、继承、多态 - 函数式语言
古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中
函数是“一等公民”,高阶函数
Python基础语法
- 注释—— # 标注的文本
- 数字 整数,不区分long和int
- 进制0xa、 0o10、 0b10
- bool, 2个值True、 False
- 浮点数
- 1.2、 3.1415、 -0.12, 1.46e9等价于1.46*109
- 复数, 1+2j
- 数字 整数,不区分long和int
- 字符串
- 使用 ’ " 单双引号引用的字符的序列
- ‘’'和""" 单双三引号,可以跨行、可以在其中自由的使用单双引号
- 在字符串前面加上r或者R前缀,表示该字符串不做特殊的处理
- 3.6版本开始,新增f前缀,格式化字符串
- 转义序列
- \ \t \r \n ’ "
- 前缀r,把里面的所有字符当普通字符对待
- 缩进
- 未使用C等语言的花括号,而是采用缩进的方式表示层次关系
- 约定使用4个空格缩进
- 续行
- 在行尾使用 \
- 如果使用各种括号,认为括号内是一个整体,内部跨行不用 \
- 标识符
- 一个名字,用来指代一个值
- 只能是字母、下划线和数字
- 只能以字母或下划线开头
- 不能是python的关键字,例如def、 class就不能作为标识符
- Python是大小写敏感的
- 约定:
不允许使用中文
不允许使用歧义单词,例如class_
在python中不要随便使用下划线开头的标识符 - 常量
一旦赋值就不能改变值的标识符
python中无法定义常量 - 字面常量
一个单独的量,例如 12、 “abc” 、 ‘2341356514.03e-9’ - 变量
赋值后,可以改变值的标识符
Python的语言类型
- Python是动态语言、强类型语言
- 静态编译语言
实现声明变量类型,类型不能再改变
编译时检查 - 动态编译语言
不用事先声明类型,随时可以赋值为其他类型
编程时不知道是什么类型,很难推断 - 强类型语言
不同类型之间操作,必须先强制类型转换为同一类型。 print(‘a’+1) - 弱类型语言
不同类型间可以操作,自动隐式转换, JavaScript中console.log(1+‘a’)