Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深度解析,AI 写代码,为什么“聊天”是最烂的交互方式?

深度解析,AI 写代码,为什么“聊天”是最烂的交互方式?

原创
作者头像
老码小张
发布于 2025-02-10 10:58:39
发布于 2025-02-10 10:58:39
1520
举报
文章被收录于专栏:玩转全栈玩转全栈

“你能帮我写个用户权限管理系统吗?”

我对着屏幕输入这句话,AI 编程助手开始疯狂输出代码。我看着它“自信”地拼凑逻辑,函数名看起来很专业,代码风格整齐干净……但没过几秒,我就发现了不对劲。

  • • 权限逻辑完全错了,任何用户都能访问管理员功能。
  • • 数据库模型设计混乱,甚至把密码明文存储进去了。
  • • 代码看似“合理”,但一运行就报错,根本不能用。

我无奈地删掉 AI 生成的代码,重新自己写了一遍。

这个场景你一定不陌生。AI 编程工具的聊天交互,看起来像魔法,实则是灾难。

为什么?


“聊天”写代码,本质上是错的

图片
图片

我们写代码时,并不是随便“聊聊”就能让程序跑起来的。代码是一种严谨的表达方式,不能有歧义,不能靠“猜”。

但 AI 聊天工具的问题就在这里:

1. 代码需要精确,而聊天是模糊的

计算机需要明确的指令,不能有一点含糊。但聊天的本质就是模糊的,充满歧义的。

比如,你在 AI 聊天窗口里说:“帮我实现一个用户权限系统。”

  • • 你是想让 AI 生成基于 RBAC(基于角色的权限控制)的系统,还是 ABAC(基于属性的权限控制)?
  • • 你要的是数据库层面的权限管理,还是 API 层级的鉴权?
  • • 你的业务需求是 SaaS 级别的,还是单体应用的?

人类可以理解语境,但 AI 不能。 它只能猜测你的意思,结果就是——它随便给你拼凑出一些代码,看起来像回事,但一定有致命漏洞。

2. 代码是结构化的,聊天是线性的

代码和法律、合同一样,是一整套结构化的规则体系,而聊天只是一条条连续的对话记录

想象一下,你能通过微信聊天写一份公司章程吗?

不可能。因为:

  • • 代码需要模块化组织,而聊天窗口只能一条条输出
  • • 代码需要版本控制,而聊天没有结构化的历史管理
  • • 代码需要跨文件引用,而聊天让你只能依靠“记忆”找回上下文
3. AI 聊天窗口,毁掉了编程的基本原则

写代码,不是“聊出来”的,而是“设计出来”的。

程序员工作,不只是把代码写出来,而是要:

  • • 设计数据结构
  • • 规划软件架构
  • • 设定 API 规范
  • • 处理异常和边界情况
  • • 确保代码可维护、可扩展

但 AI 聊天工具完全忽略了这些。它只是基于训练数据拼凑代码,它不理解你的业务,也不会帮你思考整个系统的架构。

这就是为什么大多数 AI 代码工具,做 Demo 很惊艳,但真正用于生产环境就一团糟。


真正的 AI 编程工具,应该怎么做?

AI 生成代码,不应该是一个“聊天窗口”,而应该是一个结构化的开发工具,能让程序员真正掌控软件的复杂性。

1. 让 AI 生成“文档”,而不是“对话”

好的代码,不是靠聊天生成的,而是靠清晰的设计文档驱动的。 这也就是很多人拿着 cursor,winsurf 这样的工具,却依然写不好代码的本质原因,诶,今天看到这篇文章,那么恭喜你,你差不多知道该怎么破局了。

想象一下,如果 AI 不是用“聊天”的方式,而是帮你生成一份结构化的技术文档呢?

  • • 你可以清楚地看到 API 设计,参数定义,数据库表结构
  • • 你可以在不同模块之间建立逻辑关联
  • • 你可以迭代修改,而不会丢失上下文

这才是真正的 AI 助手,而不是一个随口编代码的“骗子”。

2. AI 代码助手,应该像 IDE,而不是像 ChatGPT

目前的 AI 编程工具,最大的问题是它们试图模仿 ChatGPT,让你通过聊天来写代码。但真正的编程工具,应该是像 IDE 一样,提供结构化的开发支持。

比如:

  • • AI 可以帮你自动补全代码,但不能“猜测”你要什么
  • • AI 可以分析你的代码,并提出优化建议,而不是一上来就给你一坨代码
  • • AI 应该帮你检查错误,而不是帮你制造更多错误
3. AI 代码工具,必须支持团队协作

现实中,软件开发从来不是一个人的事,而是一个团队协作的过程。

但 AI 聊天工具,只是一个人的“对话机器人”,它不懂团队协作。

真正的 AI 编程工具,应该让整个团队:

  • • 共同定义需求和架构
  • • 追踪代码变更
  • • 自动生成和更新技术文档
  • • 确保每一行代码都是可维护、可复现的

如果 AI 工具做不到这一点,它就永远只能是个“写代码的玩具”,而不是一个真正的生产力工具。


你以为 AI 编程是未来?其实你被骗了

过去几年,很多人被 AI 编程工具的宣传吸引,觉得“用 AI 聊天就能写代码”是未来。

但事实是——这条路根本行不通。

你不能靠“聊天”来写法律文书,不能靠“聊天”来设计飞机,也不能靠“聊天”来写出真正可用的软件。

AI 编程的未来,不是“聊天”,而是“结构化的开发”。

而第一个真正理解这个道理的公司,将主导下一个 AI 编程时代。

如果你也认同这个观点,欢迎分享这篇文章,让更多人看清 AI 编程的现状!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
PHP封装的PDO操作MySql数据库操作类!简单易用!
数据库操作类可以封装数据库连接和操作,使代码更易于维护和扩展。它们提供了一种组织代码的方法,将数据库相关的功能放在一个类中,以便于复用。
用户2203269
2023/10/26
8620
一个基于PDO的数据库操作类(新) + 一个PDO事务实例
  原先已经写过一个PDO的数据库操作类,这次只是在原先基础上进行修改。 <?php /* * 作者:胡睿 * 日期:2011/03/19 * * 20110319 * 常用数据库操作,
胡尐睿丶
2022/03/23
4820
一个基于PDO的数据库操作类
文章已更新,查看地址:http://www.cnblogs.com/hooray/archive/2011/06/30/2094743.html
胡尐睿丶
2022/03/23
4670
PHP DB 数据库连接类
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u011415782/article/details/77864102
泥豆芽儿 MT
2018/09/11
1.2K0
PHP中的MySQL使用--基于PDO
不支持查询操作,返回受影响的行数。数据表使用此文中的pic表:MySQL指南之SQL语句基础
张风捷特烈
2019/03/20
3.6K0
PHP中的MySQL使用--基于PDO
PHP PDO操作MYSQL封装类
<?php /** auther soulence 调用数据类文件 modify 2015/06/12 */ class DBConnect { private $dbname = null;
用户7108768
2021/09/23
3.5K0
Kohana 数据库
只要不使用官方网站的教程,自己摸索出来的,有一个错误,当我们指了出来,哦,,好吧共同进步~
全栈程序员站长
2022/07/06
4230
Medoo个人修改版
  Medoo是一款轻量级的php数据库操作类,下面不会介绍Medoo的使用方法,想学习Medoo请前往官网自学:http://medoo.in/   在接触Medoo之前,一直是用自己写的php数据库操作类,而发现Medoo立马就喜欢上了它,但是对它的调试方式不喜欢。   Medoo提供两种调试,分别是:   error() $database = new medoo("my_database"); $database->select("bccount", [ "user_name", "emai
胡尐睿丶
2018/01/11
1.8K0
采用单例模式编写PHP的PDO类
下面的代码是用此前一个名为MyPDO的类改写的,引入了单例模式来保证在全局调用中不会重复实例化这个类,降低系统资源的浪费。
魏杰
2022/12/23
4870
[PHP] PHP PDO与mysql的连接单例防止超时情况处理
这个数据库类主要处理了单例模式下创建数据库对象时,如果有两次较长时间的间隔去执行sql操作,再次处理会出现连接失败的问题,利用一个cache数组存放pdo对象与时间戳,把两次执行之间的时间进行了比较,如果间隔超过了10秒就再次new PDO创建连接,没有超过的情况下会继续使用原来的连接,并且因为每次使用后会使连接续期,cache数组里的时间戳也进行了续期. 每次执行操作都会从cache数组中获取下连接,多次执行不超过10秒的情况下,只会有一个连接
唯一Chat
2019/11/18
2K0
PHP7原生MySQL数据库操作实现代码
PHP5中mysql_connect()等函数大多被PHP7中类的成员函数所代替。PHP5中连接mysql是过程性的,而PHP7中强调了类的使用与面向对象的方法
用户8832582
2021/07/13
9430
PDO 用法学习「建议收藏」
基于驱动: 1、安装扩展 php_pdo.dll 2、安装驱动 php_pdo_mysql.dll
全栈程序员站长
2022/09/20
3.9K0
PHP 应用PDO技术操作数据库
创建测试数据: 首先我们需要创建一些测试记录,然后先来演示一下数据库的基本的链接命令的使用.
王 瑞
2022/12/28
3.5K0
PHP将数组存入数据库中的四种方式
最近突然遇到了一个问题,如何用PHP将数组存入到数据库中,经过自己的多方查找和研究,总结了以下四种方法: 1.implode()和explode()方式 2.print_r()和自定义函数方式 3.serialize()和unserialize()方式 4.json_encode()和json_decode()方式
用户7657330
2020/08/14
3.5K0
PHP将数组存入数据库中的四种方式
浅谈管理系统操作日志设计(附操作日志类)
  管理系统的操作日志如何做成通用的模块一直是个让我头疼的问题,不过看了博客园里的某篇文章后,现在基本解决了。
胡尐睿丶
2022/03/23
1.6K0
浅谈管理系统操作日志设计(附操作日志类)
在PHP中使用MySQL Mysqli操作数据库 ,以及类操作方法
先来操作函数部分,普遍的MySQL 函数方法,但随着PHP5的发展,有些函数使用的要求加重了,有些则将废弃不用,有些则参数必填...
书童小二
2018/09/03
4.3K0
针对thinkPHP5框架存储过程bug重写的存储过程扩展类完整实例
本文实例讲述了针对thinkPHP5框架存储过程bug重写的存储过程扩展类。分享给大家供大家参考,具体如下:
用户8832582
2021/07/13
4740
基于PHP的PDO编写的MySQL类2.0版源码分享
这次修改主要是增加了2个新function: 1. getTableEngine(),用于获取表引擎; 2. Replace(),以覆盖方式插入数据。
魏杰
2022/12/23
6300
相关推荐
PHP封装的PDO操作MySql数据库操作类!简单易用!
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档