词汇表
- 来源: https://www.freebasic.net/wiki/wikka.php?wakka=GlossaryIndex
- 最后更新: 2019-07-11
FreeBASIC 手册中使用的词汇和短语的简要定义与解释。
索引:A - B - C - D - E - F - G - H - I - J - K - L - M - N - O - P - Q - R - S - T - U - V - W - X - Y - Z
---[A
abstract member function(抽象成员函数) 一个没有函数体的成员函数,必须被比声明它的类型更派生的类型的成员函数覆盖。参见 Abstract (member)。
access rights(访问权限) 与 Type 或 Class 成员相关联的访问级别。Public(公有)成员可被任何代码访问;Protected(受保护的)成员可被成员函数以及任何派生 Type 或 Class 的成员函数访问;Private(私有)成员仅可被该 Type 或 Class 的成员函数访问。默认情况下,Type 成员具有公有访问权限,而 Class 成员是私有的。
any pointer(任意指针) 一种变量或表达式,指向某个内存地址,但从编译器的角度来看,并不知道该地址存储的是何种类型的数据。在 C 语言中,这相当于 void 指针或 (void *)。参见 ptr。
archive(归档文件) 归档文件是一组文件或单个文件打包成容器格式,通常在之前或之后进行压缩。典型的容器格式有 GNU Tar 和 Zip。典型的压缩格式有 Gzip 和 Zip。
argument(参数/实参) 传递给过程的数据。过程使用其参数列表中的形参来引用该数据。
argument passing convention(参数传递约定) 向过程传递实参的方式,可以是 by reference(按引用)或 by value(按值)。参见向过程传递参数。
array (container)(数组(容器)) 一种数据集合,其元素在内存中连续存储(一个接一个,以升序排列)。因此,数组提供对其元素的随机访问(任意元素可在任意时刻访问)。在容器末尾以外的任何位置插入或删除元素,都需要重新定位其后的元素,因此当插入或删除效率很重要时,通常首选链表。
assembler(汇编器) 工具链中的一个组件,用于将源代码翻译成可执行程序。汇编器将编译器生成的低级汇编指令助记符转换为目标代码。
assignment(赋值) 赋值是计算的基本操作之一。它的含义是将一个值复制到变量所指向的内存位置。该值可以是一个字面量、另一个变量或某个表达式的结果。对于 Type 或 Class 的实例,这涉及调用其赋值运算符之一。不要与初始化混淆。
automatic storage(自动存储) 指调用栈上的存储空间。具有自动存储的局部过程变量、对象和数组在过程被调用时分配,在定义时初始化,当(对于对象而言)离开其声明所在的作用域时被销毁,并在从过程返回时被释放。
automatic variable/object/array(自动变量/对象/数组) 具有自动存储的变量、对象或数组。
---[B
byref Byref 指定以引用方式向过程传递参数。以引用传递的参数可以被过程修改,且修改结果对调用方可见。
byval Byval 指定以值方式向过程传递参数。过程接收传递参数的副本。对于 Type 或 Class 实例,这涉及通过调用其拷贝构造函数来实例化临时对象。这些临时对象在过程退出时被销毁。
binaries(二进制文件) 二进制文件是源代码的最终产物。二进制文件包括可执行文件(Windows 上的 .exe)、静态库文件(.a)、动态库文件(Windows 上的 .dll,Linux 上的 .so)以及可重定位目标文件(.o)。
.BSS section(.BSS 节) 可执行程序中在程序启动时仅包含零字节的部分。由于所有字节均为零,通过将未初始化的数据或零初始化的数据放置在此节中,通常可以减小可执行文件的最终大小。
buffer(缓冲区) 一块内存区域,允许在数据被复制到其他地方之前保存或处理数据。在通信设备中,它可以保存尚未处理的传入或传出数据。在图形处理中,缓冲区可以在图像被复制到屏幕之前保存图像。
---[C
call back(回调) 一种控制机制,调用方允许一个过程调用由调用方提供的另一个过程(回调),通常通过函数指针实现。
call stack(调用栈) 为进程或线程保留的一块内存,用作栈来存储过程被调用时所需的各种信息。调用栈上存储的信息包括所有局部自动变量、对象和数组数据,以及通常传递给过程的参数。这些项目在过程被调用时被分配(_压入_调用栈),并在过程返回时被释放(_弹出_调用栈),具体由调用方还是被调用方负责取决于所使用的调用约定。此保留内存的初始大小和最大大小因平台而异。
caller(调用方) 一个略有误导的术语,用于指代代码中调用过程的那个位置。
cast(类型转换) 类型转换操作使用指定的规则将一种数据类型转换为另一种。Type 结构可以为任何内置数据类型和/或其他 TYPE 实现自定义的 Cast,参见 Cast。
code block(代码块) 几行源代码组合在一起,共享至少一个公共作用域。例如,一个过程的代码块是 Sub 和 End Sub 之间的所有代码行。
com port(COM 端口) 串行通信端口的简称。程序可以通过 COM 端口与外部设备(如调制解调器或另一台计算机)进行通信(现如今,传统的 COM 端口已被 USB 所取代)。参见 Open Com。
compiler(编译器) 编译器是一种计算机程序,它将源代码转换为机器代码或目标代码。
compiler directives(编译器指令) 包含在程序文本中的指令,影响编译器的行为方式。例如,编译器可能被指示根据目标操作系统包含代码的某一部分或另一部分。
compound statement(复合语句) 由一个或多个附加语句组成的语句。通常,复合语句有一个开始(开头语句)、中间(语句块)和结束(关闭或结束语句),而有些还有额外的部分。复合语句的例子有 IF 和 FUNCTION。
constant(常量) 一个在程序执行过程中保持不变的符号。参见 Const。
constructor (module)(构造函数(模块)) 一种特殊类型的模块级过程,在模块级代码流之前自动调用。参见 Constructor (Module)。
constructor (TYPE or CLASS)(构造函数(TYPE 或 CLASS)) Type 或 Class 的一种特殊成员函数,在对象实例化时被调用。
contravariance (TYPE or CLASS)(逆变(TYPE 或 CLASS)) Type 或 Class 的一种类型规则,允许使用比原始指定类型更通用(派生程度更低)的类型。
covariance (TYPE or CLASS)(协变(TYPE 或 CLASS)) Type 或 Class 的一种类型规则,允许使用比原始指定类型更不通用(派生程度更高)的类型。
CVS 并发版本系统(Concurrent Versions System)。在 Sourceforge 上实现的文件管理器,用于存储源代码,保存开发者引入的变更历史。FB 过去使用。(另见 SVN 和 GIT)
---[D
.DATA section(.DATA 节) 可执行程序中包含程序运行时可更改的数据的部分。
debugger(调试器) 允许对编译后的代码进行受控执行的程序。可以跟踪变量的值,可以暂停、单步或加速执行等。调试器通常用于帮助找到源代码中程序员错误(称为"Bug")的根源。
declaration(声明) 向编译器引入符号、常量、变量、过程、数据类型或类似内容的源代码语句,但不一定为其分配空间。参见 Dim、Declare、Extern、Type。
definition(定义) 为数据或代码分配空间的源代码语句(或语句组)。例如,Sub 通过为其将包含的程序代码分配空间来定义一个过程。某些语句既可以是声明,也可以是定义。例如,Dim 既声明又定义了一个变量。
dereference(解引用) 访问(读取和写入)存储在给定地址的变量的行为。参见 Operator * (ValueOf)、Pointers。
descriptor(描述符) 指编译器和运行时库用于管理可变长度字符串和数组的内部数据结构。
destroy (TYPE or CLASS)(销毁(TYPE 或 CLASS)) 解构并释放对象实例内存的行为。当对象被销毁时,其析构函数被调用。当对象超出作用域时,或使用指向对象的指针调用 Delete (Statement) 时,这会自动发生。
destructor (module)(析构函数(模块)) 一种特殊类型的模块级过程,在程序终止时自动调用。参见 Destructor (Module)。
destructor (TYPE or CLASS)(析构函数(TYPE 或 CLASS)) Type 或 Class 的一种特殊成员函数,在对象被销毁时被调用。
dll 动态链接库(dynamically linked library)的缩写。
DPMI 一种方法/标准,允许在 16 位实模式 DOS 内核上执行保护模式代码(大多数也是 32 位的)。仅影响 FreeBASIC 的 DOS 版本。另见 DOS related FAQ。
DJGPP 用于运行 DOS 的 Intel 80386(及更高型号)PC 的完整 32 位 C/C++ 开发系统,包含许多 GNU 开发工具的移植版本。
dynamically linked library(动态链接库) 一种包含可执行代码的文件,在另一个应用程序启动时由其加载。也称为 dll 或共享库。参见 Shared Libraries (DLLs)。
---[E
enum(枚举) 一种数据类型,限制为按特定顺序给出的一系列命名值。参见 Enum。
executable(可执行文件) 可以运行的二进制文件。它由链接器将库和目标文件绑定在一起而成。
exit sub/function(退出 sub/function) 在过程内部调用时,离开该过程并将控制权返回给调用程序。
expression(表达式) 执行将求值/返回一个值的语句的指令。
---[F
field(字段) 通常指 Type 或 Class 中的数据成员。
file number(文件号) 与 Open 中给出的已打开文件或设备相关联的整数。对已打开文件或设备的所有后续操作都必须使用相同的文件号。
format string(格式字符串) 控制数据应如何呈现的字符序列。参见 Format、Print Using。
function(函数) 使用 Function 定义的过程,可以选择性地接受参数并返回一个值。
function pointer(函数指针) 一个包含函数地址的变量。该变量所指向的地址(函数)可以在程序运行时更改,允许动态的程序流,例如回调函数。
---[G
get/put buffer(Get/Put 缓冲区) 参见:Image Buffer。FreeBASIC 原生格式的图像缓冲区。
GIT 在 Sourceforge 上实现的文件管理器,用于存储源代码,保存开发者引入的变更历史。FB 现在使用。(另见 CVS、SVN 和 GIT)
global variable(全局变量) 在模块内所有过程、多个模块或两者都可见的变量。参见 Common 和 Extern。
GNU 一个大型协作项目,主要目标是提供一个免费且非专有的类 Unix 操作系统。
GPL GNU 通用公共许可证(GNU General Public License)的缩写:一种用于软件和其他类型作品的许可证。开源,要求用户保持项目开源并遵循 GPL。
graphics primitive(图形基本元素) 图形基本元素是圆形和矩形等常见形状的另一种称呼。
---[H
hash table(哈希表) 一种将键与值关联的数据结构,允许根据给定键高效地查找值。
header(头部/头文件) 当谈论一组数据时,这通常指描述其余部分的数据的第一部分。当谈论(头)文件时,这指的是包含文件。在 FreeBASIC 中,文件扩展名".bi"通常被使用。
heap(堆) 运行时库(及操作系统)提供的内存区域(自由存储区),程序可以从中动态分配内存。参见 Allocate。
---[I
image buffer(图像缓冲区) 用于描述图像的数据集合,包含宽度、高度、颜色深度和像素数据等信息。
include file(包含文件) 一种源文件,通常包含一个或多个其他源文件引用的变量和过程的类型定义和声明。一般来说,这些文件提供了某个或多个模块的公共接口,尽管被 #include 的文件可以包含任何文本。
inheritance (TYPE or CLASS)(继承(TYPE 或 CLASS)) 继承是指通过使用 Extends 声明从基类型派生一个类型。基类型的成员成为派生类型的成员。基类型的 Private 成员永远不能从派生类型直接访问,但可以通过调用基类型的 Public 和 Protected 成员来访问。
initialization(初始化) 在变量创建时给其赋值的行为。对于对象实例,这涉及调用其构造函数之一。不要与赋值混淆,赋值是给已存在的变量另一个值。
instance(实例) Type 或 Class 的一个已实例化的对象。
instantiate(实例化) 创建 Type 或 Class 的对象的行为,可以直接用 Dim,也可以间接地,例如通过按值将对象传递给过程。
invariance (TYPE or CLASS)(不变性(TYPE 或 CLASS)) Type 或 Class 的一种类型规则,要求使用与原始指定完全相同的类型。
---[J
---[K
---[L
library(库) 编译后的代码存储在单个文件中,可在制作其他程序时使用。库通常有一个或多个头文件(或包含文件),以提供使用该库所需的所有声明。
linked list (container)(链表(容器)) 一种数据集合,其元素通常存储在堆上。链表的元素存储其相邻元素的地址,因此只能进行顺序访问(通过跟随相邻元素的链接来访问元素)。然而,这种方案确实提供了在容器任意位置进行常数时间插入的能力,因此当插入或删除需要高效时,通常优先于数组使用。
linker(链接器) 一种将多个模块和库合并成单个可执行文件的程序,该可执行文件可以加载到计算机内存中并由计算机执行。FreeBASIC 使用 LD 链接器。链接器是生成可执行文件最常见的方式,但不是唯一方式。
LGPL GNU 宽通用公共许可证(GNU Lesser General Public License)的缩写。类似于 GNU GPL,但更宽松,允许非 (L)GPL 的作品以静态方式链接到 LGPL 的作品,前提是新作品可以重新链接或替换 LGPL 的部分。
LHS "Left Hand Side"(左侧)的缩写。
local variable(局部变量) 只在声明它的作用域内可见的变量,在程序执行离开该作用域时被销毁。
lock(锁) 一种同步机制,使得同一时间只有一个线程或进程可以访问共享对象,例如全局变量、设备或文件。
---[M
member(成员) 在 Type 或 Class 定义中声明的数据字段、过程、枚举、类型别名或其他任何内容。
member data(成员数据) 与 Type 或 Class 关联的变量。成员数据可以是静态的或非静态的。
member function(成员函数) 与 Type 或 Class 关联的过程。成员函数对其类型或类的成员拥有完全的访问权限,可以是静态的或非静态的。
method(方法) 参见成员函数。
module(模块) 整个源文件,包括可能存在的任何 include file(包含文件)。通常,模块是一个逻辑代码单元,包含程序中相互关联的部分。例如,在制作游戏时,可以将错误日志记录所需的过程与控制图形的过程分开放在各自的模块中。
---[N
non-static member data(非静态成员数据) Type 或 Class 的每个实例都有自己副本的成员数据。
non-static member function(非静态成员函数) 具有隐式 This 引用作为参数的成员函数。
null(空/null) 通常与指针相关联的常量,表示"无"值。该值通常是整数"0"(零)——附加到 zstring 末尾的"NULL 终止符"是 chr(0),或 asc(!"\0")——但也可以定义为指针类型,如 Cast(any ptr, 0)。
---[O
object (built-in TYPE or CLASS)(对象(内置 TYPE 或 CLASS)) Object 是一种内置类型,为所有使用 Extends 声明从其派生的类型提供运行时类型信息(RTTI),允许它们与 Operator Is 配合使用,并支持 Virtual 和 Abstract 成员函数。
object code(目标代码) 机器可读形式的代码,可由计算机的 CPU 和操作系统执行,通常与库链接以创建可执行文件。
operand(操作数) 传递给运算符的参数之一。例如,在表达式 a = b + c 中,操作数是 a、b 和 c,而运算符是 = 和 +。
operator(运算符) 接受一个或多个操作数(参数)并返回一个值的函数。运算符可以对内置数据类型起作用,也可以被重载以对用户定义类型起作用。参见 Operators。
overload(重载) 声明与另一个过程同名但参数不同的过程。自由函数或模块级函数可以使用 Overload 关键字进行重载。Type 或 Class 的成员函数默认可以重载。
override(覆盖) 指定成员函数必须覆盖比声明它的类型派生程度更低的类型的 Virtual 或 Abstract 成员函数的属性。使用 Override 属性时,如果成员函数没有覆盖任何内容,编译器将显示错误。
---[P
page buffer(页面缓冲区) 用于在屏幕内容显示之前保存它的缓冲区。在允许多个页面缓冲区的情况下,一个页面对用户可见,而所有其他页面都是隐藏的。活动页面(进行更改的页面)也不必是可见页面,这允许在显示一个页面的同时更改另一个页面。
parameter(形参) 过程使用的名称,对应于传递给它的实参。
parameter list(参数列表) 过程声明或定义中带括号的逗号分隔的形参列表。
PDS 专业开发系统(Professional Development System)。有时也称为 QB7.1。
pitch(行距/跨度) 图像或屏幕缓冲区中每行的字节数。如果行与行之间没有填充,则可以用 width * bytes_per_pixel 来计算,但这并不一定是安全的假设。屏幕的 pitch 可以通过 Screeninfo 找到,图像缓冲区的 pitch 可以通过检查图像头部的 pitch 值找到。
pointer(指针) 一种用于保存地址的数据类型。指针的种类决定了当指针被解引用时,或与 Operator -> (Pointer to member access) 配合使用时,如何解释该地址处的数据。参见 Pointers。
polymorphism (TYPE or CLASS)(多态(TYPE 或 CLASS)) 多态是对象根据其自身性质(特别是其真实类型在继承层次结构中的位置)提供不同行为(使用不同实现)的能力。多态通过覆盖基类型的 Virtual 或 Abstract 成员函数来实现。
preprocessor(预处理器) FreeBASIC 预处理器负责展开宏并将已定义的值替换为其实际值。
procedure(过程) 可以从程序中其他地方调用的任意代码块的通用名称。参见 Sub、Function。
property(属性/属性访问器) 属性是一种特殊的类型/类成员,介于字段(数据成员)和方法之间。参见 Property。
ptr 指针(pointer)的缩写。参见 pointer(指针)。
---[Q
queue (container)(队列(容器)) 提供先进先出(FIFO)存储和检索的数据集合。通常,元素只能在末尾插入,只能从前端删除,但可以从任一端访问。
---[R
ragged array (container)(锯齿数组(容器)) 锯齿数组是每行长度不同的数组。
real number(实数) 任何正数或负数,包括分数、无理数和超越数(如 pi 或 e)以及零。包含实数的变量具有有限的范围和精度,这取决于用于表示该数的位数。参见:Single 和 Double。
reference(引用) 引用是一种访问(读取和写入)内存位置处数据的方式。引用可以被视为一个以内存位置为值的指针,并且是隐式解引用的。参见:BYREF (variables)。
registers(寄存器) CPU 内部的数据存储位置。80386 及兼容的 32 位型号有 EAX、EBX、ECX、EDX、ESI、EDI、EBP 和 ESP,以及一些特殊(控制/测试/调试)寄存器。与"Windows 注册表"无关。
RHS "Right Hand Side"(右侧)的缩写。
RTTI "Run-Time Type Information"(运行时类型信息)的缩写。Object 内置类型为所有使用 Extends 声明从其派生的类型提供 RTTI 能力,允许它们与 Operator Is 配合使用,并支持 Virtual 和 Abstract 成员函数。
---[S
scope(作用域) 指程序某个组件(如变量或过程)的生存期和可见性。例如,在过程内部定义的变量具有过程作用域:它在整个过程中可见,但在过程的代码块之外不可见。当过程结束时,变量超出作用域,不再存在。
scope block(作用域块) 所有代码行具有相同作用域的代码块。显式作用域块可以用 Scope 语句指示。作用域块也可以隐式存在于 If..Then、For..Next 和其他复合语句的使用中。
shared library(共享库) 在系统上只存在一次的库,多个可执行文件可以在运行时链接到它。参见 Shared Libraries (DLLs)。
source code(源代码) 程序员编写的代码,以人类可读的形式,尚未编译。
stack (container)(栈(容器)) 提供后进先出(LIFO)存储和检索的数据集合。通常,元素只能从栈顶插入、访问和删除。
statement block(语句块) 被复合语句包围的一行或多行代码。
static library(静态库) 在链接时链接到程序中的库。每个链接到它的可执行文件都有一份库的副本。所有数据都是特定于可执行文件的。参见 Static Libraries。
static member data(静态成员数据) Type 或 Class 的每个实例共享的成员数据。该数据定义在任何 Type 或 Class 之外,在生成的对象实例中不占用空间。
static member function(静态成员函数) 没有隐式 this 引用作为参数的成员函数。静态成员函数可以通过变量正常调用,也可以直接使用类型名称和作用域解析运算符调用。参见 Static (Member)。
static storage(静态存储) 指可执行文件的 .BSS 或 .DATA 节中的存储空间。具有静态存储的变量、对象和数组在编译时分配和初始化,并在程序终止时(对于对象而言)被销毁和释放。显式初始化的变量、对象和数组分配在 .DATA 节中。
static variable/object/array(静态变量/对象/数组) 具有静态存储的变量、对象或数组。
注意:有时,我们谈论"静态数组/字符串"(与"动态数组/字符串"相对),但在这里,"静态"一词适用于数组/字符串的大小(固定长度,与"动态"术语表示可变长度相对)。
因此,这个"静态/动态"术语并不适用于数据的存储类型。
sub(子程序) 使用 Sub 定义的过程,可以选择性地接受参数,但不返回值。
SVN Subversion。一种版本控制系统,允许用户跟踪对源代码和文档所做的更改。FB 过去使用。(另见 CVS 和 GIT)
SWIG 一种将 C 头文件自动翻译为 FreeBASIC 的工具(尽管不总是完美的)。
symbol(符号) 用于指代程序中的变量、标签、函数、方法、过程或其他编程构造。
---[T
.TEXT section(.TEXT 节) 可执行程序中包含程序指令和常量数据的部分。
this reference(this 引用) 传递给 Type 或 Class 的非静态成员函数的隐藏参数,是该类型或类的实例的引用。在整个成员函数中,该实例使用 this 关键字来引用,参见 This。
thread(线程) 进程(正在运行的程序)中与同一进程中的其他线程共享执行时间的执行线程。参见线程。
trace(跟踪) 通过手动检查源代码或更实际地使用调试器,逐步跟踪程序执行的过程。
---[U
union(联合体) 一种可以用来在同一位置存储不同类型变量(如整数、双精度浮点数和固定长度字符串)的结构,但同一时间只能存储其中一种。参见 Union。
user defined data type(用户定义数据类型) Type、Union、Enum 或 Class 数据类型。
---[V
variable(变量) 表示内存中数据的符号。
VBDOS Visual BASIC for DOS,1992 年由微软(M$)发布的一款历史性 BASIC 编译器,是 QBASIC 之后的产品。DOS 平台支持很快被放弃,VBDOS 从未流行起来。
vector(向量) 内存中一系列可通过索引号访问的数据项。与数组类似,但向量元素不一定都包含在单个连续内存块中。
virtual member function(虚成员函数) 可以被比声明它的类型派生程度更高的类型的成员函数覆盖的成员函数。参见 Virtual (member)。
---[W
warning(警告) 编译器在编译过程中显示的消息,提示当前代码可能存在潜在问题。
wiki 一种在线系统,提供一组可供公众查看和修改的信息页面。在此语境中,它通常指 FreeBASIC 的在线文档。
---[X
x86 指与 8086(及之后)CPU 架构兼容的指令集,FreeBASIC 只支持 80386 及更高版本。
---[Y
---[Z
zstring zstring 本质上是一种标准的 C 风格字符串,以空字符结尾。提供此数据类型是为了与 C 库更好地兼容。
返回目录