用 ChatGPT 写 “Hello, world!”,首席资深工程师要写 40+ 行代码?

24e588d2fa861015d94919955ac3e480.gif

让 ChatGPT、Gemini 等大模型辅助代码编写已是多数程序员的日常,但本文作者提出一个观点:LLMs 和缺乏经验的开发人员一样,面对复杂代码往往只会再度增加复杂性。

原文链接:https://hachyderm.io/@vnglst/112135583244850791

作者 | Koen van Gilst 

翻译 | 郑丽媛

出品 | 程序人生(ID:coder_life)

尽管 Github CoPilot、ChatGPT 等许多大型语言模型(LLM)大大提高了我作为开发人员的效率,但我也亲身体验到了它们的局限性。为此,我想出了下面这个实验。

就像人类的许多活动一样,当小组开始工作时,本应轻松简单的任务往往会变得困难复杂。如果不积极抵制,你就会发现自己所处的系统和组织几乎不可能完成任何事情。

通过下面的实验,我想要探索 LLMs 的兴起是加剧还是缓解了这种复杂性。

d7770b7532039e2734c96bfc0def4ac0.jpeg

1d32318ef9c2a2bef30b84b6f6d16bac.png

“Hello, world!”

我们从一个简单的任务开始:让计算机显示“Hello, world!”。

我问 ChatGPT:作为一名初级开发人员,我要怎么用 TypeScript 输出“Hello, world!”?ChatGPT 给出的答案简短且正确:

61b47b3b8d923afd22e437ebbd9133d6.png

初级开发人员往往不了解编写代码的复杂性,所以我又问 ChatGPT 能否像中级开发人员那样重构代码:

e61a6aa046c4bf040477589f72291e80.png

为了增加复杂性,我又问 ChatGPT 能否从高级开发人员的角度重构代码,于是生成了如下代码:

7ed1bd1255b5ab58471bfb672d385a28.png

接下来是资深工程师:

6af2b7e2b3d5f785ec77d081948ba2a6.png

然后是首席资深工程师:

60818bc813c0109e791554c5c86cd525.png

经过以上几次迭代,我逐步提升了开发人员的资历水平,从初级工程师到高级工程师,最后到一家大型公司的首席资深工程师:

e5fa1cfb154c7ab799c2ab59f1c26c98.png

进行到这一步,仅用来显然“Hello, world!”的代码已经过于复杂了,但对于在大公司工作过的人来说并非不切实际。

d42808da690cf117a2bd9bf413368e4f.png

学会“退一步”

在开发生涯中,我认识到了退一步的重要性,即首先了解程序、函数或类的目标,然后设想如何从头开始构建它。当一个程序看起来过于复杂时,这种策略尤其有用。如果发现问题比最初想象的还要复杂(可能是由于缺乏经验),这种方法也有助于理解复杂性背后的原因。

在我早期的工作中,我曾一丝不苟地遵循现有代码,认为别人对当前问题有更深刻的理解,只是我还没有掌握全局。但后来我了解到,简单地“顺其自然”,试图让复杂的程序发挥作用,并不是增强软件的最佳方式,往往还会导致代码进一步复杂化。

LLMs 似乎缺乏这种本能,它们倾向于维持现状,尽可能保持现有代码不变,却导致复杂的程序变得更加错综复杂。

为此,作为本次实验的最后一项,我要求 ChatGPT“退一步”,评估代码的目标,提出更好的解决方案。这一尝试起初并不成功,因为 ChatGPT 一直在调整现有程序并保留“现有架构”,只有当我提示它从头开始设想时,它才提出了一个新的解决方案,如下所示:

b5416941edaa8101bdeedb1cdb90edbe.png

d42d704d1aed9b82653869c7febe9201.png

结论

从我使用 LLMs 的经历中,我发现它们倾向于在已经很复杂的程序上再叠加几层复杂性,而不是退一步考虑创新的解决方案——这表明,LLMs 解决问题的方法和创造力存在局限性。因此在我看来,LLMs 和缺乏经验的开发人员一样,往往会通过增加复杂性来“拥抱”复杂代码。

当然,以上内容均来自于我对于 ChatGPT 的使用经验,可能会以偏概全,没有全面了解 LLMs 的功能。另外,我还在 Claude 和 Gemini 上进行了类似实验,它们也更倾向于生成复杂的代码,并将其进行扩展,而不建议使用更简单的版本。

c23740024b2fd16680c5575a1b400deb.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值