本书未发布

语言分类 解释型、编译型、混合型语言

未匹配的标注

编译型语言

最开始大部分人接触的 CC++ 都是编译性的语言。它们最大的特点是通过编译器将文本代码转换为 CPU 可以执行的机器代码,机器码通常拥有更高的运行效率。但是通常因为 CPU 架构的问题它们的可移植性会差一点,不同的 CPU 平台指令集不一样,或者不同的操作系统系统调用的 API 不同,可能会导致你在不同的操作系统或者 CPU 架构上编译的代码无法在其他地方正常运行。

例如,你在 Windows x86 下的代码不一定可以在 CentOS x86 上运行。

解释型语言

PHPJavaScript 这样的语言属于解释型语言。它们的最大特点是通过解释器运行,例如 PHP 解释器会读取 xxx.php 的文本代码,逐条转换为机器代码。CPU 执行完以后继续取出代码转换周而复始。

优点是只需要安装上对应的解释器,代码就可以运行在任何平台。缺点是编译和运行时间叠加在了一起,无法在编译时进行类型检查等优化,通常解释型语言使用若类型语法无法更好地利用数据结构。

混合型语言

Java 这样的语言我在最初学习的时候,老师都说是编译性的,后来才意识到是混合型。Java 虽然需要编译,但并没有转换成机器码,而是转换成了字节码,转而交由 JVM 虚拟机 运行,JVM 也是解释逐条执行的,只不过字节码文件转换成机器码更快。具体 PHP 的对照你可以参考一下 opcache

Java 还支持了 JIT(即时编译) 能力,它通过反复执行的机器码缓存,来减少编译时间。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~