简介:与电脑对话
欢迎!在本章中,我们将探讨如何与电脑进行真正的沟通。由于电脑本质上只是一堆微型开关的集合,它们天生无法理解英语甚至是 Python。我们需要程序语言(Programming Languages)来架起人类思想与电脑电脉冲之间的桥梁。理解这些语言的分类,能帮助你为工作选择合适的工具,并深入了解软件如何在硬件上运行。
1. 大局观:语言的层次
程序语言通常分为两大类:低级语言(Low-Level Languages)和高级语言(High-Level Languages)。你可以把这视为一种“接近程度”的量尺。一端非常接近电脑的“大脑”(硬件),而另一端则更贴近人类的思考与表达方式。
低级语言
低级语言与特定电脑的处理器(CPU)架构紧密相连。你需要掌握两种类型:
• 机器码(Machine Code):这是最基本的层次,完全由二进制(Binary)(即 1 和 0)组成。这是电脑唯一能“理解”并直接执行的语言。
• 汇编语言(Assembly Language):这是比机器码高一阶的语言。它不再使用 1 和 0,而是使用称为助记符(Mnemonics)的简短文字指令。例如,与其写一长串二进制代码,你可以写 ADD 来进行加法运算,或写 MOV 来移动数据。
高级语言
高级语言(如 Python、C# 或 Java)使用类英语的单词和数学符号。它们的设计初衷是让人类更容易阅读和编写。AQA 课程大纲特别聚焦于指令式高级语言(Imperative High-Level Languages)。这类语言要求你向电脑提供一系列步骤式的指令来执行任务(就像食谱一样)。
快速回顾区
低级:接近硬件,使用二进制或助记符,针对特定类型的 CPU。
高级:接近人类,使用类英语单词,可在不同类型的 CPU 上运行。
重点总结:低级语言是为机器设计的;高级语言则是为程序员设计的。
2. 深入探讨:机器码 vs. 汇编语言
别担心,这些听起来可能有点吓人!大多数现代程序员很少需要直接撰写这些代码,但了解它们的运行方式对于理解电脑系统至关重要。
机器码(“真正”的语言)
机器码中的每一条指令都是一种二进制模式。例如,CPU 可能看到 10110000 01100001,并精确地知道要开启或关闭哪些电路。因为它是纯粹的数字,人类在编写时极易出错,且更难进行除错(Debug)!
汇编语言(“秘密代码”)
汇编语言的诞生是为了让低级编程变得更容易。它使用助记符作为机器码的速记法。
• 例子:程序员会写 LDA(代表 "Load into Accumulator",即“载入到累加器”),而不是写 00000110。
• 关键点:由于 CPU 依然只懂二进制,汇编语言必须通过一个名为汇编器(Assembler)的程序翻译成机器码。
你知道吗?
因为汇编语言与硬件连接极深,所以它是处理器专用的。这意味着为笔记本电脑的 Intel 处理器编写的汇编语言程序,无法在智能手机的 ARM 处理器上运行!
重点总结:汇编语言是人类可读版的机器码,但仍需通过汇编器转为二进制,CPU 才能执行。
3. 高级指令式语言
“指令式(Imperative)”一词源于“命令”。在指令式高级语言中,程序员编写一系列改变程序“状态”(即内存中存储的数据)的指令。
为什么我们使用高级语言?
你们在课堂上写的大多是高级语言。它们具备可移植性(Portability),意味着你可以编写一次代码,并在多种不同类型的电脑上运行。此外,它还提供了抽象化(Abstraction)——你无需了解 CPU 如何管理寄存器(Register),只需学会如何写出 total = price + tax 即可。
与低级语言的关系
电脑仍然无法直接执行高级代码,必须将其翻译为机器码。这通常由编译器(Compiler)或解释器(Interpreter)完成。单行高级代码(如 print 语句)可能会转换成数十甚至数百条机器码指令!
记忆法:“H”与“L”规则
High-level(高级) = Human-friendly(人类友好)。
Low-level(低级) = Linked to hardware(与硬件挂钩)。
重点总结:指令式语言关注的是程序如何通过一连串指令达成结果。
4. 层次比较:优缺点分析
这是考试中的热门考题!让我们看看为什么要选择其中一种语言。
高级语言的优点
• 易于学习:代码看起来更像英语。
• 开发速度快:能更迅速地编写复杂的程序。
• 可移植性:代码可在不同类型的 CPU 架构上运行。
• 易于除错:在高级代码中寻找和修复错误要简单得多。
低级语言的优点
• 速度:程序可针对特定 CPU 进行优化,运行速度极快。
• 内存效率:占用极少的内存(RAM)空间。
• 直接硬件控制:对于编写设备驱动程序(Device Drivers)(如告知电脑如何与打印机或显卡沟通的软件)至关重要。
• 无需翻译(针对机器码):机器码可立即执行,无需等待编译。
常见误区
学生常误以为汇编语言就是“机器码”。这是不对的!汇编语言是文字;机器码是二进制。你需要汇编器来跨越这条鸿沟。
重点总结:编写通用应用程序或追求开发效率时,请使用高级语言;当你需要极致效能或直接控制硬件时,则使用低级语言。
最终总结清单
在继续学习前,请确保你能:
• 将机器码定义为二进制,且是 CPU 唯一能执行的语言。
• 解释汇编语言使用助记符,并需要汇编器。
• 将高级语言描述为类英语且具可移植性。
• 将指令式定义为改变程序状态的一系列指令序列。
• 列举至少两个低级语言及高级语言的优点。