1.编程语言
2.高/低级语言
3.编译型/解释型
4.强/弱型
5.动/静态型
6.常用语言解释
7.解释器安装/多版本共存
1.编程语言
1.1编程语言分类
1.机器语言:01组成二进制指令,直接操作硬件。
2.汇编语言:用一组英文标签代表一组二进制指令,直接操作硬件。
3.高级语言:用人类的自然语言去编写的程序,再转为机器语言控制硬件。
1.2比较
比较 | 执行效率: | 开发效率: | 跨平台: |
---|
机器语言 | 机器语言能被计算机无障碍理解并直接运行,执行效率最高 | 复杂,二进制指令难以记忆,开发效率低。 | 依赖具体的硬件,跨平台性极差。 |
汇编语言 | 编译后直接操作硬件,执行效率高,但比机器语言稍差。 | 相对机器语言,使用英文标签编写程序相对简单,同样开发效率低。 | 同样依赖具体硬件,跨平台性差。 |
高级语言 | 高级语言更贴近人类语言,所以执行需要通过‘翻译’才能理解,会增多很多额外代码,这样会降低软件执行效率。 | 开发者无需考虑硬件,语言更贴近人类,开发效率得到极大提升。 | 不依赖硬件,依赖编译器,跨平台性极强 |
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.强/弱类型
强类型:强类型语言使用强制数据类型定义,没有强制类型转化前,不允许两种不同类型的变量相互
操作。
num = 1
print(type(num)) # <class 'int'>
print(num + '1')
"""
TypeError: unsupported operand type(s) for +: 'int' and 'str'
类型错误:+ 不支持的操作数类型:“int”和“str”
"""
弱类型:一个变量可以赋不同数据类型的值,允许将一块内存看作多种类型,比如直接将整型变量与
字符变量相加
var num = 10
console.log(typeof num) // number
console.log(num + 'a', typeof (num + 'a')); // 10a string
5.动/静态类型
静态类型: 在编译期进行检查数据,变量在使用前要声明变量的数据类型.
这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误.
// C语言 在定义变量的时候定义变量的数据类型.
int homo = 114514;
动态类型: 在运行期进行数据类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型.
# 动态类型语言,即变量本身在编译期不携带类型信息的语言
a = 1
6.常用语言解释
python是一门解释型弱类型动态语言。
python语言:指的是python的语法风格
python解释器:专门用来识别python这门语言的语法并解释执行的
7.解释器安装/多版本共存
https://blog.csdn.net/larei/article/details/126594556?spm=1001.2014.3001.5502