一、前言
- 一般可以将编程语言分为两种,编译语言和直译式语言。
-
- 编译语言(Compiled language)是一种编程语言类型,通过编译器来实现。它不像解释型语言一样,由解释器将代码一句一句运行,而是以编译器,先将代码编译为机器代码,再加以运行。理论上,任何编程语言都可以是编译式,或直译式的。它们之间的区别,仅与程序的应用有关。
-
- 直译语言(Interpreted language),又称直译式语言,是一种编程语言,它不需要经过编译器先行编译为机器码,之后直接在CPU中运行。相对的,编程语言需要通过解释器,在运行期动态直译(interpret)。
- 像 C++、Objective-C 都是编译语言。编译语言在执行的时候,必须先通过编译器生成机器码,机器码可以直接在 CPU 上执行,所以执行效率较高。
- 像 JavaScript、Python 都是直译式语言。直译式语言不需要经过编译的过程,而是在执行的时候通过一个中间的解释器将代码解释为 CPU 可以执行的代码。所以,较编译语言来说,直译式语言效率低一些,但是编写的更灵活。
- iOS 开发目前的常用语言:Objective-C 和 Swift,二者都是编译语言,换句话说都是需要编译才能执行的。它们的编译都是依赖于 Clang(Swift) + LLVM。本文只关注 Objective-C,原理上大同小异。
- 充分理解了编译的过程,会对开发大有帮助。本文会通过以下示例