解释型语言,编译型语言
-
解释型语言:解释型语言的源代码不是直接翻译成机器指令,而是先翻译成中间代码,再由解释器对中间代码进行解释运行,即在运行程序的时候才逐行翻译
- 优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
- 缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
-
编译型语言:编译型语言首先是将源代码编译生成机器指令,再由机器运行机器码(二进制)。一般需要经过编译和链接等步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。
- 优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
- 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
动态语言,静态语言
在理解动态语言和静态语言之前,先看下下面几种语言类型
| 语言 | 解释 |
|---|---|
| 动态类型语言 | 是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 |
| 静态类型语言 | 是在运行前编译时检查类型。多数静态类型语言要求在使用变量之前必须声明数据类型,某些具有类型推导能力的现代语言可能能够部分减轻这个要求 |
| 动态编程语言 | 在程序运行过程中可以改变数据类型的结构,对象的函数,变量可以被修改删除。 |
| 静态编程语言 | 运行时不可改变结构 |
| 强类型语言 | 个人感觉是静态类型语言的另一种说法 |
| 弱类型语言 | 个人感觉是动态类型语言的另一种说法 |
| 强类型定义语言 | 是一旦变量的类型被确定,就不能转化的语言。实际上所谓的貌似转化,都是通过中间变量来达到,原本的变量的类型肯定是没有变化的。 |
| 弱类型定义语言 | 一个变量的类型是由其应用上下文确定的。比如语言直接支持字符串和整数可以直接用 + 号搞定。当然,在支持运算符重载的强类型语言中也能通过外部实现的方式在形式上做到这一点,不过这个是完全不一样的内涵 |
所以,个人感觉通常所说的动态语言是指动态编程语言。









网友评论