1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
+++
title = "被错误抽象的抽象"
tags = [
"语言",
"哲学",
]
mentioned_books = [ "娱乐至死",]
endnotes = [ "「抽象」一词在艺术等领域也有使用,「抽象画」「抽象艺术」中「抽象」的意思是「没有物理实体」的,与本文讨论的内容关联不大,所以没有提及。", "封面图来自 [Unsplash](https://unsplash.com/photos/blue-and-white-round-illustration-LpbyDENbQQg)",]
date = 2025-06-10T16:55:43
categories = "猫头鹰化石"
banner = "https://img.eltr.ac/uPic/2025/06/sebastian-svenson-LpbyDENbQQg-unsplash-2.jpg"
slug = "abstraction"
draft = false
toc = true
aliases = [ "/posts/abstraction",]
url = "/essays/abstraction/"
+++
因为工作需要,我的上司要求我和另一个助教老师准备一场英文辩论,在周六的英语角之前在学生面前展示,辩题是「Are smartphones making us stupid?」(智能手机在让我们变笨吗?),我抽到了反方。
我一开始很不想占反对的一边,但做了一些研究之后,我找到了一个很方便的论点:技术是中立的,是人们使用智能手机的方式让自己变笨,责怪技术是本末倒置。
为了应付工作,我用大语言模型生成了一些辅助材料,其中有一条很有意思:苏格拉底在书写诞生之时,曾经反对这项「技术」,认为文字、书籍会让人们认为自己不再需要锻炼记忆,智慧变得浮于表面——换句话说,**苏格拉底认为「书让人变笨」**。[^1]
当我质问正方辩手「书在古希腊,和智能手机在现代,都是让人免去记忆之劳的新技术;那么,你认为书会让人变笨吗?如果不是,那智能手机作为相似的技术,为什么会让人变笨?」
对方表示不理解,认为我和她说的根本不是同一件事情,即便在私下与她再关于此话题展开讨论,她依然认为书和智能手机完全不能类比,认为我在玩文字游戏。她似乎没能看到背后的逻辑,我认为,这可能是因为她不熟悉「抽象」的概念。<!--more-->
---
「抽象」这个词被广泛地滥用了,如今的年轻人用这个词来形容所有他们不理解的东西,以及他们觉得好笑或不正常的东西。这一语言现象可能会被解读为语言的自然演变,就像 extravert 这个词,因为反义词 introvert 中间的字母是 o,所以被许多人错误地拼写为 extrovert,后来竟然被词典承认,成了正确的英文。即便如此,我也认为溯本清源,理解「抽象」一词的原本含义,依然重要。
你正在阅读「猫头鹰化石」,探讨词源学的一系列文章。今天我们来研究中文的词源,尝试透过各个学科、多种视角,理解「抽象」这个词所指的概念。
---
## 抽象一词的来源
「抽象」其实并非是纯血的汉语词汇,而是日语的舶来词,而这个词也不能算是日本人造的,而是一个叫井上哲次郎的日本哲学家,从英语的 abstract 一词翻译过来的(果然还是逃不过英语啊……)。这个词首次出现在《哲学字彙》(哲学字典)一书中,于 1881 年出版,是日本的学术词典。[^3]
至于井上哲次郎为什么要这样翻译,为什么选用了「抽」和「象」这两个字,我一直没有找到来源可靠的解释,但可以从英语词源入手。
Abstract 一词乍一看和 Extract(提取、抽取)一词很像,它们的确有相同的词根——后半部分的 -tract 来自拉丁语 trahere,意思是「移动、拖动」;而 ab- 的意思是「远离,离开」。Abstract 其实来自于拉丁语单词 abstrahere 的过去分词形式 abstractus,意思是「drawn away」(被抽离的)。
所以,英语和其他大部分由拉丁语发展而来的语言当中,抽象(abstract)的本意都是「被抽离的」,只有「抽」之意,没有「象」之意。中文和日文里的「象」字是怎么来的,我还没有找到说法,但我觉得可以把「象」理解为「表象」「具体的」——==「抽象」就是把事务的本质、多种事物的共同特征,从具体的表象中抽离出来认识的过程。==
## 计算机科学与哲学
学计算机的对「抽象」这个概念应该不陌生,实际上,计算机中的抽象与哲学的抽象化非常相似。浪漫地讲,抽象思维能力可能是人类智慧的根源,是人类的智能不同于地球上其他生物的智能的原因。
要理解「抽象」,可以先来看看哲学的一个分支,即形而上学。形而上学很难定义,但简单来说,是研究事物本质、宇宙本源的学科。[^2]形而上学的一个分支是本体论,本体论的一个任务就是「给实体分类」,这种分类是有级别的,有的实体属于较为基本的实体,是较高层的。
> 本体论者经常尝试确定类别或最高类别是什么,以及它们如何形成一个类别系统,该系统提供所有实体的包含分类。通常提出的类别包括实体(英语:Substance)、性质、关系(英语:Relations)、事态(英语:State of affairs)和事件。
{{< right "——[本体论 (哲学) - 维基百科,自由的百科全书](https://zh.wikipedia.org/zh-cn/本体论_(哲学))" >}}
如果你是一个熟悉面向对象编程和关系型数据库的程序员,你大概会觉得这些概念非常眼熟。实际上,程序员在编程时也一直在构造抽象(create abstractions)。本体论想要研究的「类别」系统,在计算机世界里也存在,例如,面向对象编程中的类和类的继承等概念,就构成了这样一个分类系统。
在 Java 语言中,所有类都继承自 `Object` 类,Java 中的任何数据类型都属于 `Object`;往下还有 `Number`、`String`、`Collection` 和 `Throwable` 等类;其中,`Throwable` 指「可以抛出的」,子类是可以抛出的错误(`Error`)和异常(`Exception`);再往下,还有表示更具体异常类型的子类,比如 `IOException` 表示执行 I/O 操作时发生了异常。

只是划分出了层级结构还不行,无论是本体论还是计算机科学,在抽象化实体时,分类系统必须体现出这样一种层级关系:==层级越高,实体越抽象,元素越基本,在物理世界中能找到具体指代物的可能性就越小;层级越低则反之==。在这样一个分级系统的顶端,是一个最基本的类别,所有事物都可以被抽象为这个类别——在 Java 中是 `Object`,是本体论中的「最高类别」,也就是形而上学想要研究的「事物的本源」。
## 程序设计中的抽象
有关面向对象编程的教材,往往喜欢用学生熟悉的人和动物作为例子,让学生设计类并实现继承,比如,程序员可以编写一个 `Animal` 类,然后编写两个继承自 `Animal` 的 `Dog` 和 `Cat` 类;类设计好之后,程序员可以构建类的实例,比如:
```java
Dog spot = new Dog();
Dog lucky = new Dog();
Cat elsa = new Cat();
```
拿这个例子中的 `spot` 举例,它直接属于 `Dog` 类,程序员可以用它来表示一只名叫 spot(点点)的狗,同时,它又属于 `Animal` 类,可以访问 `Animal` 类的非私密成员方法和成员变量。
从另一个意义上将,这只叫做 `spot` 的狗,不仅有狗(`Dog`)的特征,也有动物(`Animal`)的特征。而同一个例子中的 `elsa`,属于 `Cat` 类,`Cat` 类也继承自 `Animal` 类。`spot` 和 `elsa` 有相同的特征,因为它们都可以被抽象为动物(`Animal`)。
抽象还可以继续往上或往下,我们可以 `Animal` 抽象化为 `Organism`(有机体),或者将 `Dog` 具象化为 `GoldenRetriever`(金毛)。如前文所述,这个过程不是简单的分类,而是将具体的特征抽离,留下共同的、更接近底层的特征,最终抽象出所有事物的共同特征。
==形而上学之所以想要认知事物的本源,其实是想要找到广泛适用的第一性原理,即对一切事物都有意义的真理==。在 Java 语言中,`Object` 类定义了 `toString()`(转换为字符串)的公开方法,我们可以把这个方法理解为 `Object` 的基本特征、适用于 `Object` 的一般原理。由于我们知道,`Object` 类在 Java 语言中是层级最高的、最基本的类,是形而上学的「事物本源」,那么,适用于事物本源的基本原理,当然就是适用于所有事物的第一性原理——在 Java 语言中,所有的类都可以调用 `toString()` 方法。
程序设计中之所以存在抽象层次,其实是为了帮助程序员更好地分解、理解和设计软件系统。程序员可以关注每一个抽象层次应该关注的任务,比如,在设计 `Animal` 类的时候,只考虑怎样让实体具有动物的特征,而不需要考虑如何让实体拥有生命(这是高层 `Organism` 应该考虑的事情),也不需要考虑如何让实体学会狗叫(这是低层 `Dog` 应该考虑的事情)。
简而言之,==抽象地认知事物、学会分辨概念的抽象层级,能帮助个体更准确地认识世界。选取合适的抽象层级研究事物、讨论事物,才能得出在某个语境下有价值的真理;如果选取的是最高级的抽象层次,那么得出的结论就是适用于所有实体的第一性原理——这是形而上学之本体论的目标==。
## 智能手机和书
回过头来看我在开头提到的辩论,我的论证材料是如何对书和智能手机进行抽象的呢?
说是「书」,其实不太准确,我选用这个词只是为了归谬出「书让人变笨」的结论,用来反驳对手。苏格拉底反对的其实是「书写」(writing)。在引文中[^1],他将书写称作一种发明(invention)。「发明」其实就是对「书写」的一种抽象,与此同时,智能手机也是一种发明,也就是说,在这个语境下,智能手机和书处于同一个抽象层次上。
如果只是因为「书写是一种发明,智能手机也是一种发明」,就说「书写不会让人变笨,所以智能手机也不会让人变笨」,闹笑话的显然是我。**这样的逻辑谬误其实挺常见的,原因就在于选取的抽象层次太高了**,还不够具体。
智能手机和书写的共同特征还有「免去使用者的记忆之劳」——如果能把文字写下来随时查阅,人就会觉得自己不需要记住什么东西了;如果知道自己可以随时用手机查到需要的消息,人就会觉得自己不需要记住什么东西了。显然,这才是我需要抽离出的共同特征。
至此,我构建了这样的抽象层次结构:发明 → 免去使用者的记忆之劳的发明 → 智能手机、书写。这个结构是不完整的,各个抽象层次之间还能进一步地抽象,但在这个语境下已经足够了(软件设计时,程序员也不应该构建自己不需要的抽象)。我指出智能手机和书写处于同样的抽象层次「免去使用者的记忆之劳的发明」,并试图用「书不会让人变笨」来证明「智能手机也不会让人变笨」。
我自认为这个逻辑尽管用到了抽象,但显然是连贯的。如果要反驳,对手可以进一步指出智能手机和书的差异,比如引用《娱乐至死》中有关技术倾向的观点,指出智能手机是为娱乐而生的,而书不具有这样的特征——即,尽管书和手机同属于「免去使用者的记忆之劳的发明」这一抽象层次,但手机还属于「娱乐至死的产物」这一抽象层次,而书则不属于——对方辩手可以指责我讨论问题的方式太抽象,没能考虑到两种事物之间更具体的差异。
## 抽象的适用范围
抽象化的认知过程构建的其实是是一种「树」,可以表示为计算机科学中的一种数据结构。树这种数据结构并不能表示任意数据,因为它有一定的限制。
前文提到,书和手机处于「免去使用者的记忆之劳的发明」这一抽象层次下,而正方辩手可以指出,手机同时还属于一层书不属于的抽象层次,以此来反驳我的归纳不够具体。如果这样的话,对方辩手就构建了这样的抽象层次结构:

但「娱乐至死的产物」一定属于「免去使用者的记忆之劳的发明」吗?反例:电视广告。如果把电视广告也加入到这张图中,会发现这个层次结构并不正确。我们只是抽象出了实体的一种特征,却不是最具有代表性的特征。不过,如果只是用来辩论,或就某一话题展开讨论,这样不完善甚至不正确的抽象层次也是够用的,因为我们的目的并不是像本体论哲学家一样构建所有事物的抽象层次,也不需要探寻事物的本源是什么。
对于本体论哲学来说,抽象是基于世间万物进行的,所有的实体都可以归类到同一个分类系统中。为了让这样一个庞大的抽象系统不因树形结构的局限性而发生错乱,每一层抽象的过程,都需要找到事物最接近本源的基本特征。在一层一层地抽象过后,就能找到所有事物的基本特征,完全符合这个基本特征且不包含其他额外特征的实体就是事物的本源。
对于一般的认知过程来说,抽象的目的不是为了找到事物的本源,也无需抽象出最接近本源的基本特征。抽象的目的是由语境而决定的,就像计算机程序的抽象是由软件需求决定的。通俗来讲,抽象就是「通过现象看本质」的过程。
## 抽象的词义演变
扯了太多哲学和计算机科学,我们回到语言这个层次上来。
抽象的动词释义是:
> (2) 将复杂物体的一个或几个特性抽出去而只注意其他特性的行动或过程(如头脑只思考树本身的形状或只考虑树叶的颜色,不受它们的大小和形状的限制)
>
> (3) 将几个有区别的物体的共同性质或特性形象地抽取出来或孤立地进行考虑的行动或过程
{{< right "——[漢典](https://www.zdic.net/hans/抽象)" >}}
由于抽象的反面是「具体」,所以作为形容词时,抽象也可以表示「笼统的」。我们说一个人讲话「太抽象了」,意思其实就是「太笼统了,让人摸不着头脑」。抽象的、笼统的的确要比具体的更难以理解,但将「抽象」等同于「难以理解的」是不恰当的用词,实际上,这是错误的抽象过程——不能因为「抽象」有「难以理解的」的特征,就说「难以理解的」就是「抽象的」,这两个概念不在同一个抽象层级上,「难以理解的」还有可能是多义词导致的「模棱两可」。
不过,语言的演变本身就充斥着各种误解和归纳错误。实际上,「形而上学」的英文 Metaphysics 就是一个被错误理解的单词。哲学家亚里士多德著作的编辑写下了 Metaphysics 这个单词作为标题,意为「在物理学之后」,表示这些内容应该在读过亚里士多德写的 Physics 之后再读,却被后人理解成了「超越物理学的」,形成了一门单独的学科。[^4]
在文章的一开始我提到,「抽象」其实是来自日语的词,一开始是用来指代哲学概念的。不过,就像 WC(Water Closet)其实是一个建筑学专有名词,但到如今已经变成中国人委婉表达如厕地点的方式一样,==术语被挪用然后通俗化的现象,在语言的演变过程中非常常见==。
尽管这种误用可以被当作语言的自然演变,但我仍然倡导写作时应该精确地用词。在用「抽象」一词描述搞笑的东西和难以理解的东西之前,即使不刻意纠正,也应该想一想它原本的意思。
[^1]: “For this invention will produce forgetfulness in the minds of those who learn to use it, because they will not practice their memory. Their trust in writing, produced by external characters which are no part of themselves, will discourage the use of their own memory within them. You have invented an elixir not of memory, but of reminding; and you offer your pupils the appearance of wisdom, not true wisdom, for they will read many things without instruction and will therefore seem to know many things, when they are for the most part ignorant and hard to get along with, since they are not wise, but only appear wise.” ——[Plato, Phaedrus, page 274](https://www.perseus.tufts.edu/hopper/text?doc=Perseus%3Atext%3A1999.01.0174%3Atext%3DPhaedrus%3Apage%3D274)
[^2]: 参见:[形上学 - Wikipedia](https://zh.wikipedia.org/zh-cn/形上學)
[^3]: 参见:[抽象 - Wiktionary, the free dictionary](https://en.wiktionary.org/wiki/抽象)
[^4]: “Aristotle did not use the term metaphysics but his editor (likely Andronicus of Rhodes) may have coined it for its title to indicate that this book should be studied after Aristotle's book published on physics: literally 'after physics'. The term entered the English language through the Latin word metaphysica.” 参见:[Metaphysics - Wikipedia](https://en.wikipedia.org/wiki/Metaphysics)
|