Rust-AI todo list 开发体验

之前用AI协助开发了一个Vue模块,感觉意犹未尽,所以决定再让AI 来协助我做一个todo list。

todo list对我来说真是一个刚需,从我决定做一件事情,到这件事情做完,我的todo list不但不会减少,反而会增加。

回来说说应用AI这件事情。我之前使用AI的量和现在比,相对要少很多,其中一个原因是我之前对那些技术细节很"熟悉",使用AI帮忙写代码总是有隔靴搔痒的感觉。我对Vue的了解细节相对于React要少一些,因此,在应用AI上,感觉思想上的排斥要少很多。

这次,我打算在Rust上继续尝试使用AI,从1月29日开始,到2月7日,完成todo list的开发工作。

为什么是这段时间?因为这段时间是旅行时间,白天都在外拍照打卡,只有晚上才有时间来写代码,我要的就是要尽量压缩自己写代码的时间,更多让AI来下场写代码。

今天是2月7日,这个todo list应用的开发工作基本完成,此刻,我正在珠海金湾机场写这篇博客。

todo list的应用gitee 地址:https://gitee.com/hanshu_alan/todolist/tags

开始正文,来谈谈我的感受。首先,我发现我是比较适合这么干的。回想10多年前,我做tech lead时,我会将项目拆分成多个尽量简单的小任务,将这些小任务分配给组内的开发者。我记得我在做项目任务拆分时,不只是简单的拆分,还会考虑设计模式,并且还会经常先完成一些框架代码。因此,从接到项目到项目开始的这一小段时间里,我会非常忙碌。当任务分配出去之后,我又会感到轻松许多。

这段经历和我现在使用AI的体验特别像,最显著的区别是之前我是和人沟通,而现在我是同AI沟通。

在我让AI来帮忙写代码时,我也在体验另外一个大家的关注的问题,即AI能否代替程序员?对于这个问题的内省与体验,我目前的答案是"能"和"不能"。

说"能",我想不用我说,很早就有人用AI生成正则表达式的相关功能代码,从这个角度来说,AI 已经替代了程序员的工作了。我也晒晒我在开发todo list使用到的prompt

bash 复制代码
帮我创建一个Rust的yew组件,这个组件包含一个多行文本框和一个按钮。按钮上显示的文本是"添加",点击按钮时,会出发on_add_todo事件,on_add_todo事件传递的参数时文本框的当前值。在文本框上,当用户按下"ctrl+enter"组合健时,也要触法on_add_todo事件。
这个组件也包含一个属性,这个属性的值用于多行文本框的value值
bash 复制代码
使用Rust的sqlx框架,基于下面这个实体的定义,以owner_key为条件,返回所有满足该条件的实体,实现的代码中,要使用sqlx::query_as::<_, TodoItem>
#[derive(Debug, PartialEq)]
pub struct TodoItem {
    id: String,
    owner_key: String,
    title: String,
    description: Option<String>,
    finished: bool,
    created_at: DateTime<Utc>,
    updated_at: DateTime<Utc>,
}

这两个prompt比较有代表性,一个是前端的,一个是后端的。AI都能生成代码,或者从一个程序员的角度来说,AI都能把代码写出来。因此,说AI"能"代替程序员是有道理的,甚至可以激进一点说,AI已经能代替程序员了。

但是,这些代码并不能直接使用,就拿使用的yew框架来说。我现在使用的是yew 0.21版本。而AI生成的代码,应该是基于0.18的yew的版本。也就是说,AI帮我生成的前端代码几乎不能直接使用,还要我自己翻译一遍。另外,当我需要把代码组装时,这些地方还是需要我自己亲自下场。这倒不是说AI不能干,而是这里的业务逻辑比较复杂,它本身就是一个黑洞,需要开发者本身去探索,因此,自然也不知道该如何告诉AI了。因此, 从这个角度来说,AI是代替不了程序员的。嗯,不对,可能不能再用"程序员"这个称呼,我觉得"开发者"或者"创造者"更合适。

写到这里,我感觉到了一个更加宏伟的蓝图。

如果你稍微留意一下todo list v0.0.3的代码,你会发现它是比较臃肿的,因为,这个版本只是通过组装AI写出来的代码,完成了功能的开发。它的可维护性是比较低的,还需要继续迭代。而这个迭代的需求来源于我们对未来的探索。

最后,我说明一下文中提到的"AI",我使用的是"文心一言"和"ChatGPT-3"。

欢迎大家留言区交流。

2024.2.7 珠海.金湾机场


这篇文章收录我的Rust-实战专栏。请关注我,不要错过更新哟。

相关推荐
美团技术团队1 分钟前
《Agent 评测白皮书》系列01:Agent 评测全览
人工智能
小溪学编程4 分钟前
Java ListIterator 接口详解:双向遍历与列表修改的利器
java·开发语言·windows
影视飓风TIM4 分钟前
C++11 新特性:Lambda表达式、std::function与std::bind
开发语言·c++
烟雨江南7856 分钟前
呼叫中心如何用语音识别做客服质检?从人工抽检到全量通话分析的落地方案
人工智能·websocket·音视频·语音识别·ai客服
geneculture8 分钟前
融智学大字符串公式双重形式化信息本体论
人工智能·融智学应用场景·融智时代(杂志)·邹晓辉的融智实践·近现代数学·大字符串公式·双重形式化
sbjdhjd9 分钟前
在 8 字符、字母数字过滤与 PHP 版本差异下复盘临时文件命令执行链 | (8字符绕过)
android·java·开发语言·安全·web安全·数据挖掘·php
烟雨江南aabb9 分钟前
大模型数据标注第一弹-什么是数据标注
人工智能·数据标注
V哥AI增长14 分钟前
AI搜索引用机制解析:影响内容被选中的5个因素
人工智能
Hali_Botebie17 分钟前
PyTorch 内存布局,.view()要合并哪两个维度(比如 B 和 G),这两个维度在内存里就必须“紧挨着”。
人工智能·pytorch·python
2601_9505135923 分钟前
GEO 技术详解:AI 搜索引擎如何决定推荐谁,企业内容怎么适配
人工智能·搜索引擎