1 00:00:00,000 --> 00:00:05,305 你们已经接触了一些JavaScript, 在这一部分 2 00:00:05,305 --> 00:00:10,473 我想谈谈是什么将源代码和CPU中的机器代码联系起来。 3 00:00:10,473 --> 00:00:15,705 这一般超过了计算机语言这个话题 4 00:00:15,705 --> 00:00:20,652 程序员用某种编程语言编程 编程语言一般来说具有有高级特性 5 00:00:20,652 --> 00:00:25,722 比如循环,if语句和字符串 6 00:00:25,722 --> 00:00:30,545 这些都是更高级的特性,也是CPU中机器代码中最为常见的 7 00:00:30,545 --> 00:00:35,307 所以程序员用他们使用的特定程序语言编写源代码 8 00:00:35,307 --> 00:00:39,623 这是一个C++程序代码示例 9 00:00:39,623 --> 00:00:43,993 这个语句将一个字符串的值赋值给一个变量 接着输出这个字符串和一个叹号 10 00:00:43,993 --> 00:00:48,145 你猜怎么着? 这有点像JavaScript代码 11 00:00:48,145 --> 00:00:52,624 我们已经在语法层次上接触了许多语言 12 00:00:52,624 --> 00:00:57,927 和他们对引号和分号的使用 13 00:00:57,927 --> 00:01:04,232 那么你是怎么使C++源代码在CPU上运行起来的呢? 一种方案是使用编译器 14 00:01:04,232 --> 00:01:10,157 编译器是一个单独的程序 15 00:01:10,157 --> 00:01:15,186 编译器读入源代码并对代码进行翻译 16 00:01:15,186 --> 00:01:20,215 比如 17 00:01:20,215 --> 00:01:24,645 源代码中可能用一个if语句 18 00:01:24,645 --> 00:01:29,555 而机器代码中没有与之对应的某一指令 19 00:01:29,555 --> 00:01:34,404 但是可能用5个指令的作用和if语句功能相同 20 00:01:34,404 --> 00:01:40,991 于是编译器将if语句展开(即替换成等价的5的机器指令) 再如Firefox是用C++编写的