编程术语解释
简短而准确地解释你刚开始学编程时会遇到的词。每个术语都有单独的页面,附带可以在浏览器中运行的示例、大家常犯的错误,以及相关术语的链接。
代码如何运行
从你输入的代码到运行起来的程序,中间发生了什么:编译器、解释器、运行时和操作系统。
源代码源代码(source code)是程序中人类可读的文本,由程序员用 Python、Java 或 C 等语言编写,保存为纯文本文件,再由编译器或解释器转换成计算机能运行的指令。编译器编译器是一种程序,它在程序运行之前,把用编程语言编写的源代码翻译成机器码,或者翻译成字节码等其他更底层的形式。翻译好的程序可以脱离原始源代码独立运行。解释器解释器是一种直接执行源代码的程序,它边读边执行其中的指令,而不是先把整个程序翻译成一个单独的机器码文件。Python 和 Ruby 的标准实现都是解释器。运行环境运行环境(runtime environment)是程序运行时所依赖的外围软件:执行代码的引擎、代码调用的标准库,以及负责管理内存、错误和操作系统访问的各项服务。JVM、Node.js 和 CPython 都是运行环境的例子。操作系统操作系统(OS)是管理计算机硬件、运行所有其他程序的软件。它在程序之间分配处理器、内存和存储空间,并为它们提供文件、网络、输入和输出。Windows、macOS、Linux、Android 和 iOS 都是操作系统。
基本构件
每个程序都由这些部分组成:值、变量、数组和循环。
变量在编程中,变量是内存中一个有名字的位置,用来存放程序运行时可以读取和修改的值。有了 score 或 user_name 这样的名字,代码不必知道值存放在哪里,就能引用它。布尔值在编程中,布尔值(boolean)是一种只有两个值的数据类型:真(true)和假(false)。程序通过 age >= 18 这样的比较得到布尔值,再在 if 语句和循环条件中用它决定执行哪段代码。数组数组是一种数据结构,它把同一类型的一组值存放在一块连续的内存中。每个值叫作元素,通过它的位置编号(即索引)来访问,大多数语言的索引从 0 开始。迭代在编程中,迭代是指重复执行一组指令,通常借助循环来完成,直到满足某个条件或处理完集合中的每一项。每次执行这组重复指令的单独一轮,也叫作一次迭代。
错误与调试
三种错误,程序如何处理它们,以及 C 程序员最先遇到的崩溃。
语法错误语法错误(syntax error)是代码结构上的错误,比如少了冒号、括号或引号,违反了编程语言的语法规则。编译器或解释器会在程序运行任何一行之前就拒绝它。运行时错误运行时错误(runtime error)是程序运行过程中发生的错误:某个操作无法用当前的值完成,比如除以零,或者读取超出列表末尾的位置。除非错误被处理,否则程序会在这一行停下来。逻辑错误逻辑错误(logic error)是程序推理上的错误:程序不会崩溃,也不显示任何错误信息,却算出了错误的结果。代码完全合法,每一行都能运行,但它做的事情并不是程序员想要的。异常处理异常处理是程序应对运行时发生的错误的一种方式。可能出错的代码放在一个受保护的代码块(比如 try)中,当错误被抛出时,程序会跳转到处理程序(比如 except 或 catch),而不是直接崩溃。段错误段错误(segmentation fault,简称 segfault)是程序试图读写不允许访问的内存时发生的崩溃,比如通过空指针访问地址 0。操作系统会用 SIGSEGV 信号终止这个程序。
数据与存储
计算机如何存储数据,并检查数据是否完整送达:比特、字节、校验和与数据库。
比特比特(bit)是二进制数字(binary digit)的缩写,也叫位,是计算机中最小的数据单位,只能取 0 或 1 两个值之一。从数字、文本到图片和程序,计算机存储和处理的所有信息都是一串串比特。字节字节(byte)是由 8 个比特组成的数字数据单位,可以表示 256 个不同的值,范围从 0 到 255。在大多数计算机上,它是拥有独立地址的最小内存单位,文件大小也以字节为单位计算。校验和校验和(checksum)是根据一块数据(比如一个文件或一个网络数据包)计算出的一个简短值,它会和数据一起存储或发送。之后重新计算一次并比较两个值,就能知道数据是否因损坏或传输错误而发生了变化。数据库数据库是存储在计算机上、经过组织的数据集合,让程序能够快速、安全地查找、添加、修改和删除数据。它由一种叫作数据库管理系统(DBMS)的软件来管理,比如 PostgreSQL、MySQL、SQLite 或 MongoDB。
面向对象编程
类和对象背后的思想:隐藏数据、共享接口和隐藏细节。
封装在面向对象编程中,封装(encapsulation)是指把对象的数据和操作这些数据的方法放在同一个单元(通常是一个类)里,并隐藏内部细节,让其他代码只能通过对象的公有方法来使用它。多态在编程中,多态(polymorphism)是指同一段代码,比如一次函数调用或一个方法名,能处理不同类型的值,并由每种类型提供各自的行为。调用 shape.area() 时,圆形和正方形执行的是不同的计算。抽象在编程中,抽象(abstraction)指把某样东西的实现细节藏在一个更简单的接口后面,让你只需知道它做什么就能使用它。调用 sorted(names) 就能给列表排序,你不必编写排序算法,甚至看都不用看一眼。
常见问题
开始写代码之前,需要先掌握这些术语吗?
不需要。大多数人都是边写小程序边学,遇到不认识的词再查。亲眼见过某个术语描述的错误或输出之后,你会记得更快。
每种编程语言的术语都一样吗?
概念是一样的,名字和细节会变:Python 把数组叫作
list,写成 True;JavaScript 写成 true;Java 则要求你声明变量的类型。这里的每个页面都会注明各语言的差异。在哪里练习这些概念?
每个术语页面都有可以在浏览器中编辑和运行的示例。想要系统地练习,可以学习 Coddy 免费的 Python 课程,它通过一个个小练习带你掌握变量、循环、错误和类。