作者:禅与计算机程序设计艺术
1.背景介绍
对于软件开发者来说,学习各种高级编程语言并掌握它们之间的区别对比很重要。为了便于软件工程师了解编程语言发展的历史及其演变,从语言的诞生到现在的发展方向,并可以对现有编程语言进行更好地理解和选择,我们编写此文。
在计算机科学中,编译器就是把源代码转换成目标代码的程序。而解释器则相反,它解释执行源代码中的语句。两种类型的语言都可以实现功能相同、语法不同(甚至可以说是一种方言)的程序,只是执行方式不同。编译型语言通常需要先将源代码转换成机器码才能运行,而解释型语言直接由解释器逐行执行源代码,这种执行速度快但是调试困难。
编译型语言是静态类型语言,而解释型语言是动态类型语言。比如,Java和C++都是编译型语言,他们的源代码首先要经过编译过程,生成中间代码(字节码),然后再运行在虚拟机上。Python、JavaScript、Ruby等都是解释型语言,解释器按照源码的每一条语句顺序逐个执行,并且支持动态类型。
一般来说,编译型语言的执行效率高,适用于执行频繁的代码;解释型语言的执行效率低,适用于执行简单的小脚本或者调试代码。不过,近几年的发展表明,动态语言的出现给了程序员更多的选择权,允许程序员利用其灵活的特性快速构造应用。如今,多数动态语言都集成了运行时环境,使得用户无需自己编译代码,即可运行。因此,编译型语言的数量正在下降,新的动态语言正在崛起,而解释型语言却在保持着巨大的市场份额。
2.核心概念与联系
下面,我们对编译型语言与解释型语言进行一个对比。
2.1 词法分析与语法分析
编译型语言