最近在 HN 看到好几篇讨论 AI 的文章(个人最喜欢第三篇),本文稍作总结。
趋势一直在,只是有加快。 🔗
早些年 Gerald Sussman 就把 SICP 的教学语言从 Scheme 换到了 Python, 主要理由不在于 Scheme 比较小众,而 Python 比较流行。
One no longer constructs systems from known parts, that instead one does basic science on the functionality of foreign libraries.
Nowadays you muck around with incomprehensible or nonexistent man pages for software you don’t know who wrote. You have to do basic science on your libraries to see how they work, trying out different inputs and seeing how the code reacts. This is a fundamentally different job, and it needed a different course.
以 Scheme 为工具的时代,是要求学生能够深入理解计算机程序的结构和执行过程; 如今,这种程度的深入理解已经不可能存在,或者因为代价太高而无法达成,我们的代码往往只是看起来恰好工作。
随着 coding agent 的流行,程序员更是渐渐从利用 “foreign libraries” 开发,过渡为从 AI 工具直接获得代码。以前是通过积木搭建筑,现在是建筑直接就修好了,就看结不结实、保不保暖。
两类程序员 🔗
第二篇文章说,程序员有两类:craft lover 和 make-it-go people. 前者追求优雅,后者只看结果。正如有人喜欢证明数学定理,有人只喜欢套公式。推而广之,软件也有两种:master piece (比如编译器)和耗材(需要不断迭代 - 特别是业务逻辑)。
这个类比我略有疑问:当前生成的代码多数还没有媲美 定理 的水准,但可能只是时间问题。
无论如何,只要这个趋势成立,人类的工作将不可避免地逐渐上移。
- 以前需要理解汇编,现在是高级语言;
- 以前需要了解各种库函数、算法的语义,现在能直接得到代码。
汇编、库函数、算法的开发当然还是有一定的市场,只是不可避免地会越来越小众。这在某种程度上,可能也算是一直 “祛魅” – 普通的思维活动不再能给程序员带来较高的劳动价值。 “编程” 这种看不见、摸不着的智力活动,也迎来了它的“泰勒标准”。
Sheer persistence and ingenuity has been compressed. Not eliminated, but compressed. The puzzle-solving wasn’t over. It just moved up a level. Now the puzzle is architecture, composition, directing the assistant.
PS: 弗雷德里克·温斯洛·泰勒认为管理的中心问题是提高劳动生产率。
关于理解 🔗
核心观点: 想要解决问题,必先理解问题。
If you are not thinking about things the right way, it is possible to spin your wheels struggling with a single problem for a very, very, very long time.
如果不能理解问题,问不到点子上,往往也是徒劳。正如爱因斯坦所说: “正确的提出问题是解决问题的一半,提出问题比解决问题更重要”。
“garbage in, garbage out” 🔗
理解和判断能力依然是智力的核心要素。人类依然需要对 AI 生产的代码进行评估。目前大多数比较顺畅的工作流中,往往是因为描述清楚问题比解决问题更简单。这里的 “描述清楚” 是指细节和要求足够 AI 生成满足需求的代码。
Coding agents are not mind readers and even if they were there isn’t much they can do if your own thoughts are confused.
《科学的严谨》 🔗
阿根廷著名作家豪尔赫·路易斯·博尔赫斯 (Jorge Luis Borges) 曾写过一篇极短篇小说《科学的严谨》。小说发表于 1946 年,全篇仅有一个段落,里面虚构了一个对制图学 (Cartography) 极其狂热的帝国。
- 极致的追求:在这个帝国里,制图学发展到了登峰造极的地步。为了追求精确,他们制作的地图越来越大 —— 单省的地图有一座城市那么大,帝国的地图有一整个省那么大。
- 荒诞的顶峰:最终,制图师公会制作了一幅与帝国完全等大(1:1比例) 的帝国地图,这幅地图上的每一个点都与真实的帝国疆域一一对应。
- 衰落与毁灭:后代人对制图学失去了前人的热情,他们发现这幅巨大的地图不仅毫无用处, 反而成了累赘,于是毫不留情地将其遗弃在日晒雨淋之中。后来那幅曾代表最高科学成就的地图只剩下了西部沙漠里的断壁残垣,成了野兽和乞丐的栖身之所。地理学在这片土地上也彻底绝迹了。
地图不是疆域本身。如果模型完全等同于现实,模型就失去了存在的意义。科学/模型的意义在于“抽象”与“简化”, 模型通过省略细节、提取关键信息,帮助人们认识世界。正所谓,“学而不思则欠拟合,思而不学则过拟合。” 也许 AI 通过不断蒸馏可以做得很好,但是人类自身的建模(取舍和抽象)能力依然珍贵。
写出一份好的 Specification 仍然是耗时的工作,而有合格的 Specification 的前提下, 编码本身反而并不是最重要的工作 – 正如早年有人区分 程序员 和 码农 一样。
个人见解 🔗
- AI 加快了迭代速度。
- 更详细的需求得到更准确的响应;
- 更准确的Spec得到更高效的验证、更高质量的生成代码。
- 影响项目成功的主要因素是 Spec 的质量。
- 主要耗时从生产代码转为调试、验证代码;
- 有充分测试覆盖的项目可以更快速的迭代。
- 工具并不平等,会放大差距。
将来进行面试时,最重要的可能不是过往的经验,而是考察对方是否能写出一份高质量的 SPEC. 以及考察对方设计、架构方面的审美。
The ecosystem, the economy, and the culture.