当前位置: 首页 > news >正文

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

帮我创建一个Rust的yew组件,这个组件包含一个多行文本框和一个按钮。按钮上显示的文本是“添加”,点击按钮时,会出发on_add_todo事件,on_add_todo事件传递的参数时文本框的当前值。在文本框上,当用户按下"ctrl+enter"组合健时,也要触法on_add_todo事件。
这个组件也包含一个属性,这个属性的值用于多行文本框的value值
使用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-实战专栏。请关注我,不要错过更新哟。

相关文章:

Rust-AI todo list 开发体验

之前用AI协助开发了一个Vue模块&#xff0c;感觉意犹未尽&#xff0c;所以决定再让AI 来协助我做一个todo list。 todo list对我来说真是一个刚需&#xff0c;从我决定做一件事情&#xff0c;到这件事情做完&#xff0c;我的todo list不但不会减少&#xff0c;反而会增加。 回…...

2024-02-07(Sqoop,Flume)

1.Sqoop的增量导入 实际工作中&#xff0c;数据的导入很多时候只需要导入增量的数据&#xff0c;并不需要将表中的数据每次都全部导入到hive或者hdfs中&#xff0c;因为这样会造成数据重复问题。 增量导入就是仅导入新添加到表中的行的技术。 sqoop支持两种模式的增量导入&a…...

LDAR管理系统解决方案

1、密封点数量不准确 工业企业LDAR项目多委托第三方进行检测&#xff0c;由于前几年由于检测费较高&#xff0c;为减少开支&#xff0c;很多企业只安排检测公司检测了部分密封点&#xff0c;造成密封点遗漏。也有少数企业为了从中谋私利&#xff0c;虚增密封点。 2、密封点台账…...

[vscode]ssh报错: Resolver error: Error: XHR failedscode错误

场景问题&#xff1a;通过vscode ssh连接远程服务器失败&#xff0c;报错&#xff1a;Resolver error: Error: XHR failedscode&#xff1a; 问题原因&#xff1a;~/.vscode-server/bin/一串数字下的vscode-server-linux-x64.tar.gz由于某种原因无法正常下载 解决方式&#x…...

【Maven】依赖、构建管理 继承与聚合 快速学习(3.6.3 )

文章目录 Maven是什么&#xff1f;一、Maven安装和配置本地配置文件设置idea配置本地maven 二、基于IDEA的Maven工程创建2.1 Maven工程GAVP属性2.2 Idea构建Maven JavaEE工程 三、Maven工程项目结构说明四、Maven核心功能依赖和构建管理4.1 依赖管理和配置4.2 依赖传递和冲突4.…...

Flume安装部署

安装部署 安装包连接&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1m0d5O3Q2eH14BpWsGGfbLw?pwd6666 &#xff08;1&#xff09;将apache-flume-1.10.1-bin.tar.gz上传到linux的/opt/software目录下 &#xff08;2&#xff09;解压apache-flume-1.10.1-bin.tar.gz…...

点云从入门到精通技术详解100篇-非结构化道路下无人平台路径规划与运动控制

目录 前言 路径规划方法研究现状 传统规划算法 智能规划算法 规划方法比较...

生成树技术华为ICT网络赛道

9.生成树 目录 9.生成树 9.1.生成树技术概述 9.2.STP的基本概念及工作原理 9.3.STP的基础配置 9.4.RSTP对STP的改进 9.5.生成树技术进阶 9.1.生成树技术概述 技术背景&#xff1a;二层交换机网络的冗余性与环路 典型问题1&#xff1a;广播风暴 典型问题2&#xff1a;MA…...

[HTTP协议]应用层的HTTP 协议介绍

目录 1.前言 2.使用fiddler抓包来观察HTTP协议格式 3.HTTP协议的基本格式 2.1请求 2,1.1首行 2.1.2请求头 2.1.3空行 2.2响应 2.2.1首行 2.2.2响应头 键值对 ​编辑2.2.3空行 2.2.4载荷(响应正文) 3.认识URL 3.1关于URL encode 1.前言 我们在前面的博客中,简单的…...

Linux 命令基础

Shell概述 Linux操作系统的Shell作为操作系统的外壳&#xff0c;为用户提供使用操作系统的接口。它是命令语言、命令解释程序及程序设计语言的统称。 Shell是用户和Linux内核之间的接口程序&#xff0c;如果把硬件想象成一个球体的中心&#xff0c;内核围绕在硬件的外层管理着…...

【开源】JAVA+Vue+SpringBoot实现实验室耗材管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 耗材档案模块2.2 耗材入库模块2.3 耗材出库模块2.4 耗材申请模块2.5 耗材审核模块 三、系统展示四、核心代码4.1 查询耗材品类4.2 查询资产出库清单4.3 资产出库4.4 查询入库单4.5 资产入库 五、免责说明 一、摘要 1.1…...

集成开发环境 IntelliJ IDEA的基本使用

集成开发环境 IntelliJ IDEA 是由 JetBrains 开发的一个强大的 Java IDE&#xff0c;它也被广泛用于其他编程语言的开发&#xff0c;如 Kotlin、Scala 和 Groovy 等。IntelliJ IDEA 以其智能的代码补全、代码分析、重构工具和强大的调试功能而闻名。以下是 IntelliJ IDEA 的基本…...

【Flink入门修炼】1-2 Mac 搭建 Flink 源码阅读环境

在后面学习 Flink 相关知识时&#xff0c;会深入源码探究其实现机制。因此&#xff0c;需要现在本地配置好源码阅读环境。 本文搭建环境&#xff1a; Mac M1&#xff08;Apple Silicon&#xff09;Java 8IDEAFlink 官方源码 一、 下载 Flink 源码 github 地址&#xff1a;h…...

Spring IoC容器详解

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 基本概念 Spring IoC容器是Spring框架的核心组件&#xff0c;它实现了控制反转&#xff08;Inversion of Control&#xff0c;IoC&#xff09;的设计原则。IoC是一种编程思…...

06 MP之自动填充+SQL执行的语句和速度分析

1. 自动填充 在项目中有一些属性&#xff0c;比如常见的创建时间和更新时间可以设置为自动填充。 1.1 实例 需求: 将创建时间和更新时间设置为自动填充, 这样每次插入数据时可以不用理会这两个字段 1.1.1 在数据库增加字段 默认开启驼峰映射 createTime --> create_time…...

3 scala集合-Set

与 Java 的 Set 一样&#xff0c;scala 的 set 中&#xff0c;元素都是唯一的&#xff0c;而且遍历 set 中集合的顺序&#xff0c;跟元素插入的顺序是不一样的。 同样&#xff0c;Set 也包含可变和不可变两种。要实现可变 Set 集合&#xff0c;需要使用类 scala.collection.mu…...

Android应用图标微技巧,8.0系统中应用图标的适配

大家好,2018年的第一篇文章到的稍微有点迟,也是因为在上一个Glide系列结束之后一直还没想到什么好的新题材。 现在已经进入了2018年,Android 8.0系统也逐渐开始普及起来了。三星今年推出的最新旗舰机Galaxy S9已经搭载了Android 8.0系统,紧接着小米、华为、OV等国产手机厂…...

java学习(多态)

一、多态 含义&#xff1a;方法或对象具有多种形态。是面向对象的第三大特征&#xff0c;多态是建立在封装和继承基础上的。 多态的具体体现&#xff1a; 1&#xff09;方法的多态 &#xff08;例如重写和重载&#xff09; 2&#xff09;对象的多态 多态注意事项&#xff1…...

[UI5 常用控件] 07.SplitApp,SplitContainer

文章目录 前言1. SplitApp1.1 组件结构1.2 Demo1.3 mode属性 2. SplitContainer 前言 本章节记录常用控件SplitApp&#xff0c;SplitContainer。主要功能是在左侧显示Master页面&#xff0c;右侧显示Detail页面。 Master页面和Detail页面可以由多个Page组成&#xff0c;并支持…...

MyBatisPlus之分页查询及Service接口运用

一、分页查询 1.1 基本分页查询 配置分页查询拦截器 package com.fox.mp.config;import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import org.springfra…...

RevokeMsgPatcher:构建数字时代的消息防护盾,让重要信息不再“蒸发“

RevokeMsgPatcher&#xff1a;构建数字时代的消息防护盾&#xff0c;让重要信息不再"蒸发" 【免费下载链接】RevokeMsgPatcher :trollface: A hex editor for WeChat/QQ/TIM - PC版微信/QQ/TIM防撤回补丁&#xff08;我已经看到了&#xff0c;撤回也没用了&#xff0…...

简单几步,让AI帮你画瑜伽女孩:雯雯的后宫-造相Z-Image-瑜伽女孩模型使用教程

简单几步&#xff0c;让AI帮你画瑜伽女孩&#xff1a;雯雯的后宫-造相Z-Image-瑜伽女孩模型使用教程 1. 模型介绍&#xff1a;你的专属AI瑜伽画师 想象一下&#xff0c;你只需要用文字描述&#xff0c;就能让AI为你创作出专业级的瑜伽女孩图片。这就是"雯雯的后宫-造相Z…...

OWL ADVENTURE应用场景解析:如何用AI助手提升工作效率

OWL ADVENTURE应用场景解析&#xff1a;如何用AI助手提升工作效率 1. 为什么选择OWL ADVENTURE作为AI助手 在当今快节奏的工作环境中&#xff0c;我们每天都要处理大量视觉信息——从产品图片到数据图表&#xff0c;从设计稿到文档扫描件。传统的工作流程往往需要人工逐一查看…...

破解微信小程序video组件的限制:3种禁止拖动进度条的实战方案对比

微信小程序视频播放控制深度解析&#xff1a;3种禁止拖动进度条的工程化方案 在知识付费和在线教育类小程序中&#xff0c;视频内容的完整播放率直接影响知识传递效果。但微信小程序原生video组件的enable-progress-gesture属性仅能禁用触摸手势&#xff0c;无法真正阻止进度条…...

iOS折叠动画终极指南:用Popping打造惊艳视觉效果

iOS折叠动画终极指南&#xff1a;用Popping打造惊艳视觉效果 【免费下载链接】popping A collection of animation examples for iOS apps. 项目地址: https://gitcode.com/gh_mirrors/po/popping 想要为你的iOS应用添加令人惊艳的折叠动画效果吗&#xff1f;Popping项目…...

电容器阻抗与ESR频率特性解析:从理论到高频应用实践

1. 电容器阻抗与ESR的基础原理 当你第一次听说电容器有"阻抗"和"ESR"时&#xff0c;可能会觉得这是两个高深莫测的专业术语。其实理解它们并不难&#xff0c;就像理解水管里的水流一样直观。想象一下&#xff0c;电容器就像是一个储水罐&#xff0c;而阻抗…...

多模态融合避坑手册:为什么你的跨模态模型总掉进‘语义鸿沟’?

多模态融合避坑手册&#xff1a;为什么你的跨模态模型总掉进‘语义鸿沟’&#xff1f; 当你兴奋地将精心设计的跨模态模型投入训练&#xff0c;却发现验证集指标像过山车一样剧烈波动时&#xff0c;问题往往出在那些容易被忽视的工程细节里。上周有位工程师向我展示了他的视频…...

别再死记硬背TTS原理了!用Python+TensorFlow复现一个简易Deep Voice,从音素到语音全流程拆解

用PythonTensorFlow实战Deep Voice&#xff1a;从音素到语音的完整实现指南 当你第一次听到计算机生成的语音时&#xff0c;是否好奇过这背后的魔法是如何实现的&#xff1f;现代文本转语音(TTS)系统已经能够产生几乎与真人无异的语音&#xff0c;而Deep Voice作为早期端到端TT…...

SDMatte多风格背景生成:抠图后智能匹配艺术化背景

SDMatte多风格背景生成&#xff1a;抠图后智能匹配艺术化背景 1. 效果亮点预览 SDMatte带来的不仅是简单的透明背景抠图。它开创性地将精准抠图与智能背景生成相结合&#xff0c;让每张图片都能拥有无限可能的艺术化呈现。想象一下&#xff0c;你的产品照片可以瞬间变成油画风…...

51单片机之按键控制RGB灯

51单片机之按键控制RGB灯描述&#xff1a;利用KEIL5编程&#xff0c;使AT89C52通过按键输入控制RGB灯显示不同颜色。硬件&#xff1a;电路仿真图&#xff08;未运行&#xff09;电路仿真图&#xff08;运行&#xff09;程序&#xff1a;主要是按键消抖&#xff0c;机械按键按下…...