会用ChatGPT≠工程师,谷歌资深员工发文,揭秘AI编程不为人知的真相

OpenCV学堂 2025-01-24 23:11



点击上方↑↑↑OpenCV学堂”关注我

来源:公众号 新智元 授权

【导读】苏格拉底曾提到的门诺悖论(Meno's paradox)认为,人只能学会自己已经知道的事情;而关于AI辅助编程,谷歌资深工程师最近的一篇博客告诉我们,类似的知识悖论同样存在。

尽管程序员们纷纷反馈用上AI辅助之后,工作效率提升,但我们用到的软件中bug依旧不少。

针对这一现象,前谷歌产品经理Peter Szalontay,以及现任的谷歌Chrome的工程团队领导Addy Osmani都给出了自己的分析,并提供了一些如何使用AI辅助编程的建议。

AI编码工具的黑暗真相

1月7日,前谷歌产品经理Peter Szalontay发推,并配上了一个令人惊心动魄的标题:「无人谈论的AI编码工具的黑暗真相」。

「在华丽的demo和病毒式推文的背后,隐藏着半途而废的项目和破碎的承诺。」

Peter Szalontay表示,作为Lazy AI的首席执行官,他在18个月的时间的时间中目睹了超过10万名开发人员的苦苦挣扎,因此要为所有构建AI项目的开发者提供几条建议。

Peter Szalontay本科毕业于加州大学洛杉矶分校,修读了数学/经济学和软件工程专业,2016年-2019年期间曾担任谷歌产品经理,领导着一支由1000多名员工组成的团队,并推出了响应式搜索广告(Responsive Search Ad)。

2023年3月,Szalontay成立初创公司Lazy AI并担任CEO,旨在帮助用户通过无代码或低代码的方式构建全栈Web应用程序。

1/ 智能体编码≠万金油

「50%的AI编写的代码都毫无价值」。如果你试过Bolt、v0、Replit等工具来构建登录页面以外的东西,一定对这句话深有感触。

因为每次代码更改时,都有可能因prompt引入一些bug或不需要的行为。如果LLM每次对代码进行5项更改,那么代码完成时,可能会出现许多个你自己都不知道怎么会触发的bug。

Lazy AI采取的方式是按照工程师的方式进行构建:发送prompt、测试更改,然后发送另一个prompt。这是获得有效成果的唯一途径。

2/ 「通用编码器」是一个谎言

如果一家公司站出来说他们已经开发了一款产品,可以让你只用prompt在任何框架中构建任何应用程序......冷静点,这种说法很可疑。

Lazy AI首次尝试同时支持Python和JavaScript编码时,让AI在JS文件中编写Python,结果它混淆了依赖关系,甚至弄混了两种语言的注释语法。

最终确实有方法让AI在两种语言中都能可靠地工作——但只有为编程语言构建特定的修复程序,并验证模型的每个响应之后才能做到。

3/ 不要把授权交给LLM

你可以在任何AI编码工具中尝试这个简单的提示:「构建一个谷歌登录页面,并跳转到显示我的详细信息的个人资料页面。」

之后你就会看到层出不穷、千奇百怪的错误和bug:被破坏的OAuth流程,重定向URI错误,以及在Google Cloud Console中无休止地打转以获取API密钥。

4/ LLM无法访问数据库

几乎每个想法的实现都需要一个数据库,但构建项目时,又总是需要更改数据库。如果AI编码工具按提示收费,那么准备好迎接下面这些不断重复的场景:

你更改了数据库,AI Agent混乱了......

你修改了了代码,数据库混乱了......

你需要迁移,结果AI编写了有缺陷的迁移代码......

5/ 现在付款,但永远没法成功

下面这些AI常见的智障错误,不知道你是否眼熟:

- 要求AI构建新功能时,AI却删除了一部分之前的内容

- AI复制了你的部分代码 

- 你明确指示执行X操作,AI却正在执行Y 

- AI因为无法修复自己创建的bug而卡住

当你现在为AI编码工具付费时,期待模型在未来「变得更好」是不够的,一个放错位置的括号可能会破坏整个页面。在一个没有从头开始准备的平台上构建现实世界中的应用程序,就是在浪费钱。

以上这些推文的内容或许过于简明扼要,而且倾向性过强。如果要想更全面、更深入地探究AI辅助编码的利弊,以及最佳的使用方法,谷歌Chrome工程团队领导Addy Osmani的这篇博客则更加有用。

原文链接:https://addyo.substack.com/p/the-70-problem-hard-truths-about

AI辅助编程——菜鸟和老手的差距

对AI辅助编程工具的使用,存在两种模式,第一种可以称为「自举模式」(bootstrapper),也就是使用诸如Bolt之类的工具,根据截图产生代码,使得程序员能够在AI协助下完成初始代码库,从而在数小时或数天而非数周的时间,生成最小可用原型。

相比于从零开始,程序员更熟悉的方式是如下描述的「迭代模式」,即使用Cursor、Copilot等工具进行日常开发工作流程。

例如,使用人工智能进行代码补全、进行复杂重构任务、生成测试和文档,或是将AI智能体当作「小助手」,咨询编程中遇到的问题,并寻求代码改进建议。

在迭代模式下,新手和老油条看似都能在几分钟之内使用AI工具完成代码搭建,但细看下来,资深程序员对AI的使用更加智慧。

他们不仅仅是接受AI的建议,而是试图让AI重构代码,生成更小、更专业化的模块。资深程序员还会增加AI遗漏的意外情况的处理模块,同时对AI给出的建议保持质疑。

相反,新手则会盲从AI的建议,这样生成的代码会如同海边的沙堡,看似坚固,但一遇到现实中的意外案例,就会崩溃。

这是由于,「菜鸟」会接受AI给出的错误或过时的代码,忽略关键的安全性和性能考虑,也没有对AI生成的代码进行调试,从而构建出一个他们不完全理解的脆弱系统。

以上的差异可以说明,AI工具对经验丰富的开发者帮助大于初学者。这似乎有些反直觉——AI不应该使编程变得更加人人可及吗?

知识悖论——只有知道怎么用才能用好

事实上,当前的AI,就像是在团队中有一个工作积极性爆棚的初级开发者。他们可以快速编写代码,但需要不断的监督和纠正。你知道的越多,就能更好地引导他们。

不止是在程序员群体之中,非工程师使用AI进行编码时,也会遇到类似的问题,即发现自己遇到了令人沮丧的瓶颈。AI工具能出人意料地迅速完成70%的任务,但在最后、最难完成、最令人沮丧的30%上,却只会收益递减。

可以举一个小例子来理解这个现象。比如,你试图让AI修复程序中的一个小bug,智能体给出一个看似合理的建议,但这个补丁破坏了其他部分。

接着,用户会继续要求AI修复新出现的问题,这又产生了更多的bug,从而使得局面变得更糟。这意味着最后的30%——使软件准备进入生产、可维护和健壮的部分——仍然需要真正的工程知识。

人工智能并没有使我们的软件显著改进,因为软件质量可能从未主要受限于编码速度。软件开发中的难点——理解需求、设计可维护的系统、处理意外情况、确保安全和性能——仍然需要人类的判断。

AI所做的,是让我们能够更快地进行迭代和实验,通过更快的探索,可能带来更好的解决方案。但前提是程序员必须保持工程规范,将AI作为工具,而不是替代良好软件实践的替代品。

记住:目标不是更快地编写更多代码。而是构建更好的软件。如果使用得当,人工智能可以帮助我们做到这一点。但最终,我们仍需知道「更好」的含义以及如何实现它。

当下对AI辅助编程滥用的背后,还有一个更深层次的问题:AI工具让编码变得人人可行的实质,是代替你处理了程序的复杂性。从另一个角度来看,这实际上可能会阻碍新手的学习与成长。

AI只是把代码放在你面前,并不能让你理解其背后的原理时。由于新手缺少调试经验,而这会反过来导致了一种对AI工具的依赖。他们需要不断回到AI那里去修复问题,而不是培养自己处理这些问题的专业知识。

如何使用AI编程——几条建议

有鉴于AI辅助编程中的「知识悖论」,当前的人工智能工具最好被用于快速验证想法,并用来生成最小可用的原型,或者作为有助于编程学习的辅助工具。

对于如何用好这些工具,作者给出了如下建议:

1. 从原型做起,使用AI进行快速原型设计

2. 使用人工智能处理孤立、定义明确的任务,逐步构建更大的功能

3. 花时间理解生成的代码是如何工作的,并审核每一行代码

4. 保持「模块化」,将代码分拆为功能单一的模块和小文件,保持组件之间的清晰接口,记录模块的边界

5. 在应用AI辅助编程的同时,学习基本编程概念,逐步建立知识基础

6. 将人工智能作为学习工具,加速学习,而不仅仅是代码生成器

7. 最重要的是,相信自己的判断力,利用人工智能加速,而非取代判断力


但以上这些都需要耐心和努力——这与许多人最初希望通过AI工具实现的目标正好相反。

具体来说,在编程时,有益的AI工具使用可分为三种模式:

一是「AI初稿」模式:即让AI生成一个基础版代码库,之后程序员手动审查和重构以提高模块化程度,并增加全面错误处理、撰写详尽的测试,同时记录关键决策。

第二种是是恒定对话模式,即为每个不同的任务启动新的AI聊天,在对话时保持语境集中且简洁,程序员经常审查代码并提交更改,在此过程中保持紧密的反馈回路。

第三种被称为「信任但核实」模式,程序员使用AI进行初始代码生成,对所有关键路径进行手动审查,同时对可能的异常案例进行自动化测试,并定期进行安全审核。

展望未来——AI对程序员意味着什么

尽管存在由于知识悖论带来的挑战,对人工智能在软件开发中的作用,我们应持乐观态度。这其中的关键在于,理解AI真正擅长的是什么:

人工智能擅长帮助实施我们已理解的模式。它就像有一个无限耐心的、打字速度极快的程序员搭子,非常适合快速原型设计和探索不同的方法;也像一个沙盒,可以用于快速测试概念。

此外,AI还显著缩短了处理模板和常规编码任务所需的时间,并能自动处理日常事务,使程序员能够专注于有趣的问题。

人工智能辅助开发的格局在2025年将发生巨大变化。尽管当前的工具已经改变了原型设计和迭代方式,但我们正站在一个更加重大变革的边缘:即AI智能体软件工程的兴起。

未来的辅助编程系统,不仅仅是响应提示,它们还能规划、执行并不断迭代解决方案。

当前工具大多等待程序员的指令,但看看像Anthropic在Claude中实现的计算机使用,或Cline自动启动浏览器和运行测试的新功能。这些不仅仅是美化版的自动补全——它们实际上是在理解任务并主动解决问题。

而自主编程AI不仅仅是提出修复方案,它还可以主动识别潜在问题,启动并运行测试套件,检查UI元素并捕获屏幕截图,提出并实施修复方案以及验证解决方案是否有效。

下一代辅助工具可能不仅限于与代码协同工作——它们可能实现无缝集成:视觉理解(UI截图、原型、图表)与语言交互(浏览器、终端、API)。

这种多模态能力意味着,AI工具可以像人类一样理解和处理软件——全面地,而不仅仅是代码层面。

从使用这些工具的工作中,我们应意识到:未来并非关于 AI 取代开发者——而是 AI 成为一个越来越有能力的合作伙伴,它可以在尊重人类指导和专业知识的同时采取主动。

这种对开发工具交互方式的根本转变,意味着在自然语言中清晰思考和精确沟通的能力正变得与传统编码技能一样重要。

具体来说,2025 年最有效的团队需要学会如下四点:

1. 明确为他们的 AI 智能体设定边界和指南

2. 建立强大的架构模式,使智能体能够在其中工作

3. 构建人类与AI能力之间的有效反馈循环

4. 保持人工监督的同时利用AI的自主性

这些都要求程序员提升技能,具备更强的系统设计和架构思维,更优的需求规范和沟通,更多关注质量保证和验证,并提升人机协作能力。

参考资料:
https://addyo.substack.com/p/the-70-problem-hard-truths-about
https://x.com/Szypetike/status/1876647482295259411

OpenCV4系统化学习


推荐阅读

OpenCV4.8+YOLOv8对象检测C++推理演示

ZXING+OpenCV打造开源条码检测应用

攻略 | 学习深度学习只需要三个月的好方法

三行代码实现 TensorRT8.6 C++ 深度学习模型部署

实战 | YOLOv8+OpenCV 实现DM码定位检测与解析

对象检测边界框损失 – 从IOU到ProbIOU

初学者必看 | 学习深度学习的五个误区


OpenCV学堂 专注计算机视觉开发技术分享,技术框架使用,包括OpenCV,Tensorflow,Pytorch教程与案例,相关算法详解,最新CV方向论文,硬核代码干货与代码案例详解!作者在CV工程化方面深度耕耘15年,感谢您的关注!
评论
  • 临近春节,各方社交及应酬也变得多起来了,甚至一月份就排满了各式约见。有的是关系好的专业朋友的周末“恳谈会”,基本是关于2025年经济预判的话题,以及如何稳定工作等话题;但更多的预约是来自几个客户老板及副总裁们的见面,他们为今年的经济预判与企业发展焦虑而来。在聊天过程中,我发现今年的聊天有个很有意思的“点”,挺多人尤其关心我到底是怎么成长成现在的多领域风格的,还能掌握一些经济趋势的分析能力,到底学过哪些专业、在企业管过哪些具体事情?单单就这个一个月内,我就重复了数次“为什么”,再辅以我上次写的:《
    牛言喵语 2025-01-22 17:10 273浏览
  • 2024年是很平淡的一年,能保住饭碗就是万幸了,公司业绩不好,跳槽又不敢跳,还有一个原因就是老板对我们这些员工还是很好的,碍于人情也不能在公司困难时去雪上加霜。在工作其间遇到的大问题没有,小问题还是有不少,这里就举一两个来说一下。第一个就是,先看下下面的这个封装,你能猜出它的引脚间距是多少吗?这种排线座比较常规的是0.6mm间距(即排线是0.3mm间距)的,而这个规格也是我们用得最多的,所以我们按惯性思维来看的话,就会认为这个座子就是0.6mm间距的,这样往往就不会去细看规格书了,所以这次的运气
    wuliangu 2025-01-21 00:15 470浏览
  • 嘿,咱来聊聊RISC-V MCU技术哈。 这RISC-V MCU技术呢,简单来说就是基于一个叫RISC-V的指令集架构做出的微控制器技术。RISC-V这个啊,2010年的时候,是加州大学伯克利分校的研究团队弄出来的,目的就是想搞个新的、开放的指令集架构,能跟上现代计算的需要。到了2015年,专门成立了个RISC-V基金会,让这个架构更标准,也更好地推广开了。这几年啊,这个RISC-V的生态系统发展得可快了,好多公司和机构都加入了RISC-V International,还推出了不少RISC-V
    丙丁先生 2025-01-21 12:10 1012浏览
  • 随着AI大模型训练和推理对计算能力的需求呈指数级增长,AI数据中心的网络带宽需求大幅提升,推动了高速光模块的发展。光模块作为数据中心和高性能计算系统中的关键器件,主要用于提供高速和大容量的数据传输服务。 光模块提升带宽的方法有两种:1)提高每个通道的比特速率,如直接提升波特率,或者保持波特率不变,使用复杂的调制解调方式(如PAM4);2)增加通道数,如提升并行光纤数量,或采用波分复用(CWDM、LWDM)。按照传输模式,光模块可分为并行和波分两种类型,其中并行方案主要应用在中短距传输场景中成本
    hycsystembella 2025-01-25 17:24 64浏览
  •     IPC-2581是基于ODB++标准、结合PCB行业特点而指定的PCB加工文件规范。    IPC-2581旨在替代CAM350格式,成为PCB加工行业的新的工业规范。    有一些免费软件,可以查看(不可修改)IPC-2581数据文件。这些软件典型用途是工艺校核。    1. Vu2581        出品:Downstream     
    电子知识打边炉 2025-01-22 11:12 204浏览
  • 故障现象 一辆2007款日产天籁车,搭载VQ23发动机(气缸编号如图1所示,点火顺序为1-2-3-4-5-6),累计行驶里程约为21万km。车主反映,该车起步加速时偶尔抖动,且行驶中加速无力。 图1 VQ23发动机的气缸编号 故障诊断接车后试车,发动机怠速运转平稳,但只要换挡起步,稍微踩下一点加速踏板,就能感觉到车身明显抖动。用故障检测仪检测,发动机控制模块(ECM)无故障代码存储,且无失火数据流。用虹科Pico汽车示波器测量气缸1点火信号(COP点火信号)和曲轴位置传感器信
    虹科Pico汽车示波器 2025-01-23 10:46 136浏览
  • 项目展示①正面、反面②左侧、右侧项目源码:https://mbb.eet-china.com/download/316656.html前言为什么想到要做这个小玩意呢,作为一个死宅,懒得看手机,但又想要抬头就能看见时间和天气信息,于是就做个这么个小东西,放在示波器上面正好(示波器外壳有个小槽,刚好可以卡住)功能主要有,获取国家气象局的天气信息,还有实时的温湿度,主控采用ESP32,所以后续还可以开放更多奇奇怪怪的功能,比如油价信息、股票信息之类的,反正能联网可操作性就大多了原理图、PCB、面板设计
    小恶魔owo 2025-01-25 22:09 129浏览
  •  万万没想到!科幻电影中的人形机器人,正在一步步走进我们人类的日常生活中来了。1月17日,乐聚将第100台全尺寸人形机器人交付北汽越野车,再次吹响了人形机器人疯狂进厂打工的号角。无独有尔,银河通用机器人作为一家成立不到两年时间的创业公司,在短短一年多时间内推出革命性的第一代产品Galbot G1,这是一款轮式、双臂、身体可折叠的人形机器人,得到了美团战投、经纬创投、IDG资本等众多投资方的认可。作为一家成立仅仅只有两年多时间的企业,智元机器人也把机器人从梦想带进了现实。2024年8月1
    刘旷 2025-01-21 11:15 809浏览
  • 高速先生成员--黄刚这不马上就要过年了嘛,高速先生就不打算给大家上难度了,整一篇简单但很实用的文章给大伙瞧瞧好了。相信这个标题一出来,尤其对于PCB设计工程师来说,心就立马凉了半截。他们辛辛苦苦进行PCB的过孔设计,高速先生居然说设计多大的过孔他们不关心!另外估计这时候就跳出很多“挑刺”的粉丝了哈,因为翻看很多以往的文章,高速先生都表达了过孔孔径对高速性能的影响是很大的哦!咋滴,今天居然说孔径不关心了?别,别急哈,听高速先生在这篇文章中娓娓道来。首先还是要对各位设计工程师的设计表示肯定,毕竟像我
    一博科技 2025-01-21 16:17 192浏览
  • 书接上回:【2022年终总结】阳光总在风雨后,启航2023-面包板社区  https://mbb.eet-china.com/blog/468701-438244.html 总结2019,松山湖有个欧洲小镇-面包板社区  https://mbb.eet-china.com/blog/468701-413397.html        2025年该是总结下2024年的喜怒哀乐,有个好的开始,才能更好的面对2025年即将
    liweicheng 2025-01-24 23:18 106浏览
  • 前篇文章中『服务器散热效能不佳有解吗?』提到气冷式的服务器其散热效能对于系统稳定度是非常重要的关键因素,同时也说明了百佳泰对于散热效能能提供的协助与服务。本篇将为您延伸说明我们如何进行评估,同时也会举例在测试过程中发现的问题及改善后的数据。AI服务器的散热架构三大重点:GPU导风罩:尝试不同的GPU导风罩架构,用以集中服务器进风量,加强对GPU的降温效果。GPU托盘:改动GPU托盘架构,验证出风面积大小对GPU散热的影想程度。CPU导风罩:尝试封闭CPU导风罩间隙,集中风流,验证CPU降温效果。
    百佳泰测试实验室 2025-01-24 16:58 57浏览
  • 不让汽车专美于前,近年来哈雷(Harley-Davidson)和本田(Honda)等大型重型机车大厂的旗下车款皆已陆续配备车载娱乐系统与语音助理,在路上也有越来越多的普通机车车主开始使用安全帽麦克风,在骑车时透过蓝牙连线执行语音搜寻地点导航、音乐播放控制或免持拨打接听电话等各种「机车语音助理」功能。客户背景与面临的挑战以本次分享的客户个案为例,该客户是一个跨国车用语音软件供货商,过往是与车厂合作开发前装车机为主,且有着多年的「汽车语音助理」产品经验。由于客户这次是首度跨足「机车语音助理」产品,因
    百佳泰测试实验室 2025-01-24 17:00 59浏览
  • 飞凌嵌入式基于瑞芯微RK3562系列处理器打造的FET3562J-C全国产核心板,是一款专为工业自动化及消费类电子设备设计的产品,凭借其强大的功能和灵活性,自上市以来得到了各行业客户的广泛关注。本文将详细介绍如何启动并测试RK3562J处理器的MCU,通过实际操作步骤,帮助各位工程师朋友更好地了解这款芯片。1、RK3562J处理器概述RK3562J处理器采用了4*Cortex-A53@1.8GHz+Cortex-M0@200MHz架构。其中,4个Cortex-A53核心作为主要核心,负责处理复杂
    飞凌嵌入式 2025-01-24 11:21 157浏览
我要评论
0
点击右上角,分享到朋友圈 我知道啦
请使用浏览器分享功能 我知道啦