🧩 第四章 面向对象编程技术:去除冗余、进行整理
📄 一句话概括

【退化】不是坏事,是把程序员的活儿交给机器——汇编 3 行变成 1 行,省下的由运行时接手。

📝 本节和前面几节的关系

4.11~4.12 讲了类型的两种放法,这一节回答那个疑问:语言是不是越写越省事了。

一、退化在这里的意思

不是变差,是把【能自动做的】交出去。 汇编三行 movl/addl/movl,C 一行 int total = a + b;——省掉的是机器该记的部分。 所以这个词带引号:从语言的角度看它退化了,从人的角度看它进化了。

二、实测省掉了什么

类型声明、语句结束符、括号——四门语言排一行就能看出来。 汇编 3 行,C/Java/Python 各 1 行。 省掉之后谁负责?运行时。

三、每一样都有代价

类型声明交给运行时推断——慢一点,错晚发现(4.11 讲的正是这个)。 内存释放交给垃圾回收——会停顿,内存占用大一点(4.17 会实测)。 指针运算被语言禁掉——安全了,但少一点控制力。 没有免费的省事。只是把麻烦从一个地方挪到另一个地方。

四、怎么判断一门语言好不好用

看它把哪部分自动化了、代价你能不能接受。 写脚本要的是省事,代价(慢一点)可以接受;写驱动要的是控制,代价(手动管理)必须自己扛。 所以【哪门语言更好】这个问题没有答案,【这个场景该付哪种代价】才有答案。

五、动手 Demo:编程语言【退化】了吗

同一条加法,在四个年代的语言里各要写多少行。 再看省掉的那些活儿,最后落到了谁手上。

src = {
    "汇编":   ["movl a, %eax", "addl b, %eax", "movl %eax, total"],
    "C":      ["int total = a + b;"],
    "Java":   ["int total = a + b;"],
    "Python": ["total = a + b"],
}
for k, v in src.items():
    print(k, len(v), "行")

实跑输出:

--------------------------------------------------------------------
编程语言【退化】了吗
--------------------------------------------------------------------

  这里说的【退化】不是坏事,**是【把程序员的活儿交给机器】。**
  实测同一条语句在不同年代语言里要写多少:

  年代/语言     要写什么               行数
  -------------------------------------------
  汇编           movl/addl/movl       3
  C              int total = a + b;     1
  Java           int total = a + b;     1
  Python         total = a + b          1

  实测省掉的东西:**类型声明、结束符、括号。**
  省掉之后谁负责?**运行时。**

  被省掉的     谁接手         代价
  ---------------------------------------------
  类型声明     运行时推断     慢一点、错晚发现
  内存释放     垃圾回收       停顿、内存多用
  指针运算     语言禁掉       少一点控制力

  **所以【退化】的真相是:把【能自动做的】交给机器,人只做【不能自动做的】。**
  **判断一门语言好不好用,就看它把哪部分自动化了、代价你能不能接受。**

实测:汇编 3 行,C/Java/Python 各 1 行,省掉的是类型声明、结束符、括号。 省下的活儿交给了运行时:类型推断、垃圾回收、禁止指针运算——每一样都有代价。

30 秒实验

  1. 找一段你写起来最省事的代码,想一想到底是谁替你把哪部分做了。
  2. 在你常用的语言里找一个【省事但慢】的特性,判断这个代价你能不能接受。

常见误区

  1. 以为退化是贬义。它说的是把活儿交给机器。
  2. 以为越省事越好。每一种省事都对应一种代价。
自测三问(点开对答案) 1. 这里的【退化】指什么? —— 把程序员的活儿交给机器:类型声明给运行时推断、内存释放给垃圾回收、指针运算被禁掉。 2. 同一条加法四种语言各几行? —— 汇编 3 行,C/Java/Python 各 1 行。 3. 怎么判断一门语言好不好用? —— 看它把哪部分自动化了、代价你能不能接受——没有普适答案,只有场景取舍。

相关笔记