编程语言有机器语言、汇编语言和高级语言之分
其中只有机器语言才能被计算机直接识别,其他类型语言都必须经过转换(翻译)成机器语言才能被计算机执行。
高级语言如果按照转换方式又可分为编译型和解释型语言。
编译型语言:有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码(目标代码、机器语言)。这个过程说的专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器(Compiler)。特点是运行速度非常快,跨平台性差(不同平台要不同的编译器重新编译)。典型代表有C/C++/Delphi。
解释型语言:源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript /Perl/Shell等都是解释型语言。程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次,因此执行效率比较低
动态语言和静态语言:主要针对数据类型定义来区分。动态语言不需要给变量指定数据类型,自动识别。如python/ruby;静态语言则必须显性地声明变量的数据类型,C/C++是典型代表
强类型定义语言和弱类型定义语言:强类型语言数据类型定义后类型不会发生变化,除非强制转换;弱类型一个变量可以赋予不同的数据类型。
强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言);VBScript是动态语言,是弱类型定义语言(类型不安全的语言);Java是静态语言,是强类型定义语言(类型安全的语言)。
Python定义为:面向对象的脚本语言(解释型语言)。总结以下几个特性:
- 解释型语言
- 动态语言
- 强类型语言
- 跨平台性非常好
- 支持面向对象
几个缺点:
- 运行速度慢(解释型语言特点)
- 不能给程序代码加密,源码执行