1. 编程语言分类
* 1. 机器语言: 由二进制组成的指令, 能被计算机直接识别并执行.
* 2. 汇编语言: 用一组英文标签代表一组二进制指令, 能被计算机直接识别并执行.
* 3. 高级语言: 用人类的自然语言编写的程序, 需要转为机器语言才能被计算器识别.
编程语言 | 执行效率: | 开发效率: | 跨平台: |
---|---|---|---|
机器语言 | 能被计算机无障碍理解并直接运行, 执行效率最高. | 复杂, 二进制指令难以记忆, 开发效率低. | 依赖具体的硬件, 跨平台性极差. |
汇编语言 | 编译后直接操作硬件, 执行效率高,但比机器语言稍低. | 使用英文标签编写程序, 开发效率低. | 依赖具体的硬件, 跨平台性差. |
高级语言 | 高级语言更贴近人类语言, 所以执行需要通过‘翻译’才能理解, 会增加很多额外的代码,这样会降低软件执行效率. | 开发者无需考虑硬件, 语言更贴近人类, 开发效率得到极大的提升. | 不依赖硬件, 依赖编译器, 解释器, 跨平台性极强. |
2. 高级语言&低级语言
低级语言(机器语言, 汇编语言): 更接近于机器指令.
越是低级的语言对机器越是友好, 越是符合机器的思考方式, 因此执行效率高.
高级语言: 更接近于人类的思维模式.
越是高级的语言对人类越是友好, 越是符合人类的思考方式, 因此开发效率高.
3. 编译型&解释型
高级语言想要在计算机上执行, 必须先翻译成计算机能识别的语言才能执行.
按翻译的过程可以分为两种:
* 1. 编译型: 运行时直接编译成机器可以执行的程序, 除非修改程序源代码, 否则无需再编译.
执行效率高, 比解释型语言运行要快, 跨平台性低于解释型.
* 2. 解释型: 运行时需要专门的解释器, 将源代码临时转换成特定平台的机器码,
解释器也占计算机的资源, 运行速度较慢. 运行依靠解释程序, 每执行一次就要翻译一次,
翻译一行执行一行, 只要平台提供相应的解释器, 就可以运行源代码, 方便源程序移植.
Python语言会避免重复解释, 以此来节省时间.
程序运行时, 解释的结果则是保存在位于内存中的PyCodeObject中,
程序运行结束时, Python 解释器则将 PyCodeObject 写回到 pyc 文件中.
没有修改程序的情况下第二次运行时, 首先程序会在硬盘中寻找 pyc 文件, 如果找到则直接载入,
否则就重复上面的过程.
* 识别编译型需要安装编译器, 识别解释型需要安装解释器.
编译型常见语言:
C语言: 一个平台上编译的程序不能跨平台运行, 想要在不同的平台上运行需要自行编译.
Java: 号称一处编码, 处处运行, 1990年横空出世. Java 有一个编译的过程,
将java源代码编程成字节码文件 .class, 该文件需要运行在操作系统的 jvm 下.
(jvm --> JAVA 虚拟机, 至少占300M内内存)
Go: 可以跨平台编译, Windows 平台下所有 Go 代码编译成一个其他平台的可执行文件.
解析型常见语言: Python, JavaScript, PHP
4. 强类型语言&弱类型语言
强类型(strong): 强制数据类型定义, 没有强制类型转化前, 不允许两种不同类型的变量相互操作.
# Python
num = 1
# 不允许两种不同类型的变量相互操作
print(num + 'a')
终端显示:
<class 'int'>
TypeError: unsupported operand type(s) for +: 'int' and 'str'
类型错误: + 不支持的操作数类型: “int”和“str”
# Python
num = 3
print(num * 'a')
终端显示:
aaa
Python 符串可以和整数相乘, 却不能相加?
Python 属于强类型语言, 按道理是无法进行算数运算的.
Python 中为了方便程序员的使用, 把闲置的乘法符号重新定义了一下, 使其不再表示乘法, 而是重复n次.
弱类型(Weak): 变量可以赋不同数据类型的值, 允许将一块内存看作多种类型,
比如直接将整型变量与字符变量相加.
// JS | 允许两种不同类型的变量相互操作
var num = 10
// 打印 整型num 与 字符串类型'a'的结果, 与结果的变量.
console.log(num + 'a', typeof (num + 'a'));
终端显示:
10a string
5. 动态类型语言&静态类型语言
静态类型语言(statically typed languages):
数据类型在编译期间(或运行之前)确定的, 变量在使用前要声明变量的数据类型.
把检查类型放在编译期间的好处, 是可以提前检查可能出现的类型错误.
// C语言 | 需要声明变量的数据类型.
int homo = 114514;
动态类型语言(dynamically typed languages):
在'运行期'才对数据类型进行检查, 在编写代码的时候可以不指定变量的数据类型.
# Python | 不需要执行变量的类型
a = 1
6. 常见语言的类型
Python 属于 解释型 强类型 动态语言.
Python程序的执行依赖于解释器, 执行一次, 翻译一次, 翻译一行, 执行一行.
不同类型的变量相互操作, 在编写代码的时候可以不指定变量的数据类型.
文章的段落全是代码块包裹的, 留言0是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言1是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言2是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言3是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言4是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言5是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言6是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言7是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言8是为了避免文章提示质量低.
文章的段落全是代码块包裹的, 留言9是为了避免文章提示质量低.
本文含有隐藏内容,请 开通VIP 后查看