diff options
Diffstat (limited to 'content')
| -rw-r--r-- | content/posts/抽象.md | 99 |
1 files changed, 96 insertions, 3 deletions
diff --git a/content/posts/抽象.md b/content/posts/抽象.md index d56c7c10..8ea78f44 100644 --- a/content/posts/抽象.md +++ b/content/posts/抽象.md @@ -3,13 +3,106 @@ title: subtitle: tags: - 语言 + - 计算机 + - 逻辑 + - 哲学 + - 形而上学 related_cards: -mentioned_books: +mentioned_books: + - 娱乐至死 date: -categories: +categories: 猫头鹰化石 banner: draft: true toc: true --- -「抽象」这个词被广泛地滥用了,如今的年轻人用这个词来形容所有他们不理解的东西,以及他们觉得好笑且不正常的东西。 +因为工作需要,我的上司要求我和另一个助教老师准备一场英文辩论,在周六的英语角之前在学生面前展示,辩题是「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)。 + +「发明」其实就是对「书写」的一种抽象,与此同时,智能手机也是一种发明,也就是说,在这个语境下,智能手机和书处于同一个抽象层次上。 + +如果只是因为「书写是一种发明,智能手机也是一种发明」,就说「书写不会让人变笨,所以智能手机也不会让人变笨」,闹笑话的显然是我。**这样的逻辑谬误其实挺常见的,原因就在于选取的抽象层次太高了**,还不够具体。 + +智能手机和书写的共同特征还有「免去使用者的记忆之劳」——如果能把文字写下来随时查阅,人就会觉得自己不需要记住什么东西了;如果知道自己可以随时用手机查到需要的消息,人就会觉得自己不需要记住什么东西了。显然,这才是我需要抽离出的共同特征。 + +至此,我构建了这样的抽象层次结构:发明 → 免去使用者的记忆之劳的发明 → 智能手机、书写。这个结构是不完整的,各个抽象层次之间还能进一步地抽象,但在这个语境下已经足够了。我指出智能手机和书写处于同样的抽象层次「免去使用者的记忆之劳的发明」,并试图用「书不会让人变笨」来证明「智能手机也不会让人变笨」。 + +我自认为这个逻辑尽管用到了抽象,但显然是连贯的。如果要反驳,对手可以进一步指出智能手机和书的差异,比如引用《娱乐至死》中有关技术倾向的观点,指出智能手机是为娱乐而生的,而书不具有这样的特征——即,尽管书和手机同属于「免去使用者的记忆之劳的发明」这一抽象层次,但手机还属于「娱乐至死的产物」这一抽象层次,而书则不属于——对方辩手可以指责我讨论问题的方式太抽象,没能考虑到两种事物之间更具体的差异。 + +## 应用抽象 + +[^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/抽象) |
