这是为我翻译的 Uncle Bob 新书《我们程序员:从代码诞生到 AI 兴起》所写的一篇译者序。出版社老师说已经送去印刷了,预计很快能买到。之前写过一篇,感觉太个人化,又重写了一篇。
AI 编程
最近编程领域最热门的话题,肯定就是 AI 编程了。我使用 AI 编程工具大概有两年。起初,由于公司资源有限,项目无法安排到开发排期,我只好自己动手,结果极其迅速地完成整个项目。后来编程就彻底离不开 AI 了。以前见客户要么 ppt 上画饼,要么基于现有系统配置数据演示,很难在一开始就用贴合客户需求的方式演示。然而现在完全变了,我用 AI 两天内从 0 搭建好了一个搜索视频、转写视频脚本,最后生成新视频的全套流程,加上一整套成熟的用户界面,客户很满意。这一切看起来像魔法,就像巴贝奇在维多利亚沙龙上展现差分机时,给人们的震撼一样,那时一定有人面对叮叮当当运行的机械巨兽惊呼,"机器能思考!" (巴贝奇的故事详细见本书第 2 章)
兴趣
兴趣是引领我们前行的巨大动力。10 岁时,艾伦·图灵被《每个孩子都应该知道的自然奇观》(Natural Wonders Every Child Should Know)这本书所吸引,从此对科学有了新的认识。在翻译过程中,我在 B 站发现了一位 Up 主,他喜欢分享机械计算机运行原理的视频。原以为他是一名机械专业的大学生,后来发现他发布第一条原理视频时,还只是一名初中生,而大部分视频是在他读高中时发布的。AI 时代,很多能力会被无情地替代,大概只有好奇心和兴趣,才能指引我们。Uncle Bob 说,他在 12 岁时就立志成为程序员,起因就是他妈妈送给他的一份生日礼物。他已经保存了 60 多年了。这个玩具,现在看来很简单,就是用一些金属棒和机械装置搭建起来的装置,可以计数,还可以加法运算等等。那时候的他非常痴迷,完成了很多程序。他说,"那种拥有无限能力的纯粹喜悦感让我确定了自己的人生方向。我是一名程序员,而且我将永远是一名程序员。"(Uncle Bob 是如何走上程序员道路的,详细见第 11 章)希望这本书中某些故事,也能在某个时刻激发起大家的兴趣。
细节
曾经给客户开发过一套 Oracle 考试模拟环境的软件。项目负责人是一位大学数学系教授,其中有项工作是要整理每个 Oracle 语句的状态转换数组。他带领几位数学系的研究生,在纸上画 DFA,再提取状态值,最终形成数组。算下来处理一条语句需要几天时间,要完成整个 Oracle 语句集的构建需要几个月,还不能确保正确。我写了个程序,从 bison 的输出文本中自动提炼这些数据生成数组,整个过程无需人工干预,准确性 100%,可以快速测试正确性。写这个程序要处理很多细节,因为 bison 的输出文本并没有规范的语法,需要自己一点点依据字符个数和字符位置进行推演,有时候差一个字符就跑不起来。处理细节的重要性,在计算机发展的早期就已经体现出来。本书中讲到格蕾丝·霍珀时,她和同事们曾经要在布满数千个发热真空管和104°F水银罐的房间里操作 UNIVAC 计算机。这台计算机每次加法运算的结果都比实际值大3,就必须设计电路在每次操作后自动减去3。对于操作指令,有时候纯粹为了对齐,就必须引入一些特殊的跳过操作(霍珀如何应对那么多恼人的细节,详细见本书第 4 章)。这些看似没道理的细节,都必须做对,才能有正确结果。
世上为什么要有程序员?Uncle Bob 说为什么要有程序员,因为程序员是细节掌控者。我认为,虽然有了 AI 编程之后,许多产品经理也能开发程序,但在复杂场景下,比如架构设计、错误调试等,这些场景有非常多的细节,仍然离不开真正懂程序运行原理和软件工程的人。永远都有需要好奇心才能打开的领域,也永远有只有掌控足够多细节才能达到的成就。
翻译的几点说明
本书的翻译过程中借助了 AI,最后我逐字逐句做了修订。除了原脚注外,对于不易理解之处我添加了译者注,以帮助大家了解背景,大约有 3000 多字。原书脚注或参考文献有很多视频,但大都没有给链接,为方便读者,已将链接补充在电子脚注中。