语言的深入理解--编译型和解释型
1 简介
语言是工具,本质上就是用来交流的。
中文、英文、方言等是人类用来交流的,
猫语、鸟语、中华田园语是动物用来交流的,
C、C++、C#、Java、JavaScript、Python、Html、Qml等都是人与机器进行交互的语言。
2 编译型和解释型
2003年,大毛在连云港海头镇买笔记本电脑流程如下:
- 联想生产笔记本
- 海头镇中心电脑商城店家从苏北联想总店购买笔记本
- 大毛去镇中心电脑商城店家选一台笔记本
2020年,二毛在连云港海头镇买笔记本电脑流程如下:
- 联想生产笔记本
- 二毛用Mate30打开天猫进入联想专卖店购买一台笔记本
前者就是解释型,需要中间商,
后者就是编译型,去掉中间商。
中间商必赚差价,所以解释型语言效率低与编译型语言,很好理解。
从这一点理解马云2018年吹的牛逼“8年后房价如葱”,就能知道马云想干掉房地产中间商,并且定的项目周期是8年。
2.1 编译型语言
编译型是使用编译器编译后生成X86架构或者Arm架构硬件可直接执行的指令。
编译型代表:C、C++、C#、Java
特点:
- 编译型语言的源代码有错误编译不通过,无法生成可执行代码,更无法执行程序
- 编译型语言都为强类型,即必须说明数据的类型,如int a
- 执行效率高
2.2 解释型语言
解释型是在运行时才由解释器逐语句去执行。
解释型代表:JavaScript、Python、Html、Qml
特点:
- 解释型语言只有执行时才会判断是否出错,即使一句出错,也可以继续执行下一句
- 解释型语言多为弱类型,如js中var a,a可以为字符串也可以为整形
- 执行效率低
3 解释器优化
由于解释器逐行解释太慢,所以对其进行不断的优化,现在解释器运行程序的方法主要有以下三种:
1.直接运行高级编程语言 (如 Shell 自带的解释器)
2.转换高级编程语言码到一些有效率的字节码 (Bytecode),并运行这些字节码(如Python)
3.以解释器包含的编译器对高级语言编译,并指示处理器运行编译后的程序 (例如:JIT)
4 解释器的设计
参考
1、程序的编译与解释的区别
2、C–C语言概述
3、linux–解释器