关于 AI 编程
看了一篇AI编程的文章,也有一些简单的看法。
资深程序员不能接受AI代码倒不一定是因为思想不够开放,(当然这也是原因之一,这是人类的局限)而更重要的可能是资深程序员的审美决定了他不太能接受AI写出的初级代码,按传统程序员的想法,AI 写得不行,虽然可能可以跑。
我目前主要是一个 iOS 程序员,有时候写些 python 脚本,用 AI 辅助的直观感觉是它写的 python 不错,OC 或 swift 是挺烂的。为什么会这样呢?有一种可能是,它写的都一般,但是它一般的 python 比我写得好,它一般的 OC 比我写得烂。
代码除了能跑之外,主要是可读和可修改。早在1972年,Dijkstra 就是指出 “我们尊重人类内心固有的限制和以谦卑的程序员的身份完成任务”。传统代码写作的课题,就是把复杂的,超出人类内心固有限制的问题转化成简单的,人类可以理解的子问题,然而 AI 没有这种限制,它不需要。不能完成这种转化,只是能完成特定任务的代码是初级代码。
初级代码的一些问题不容易衡量其实也是一些资深程序员性价比显得不高的原因,我们假设更好的代码是更有效率的,那这种效率也不一定在编写过程中就能释放,有一些是在它生命期内慢慢释放的,比如说它引起的问题更少(防御性),比如说它出问题后更容易修改(易读),比如说它出问题不同影响同僚(正交性)。然而业务上可能不需要代码这么好,需要代码成本不要那么高。
当有一天,AI完全接手了人类的这些编码工作,也许近一个世纪以来,人类为了驯服代码复杂性所做的种种努力都不再重要了,AI 完全不需要遵守任何范式,它们说到底是因为“人类内心固有限制”。但在那一天到来之前,人类如何处理代码库中同时存在手写代码和 AI 代码的问题呢?也许干脆把 AI 代码显示成一个人类无法阅读的形式更能减少程序员的心理阴影。