Uncle Bob: 代码的长臂
Uncle Bob - The Long Reach of Code
Guests: Uncle Bob
In-depth read · Key ideas, reasoning, and examples, organized by topic.
§01GPT-3 会让程序员失业吗:一个干脆的「不」
节目从 2020 年那个显而易见的问题开场:GPT-3 刚由 OpenAI 发布,看起来能写出一些基本的方法——比如判断回文——因为它是在大量 GitHub 仓库上训练的。那是否意味着编程的未来就是自动化?Robert Martin 的回答是一句干脆的「不」,理由不是对机器学习的谦逊,而是一个关于「编程是什么」的论断。
要复制编程,你需要一台像人那样编程的机器——而这意味人类意识。而我们离那种机器还非常非常远。为什么需要意识?因为必须有人来规定程序将如何工作,而那份规定实际上就是程序本身。任何别的规定都不够。
§02规格就是程序:程序员是细节管理者
业务用户写出一份粗略的规定,然后依赖程序员的人类直觉与人类智能,去填满业务人员省略掉的所有可怕的小空白。他说,程序员是细节管理者;他们处理所有混乱。正是他们去应付「文本文件有时用换行符结尾、有时用反斜杠序列结尾」这种事——原因可以追溯到五十年前的电信打字机、Unix 和 DOS。
正是他们写那些愚蠢的小 if 语句,去处理没有哪个业务人员愿意想一想的古怪例外。如果我们要造一台能处理所有这些的深度学习机器,我们会得到一台 HAL 9000——某种具有人类智能的东西。而我们离那太远了,所以「某台深度学习机器终将夺走所有程序员的工作」这个前景,一点都不让他担心。
§03我们一直在与机器结对编程
Dwarkesh 重新框定问题:不是替代,而是共生——开发环境先进到你是在与机器一起工作,而不是在机器上工作。Martin 的回答是,这就是编程的整段历史。最初的程序是用二进制写的:图灵在自动计算引擎上工作时,真的用二进制写,因为当时没有语言。然后我们造出了汇编器。想想汇编器相对二进制的收益——那些你必须做的可怕的二进制算术,再也不用做了,你可以用符号形式写代码。那已经是巨大的
优势。然后 John Backus 带着 1953 年的 Fortran 规范出现,相对汇编语言又是巨大的优势。ALGOL 很快跟上。到 1966 年,Ole-Johan Dahl 和 Kristen Nygaard 发明了对象——那是图灵用二进制编程二十年之后,你有了第一个面向对象语言。C 在 68 年出现,C++ 在十二年后出现。我们有了这一连串对程序员帮助极大的进展。然后在九十年代后期,我们的工具里开始出现那些疯狂的东西:IntelliSense、重构工具、检查器、重复代码查找器。
Keep reading as a member.
You've read the free preview. Become a member to read the rest, with side-by-side reading and downloads where available.