欢迎来到程序语言与翻译软件的世界!
你有没有想过电脑实际上是如何理解你输入的内容?你可能会写下 print("Hello World"),但对电脑而言,一切都只是一连串的电子脉冲——开或关、1 或 0。本章将介绍人类易读的程序代码与机器易懂的信号之间的“桥梁”。我们将探讨不同类型的程序语言,以及实现沟通的“翻译官”。如果一开始觉得术语很多也别担心,我们将会用简单的比喻为你拆解它们!
3.6.3.1 程序语言的分类
并非所有程序语言都一样。有些语言较“贴近”电脑的运行逻辑,有些则较贴近人类的思考方式。我们通常将它们分为两类:低级语言 (Low-level) 与 高级语言 (High-level)。
1. 低级语言
这些语言高度依赖于它们所执行的硬件(处理器)。它们赋予程序员对电脑内存和处理器的直接控制权。主要分为两种类型:
A. 机器码 (Machine Code):
这是最基础的层级。它完全由二进制数字(1 和 0)组成。这是处理器唯一能直接执行的东西。
范例:10110000 01100001
B. 汇编语言 (Assembly Language):
直接撰写 1 和 0 既费力又容易出错。为了简化流程,程序员开发了汇编语言。它使用称为助记符 (mnemonics)(记忆辅助)的简短单词来代表机器码指令。
范例:ADD 可能代表加法的二进制代码。
2. 高级语言
这类语言包括 Python、Java 或 C#。它们使用类似英语的单词和数学符号,让人类更容易阅读与撰写。它们具有可移植性 (portability),这意味着相同的程序代码通常可以在不同类型的电脑上执行。
什么是“指令式 (Imperative)”高级语言?
大多数你在 AS Level 学习的高级语言都是指令式的。这代表程序代码是由一连串指令组成,精确描述电脑应该“如何”一步步执行任务。想象这像是一份烹饪食谱:“第一步,打鸡蛋。第二步,搅拌它们。第三步,放入平底锅。”
快速回顾:低级语言 vs. 高级语言
• 低级语言:较难学习,与特定处理器绑定,但提供绝对控制权且执行速度极快。
• 高级语言:较易学习,具备可移植性,但需要翻译,且执行速度通常稍慢。
重点总结:低级语言(机器码与汇编语言)是给电脑看的;高级语言则是给人类看的。
3.6.3.2 程序翻译软件的类型
由于电脑只懂机器码,任何以汇编语言或高级语言编写的程序代码都必须经过翻译。主要有三种软件负责执行此任务。
1. 汇编器 (Assembler)
汇编器用于将汇编语言翻译成机器码。由于每一条汇编语言指令通常对应一条精确的机器码指令,这是一个相对简单的翻译过程。
2. 编译器 (Compiler)
编译器会将整个源代码 (Source Code)(你所写的程序)一次性翻译成目标代码 (Object Code)(可执行的机器码)。
• 比喻:这就像一位翻译官拿着整本英文书,把它全部改写成西班牙文。一旦西班牙文版本完成,你就可以随时阅读,不需要再次寻求翻译官的协助。
3. 解释器 (Interpreter)
解释器则是采用逐行 (line-by-line) 的方式翻译并执行程序代码。它会检查一条指令、翻译它、执行它,然后,再移至下一行。
• 比喻:这就像联合国的即席口译员。他们听一句英文,随即转述为西班牙文。如果你想再听一次演讲,翻译官就必须重新再做一次翻译工作。
你知道吗? Python 通常是透过解释方式运行的,这也是为什么它会在程序出错的那一行立刻停止并显示错误信息!
比较:编译器 vs. 解释器
选择编译器还是解释器,取决于你的需求:
• 速度:编译后的程序代码执行速度较快,因为翻译工作早已完成。解释后的程序代码因为边执行边翻译,所以速度较慢。
• 隐私:编译器会产生一个“可执行文件”(.exe)。你可以将其交给他人使用,而无需公开源代码。使用解释器时,通常必须分享源代码。
• 调试 (Debugging):解释器对初学者非常友好!它们在遇到错误时会立刻停止,让你更容易找出问题所在。
常见迷思:学生常误以为执行机器码也需要翻译软件。其实不需要!机器码本身就是电脑能理解的语言。
中间语言 (Bytecode)
一些现代程序语言采取了“两者兼顾”的方法。它们不是直接翻译成机器码,而是将源代码翻译成称为字节码 (Bytecode) 的中间语言。
为什么要使用字节码?
1. 可移植性:程序代码只需翻译一次成字节码,就可以在任何装有虚拟机 (Virtual Machine) 或 即时编译器 (Just-In-Time Compiler, JIT) 的电脑(如 Mac、Windows、Linux)上执行。
2. 安全性:虚拟机可以在执行前检查字节码中是否有恶意指令。
3. 效率:字节码处于“中间”状态,因此比起源代码,它所需的内存更少,且完成最终翻译的速度更快。
字节码如何运行?
• 它可以由虚拟机执行,虚拟机会扮演字节码解释器的角色。
• 或者,它可以在执行前一刻由即时编译器 (JIT Compiler) 转换为机器码。
重点总结:字节码是“通用语言”,让程序能在几乎任何设备上安全地执行。
快速术语定义回顾
• 源代码 (Source Code):由程序员以高级语言撰写的程序代码。
• 目标代码 (Object Code):由编译器产生的最终机器码,电脑可直接执行。
• 助记符 (Mnemonics):在汇编语言中使用简短单词(如 ADD 或 SUB)来代表二进制指令。
• 可移植性 (Portability):程序在不同类型的电脑系统上执行的能力。
总结:
人类撰写源代码。这些程序代码会透过编译 (Compiled)(一次完成)或解释 (Interpreted)(逐行翻译)转换为机器码 (目标代码),以便处理器执行。汇编语言是一个折中方案,使用助记符并由汇编器翻译。字节码则是一个巧妙的“中间”步骤,让程序具备可移植性与安全性!