一點關於 AI 編程的思考

9 天前
 mizuhashi
程序員的工作,本質上是在做語言翻譯,將描述需求的人類語言翻譯到機器語言。其中,需求語言是抽象的,就像用戶說「我要一輛車」,是一種概括性的描述,但要實際把車造出來,就要落實到非常具象的語言,因為無論是計算機還是現實物理,都有非常具體的規則,錯一點就會不能用。這種抽象程度的差異可以理解為信息量的差異,給定一個車的概念,它可以有成千上萬種樣子,但到生產出來的具體型號,就只剩下了一種,其他所有樣子都被排除了,這也是信息論裏提出的「信息量即是排除可能性的多寡」。

於是程序員的工作本質上是對信息的補足,這種補足是通過不斷疊加約束實現的,每個新增加的細節都是約束,能砍掉一部分可能性,直到最後可能性剩下一種。具體地說,給定一個需求,程序員會想到一些潛在的方案,每個方案會有新加入的約束,提出方案本身就是補充了原本不存在的信息。那麼如何從潛在方案中選擇呢?程序員需要在需求中找到一些能指引選擇的原始約束,例如把方案介紹給產品詢問意見,或者根據自身的經驗預測一下未來的需要,這實際上就是擴充了上下文。

AI 的代碼生成工作在上述翻譯鏈的後半段,它會從程序員那取得中間階段的語言,然後生成具體的代碼。如果 AI 更聰明,那麼程序員應當可以提供更抽象的語言,讓 AI 自己補足信息,而如果 AI 更笨,程序員就需要提供更多信息,才能保證最終代碼的可用。於是,我們有了一個度量 AI 聰明程度的方法,也有了一種適應 AI 的策略,就是如果 AI 不夠聰明,就提供更多細節直到它能寫出來。
1099 次点击
所在节点    随想
6 条回复
stingx
9 天前
想到了马斯克的脑机接口项目提到,目前人类的沟通确实被输入输出端限制了,目前可以努力的方向是让抽象的想法在具化成语言之前,就输出到外部
HeyWeGo
9 天前
AI 省事的地方就是,如果我说让他做一个添加图片的功能,它会同样把删除,移动等周边可能的 case 给你带上,有些甚至提需求的时候都没那么完善,和现实中程序沟通的时候,由于人总归是有情绪的,所以在实现过程中的细节会把人弄得很烦躁,最后可能产生不好的氛围。 程序员觉得需求提的不明确,需求可能就觉得程序也可以多想一步。不管怎么样,沟通上的消耗很耗费精力。

就像我在之前有个帖子里说的一样,如果我能像在日企里需求一样把每一个“如果...那么''都精确无误的传递,那么程序员的工作就是个自然语言到代码的翻译机器,我相信如果真有这样一份文档存在的话,AI 的速度一定比人快。

v 站程序员比例比较大,相信各位都能体会。
sillydaddy
9 天前
很有道理哎。甲方提出一些需求,它包含的是信息 iA ,而最后乙方交付给甲方满意的软件成果,它包含的是信息 iB 。那么 iA 和 iB 很可能是不相等的。那么 iA->iB 这个过程中缺失的信息,就由各方来补足。
foolishcrab
9 天前
没错,足够多的 prompt 肯定能写出来对的代码。
那么问题转移到了“足够多”是多少?
这在不同领域不同级别的工作上差异非常大,所以对 AI 到底有没有用的讨论,大部分都是鸡同鸭讲。
zppass
9 天前
现在越来越感觉,程序员更多的是探索需求,技术,或者逻辑的边界。是做一个完善和明确的工作,真正写代码实际占不了多长时间。有了 AI 这个代码编写的时间更短了,但是问题的难点还在,因为问题本质不是在你的代码上,是你的理解不透彻产生有问题的代码。
iOCZS
9 天前
程序是设计出来的,不是翻译出来的。。。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1147013

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX