利用Chat GPT建立一个To-Do应用程序--我们终于遇到了我们的替代者吗?

news2024/11/26 14:45:27

海外Udemy、Coursera、Skillshare、Cantrill等平台精品编码课程,请访问 https://www.postcode.vip

我们看到GitHub Copilot在2021年10月发布,整个开发社区都疯了。

有些人声称我们很快就会失去工作,而其他人,像我一样,认为虽然这个工具很有趣,但它离替代品还很远。它可以提供更好的自动完成功能,是的,但它无法为您创建整个应用程序。

所以我们很安全。

至少我们是这么想的

几周前,我们看到了聊天GPT的发布,整个开发社区再次疯狂起来。但他们这次是对的吗?

我尝试了AI,并要求它构建相当于“Hello world”的Web开发:一个待办应用

让我们看看它是怎么做的。

以下是我对聊天机器人的提示和我得到的答案:

can you give me the code to create a to-do app that allows me to edit the items and store them in a database? Please use React for the front-end and next js for the back-end

这是我的第一个提示,关键的问题是粗粒度的:

一个待办事项应用
编辑项目的能力
在数据库中存储数据
使用React和Next

现在,我得到的是:

import React, { useState } from 'react'
import { useRouter } from 'next/router'

function ToDoApp() {
  const [items, setItems] = useState([]) // useState to store the to-do items
  const router = useRouter()

  // handle form submission
  const handleSubmit = (event) => {
    event.preventDefault()
    const form = event.target
    const input = form.querySelector('input')

    // add the new to-do item to the array of items
    setItems([...items, input.value])
    input.value = ''
  }

  // handle item removal
  const handleRemove = (index) => {
    // create a new array without the item at the specified index
    const newItems = items.filter((item, i) => i !== index)
    setItems(newItems)
  }

  return (
    <div>
      <h1>To-Do App</h1>
      <form onSubmit={handleSubmit}>
        <input type="text" placeholder="Add a new item" />
        <button type="submit">Add</button>
      </form>
      <ul>
        {items.map((item, index) => (
          <li key={index}>
            {item}
            <button type="button" onClick={() => handleRemove(index)}>
              Remove
            </button>
          </li>
        ))}
      </ul>
    </div>
  )
}

export default ToDoApp

好吧,这不是我想要的。

是的,我有一个to-do应用程序,使用React和Next,但是,它没有使用数据库,事实上,它使用内存存储。它不让我编辑条目。所以我们再问一遍。

can you modify that code to add support for a cloud database?

好了,现在我只是引用了“那个代码”,并添加了“云数据库”支持。我特别试图模糊,因为人类很容易理解这一点,但人工智能需要保持对当前对话的引用,并记住我们在谈论什么。

你瞧,我要的是:

import React, { useState } from 'react'
import { useRouter } from 'next/router'
import firebase from 'firebase/app'
import 'firebase/database'

function ToDoApp() {
  const [items, setItems] = useState([]) // useState to store the to-do items
  const router = useRouter()

  // initialize Firebase
  if (!firebase.apps.length) {
    firebase.initializeApp({
      apiKey: '<YOUR_API_KEY>',
      databaseURL: '<YOUR_DATABASE_URL>'
    })
  }

  // get a reference to the Firebase database
  const database = firebase.database()
  const itemsRef = database.ref('items')

  // handle form submission
  const handleSubmit = (event) => {
    event.preventDefault()
    const form = event.target
    const input = form.querySelector('input')

    // add the new to-do item to the Firebase database
    itemsRef.push({
      text: input.value
    })
    input.value = ''
  }

  // handle item removal
  const handleRemove = (itemId) => {
    // remove the item from the Firebase database
    itemsRef.child(itemId).remove()
  }

  // useEffect to fetch the to-do items from the Firebase database
  useEffect(() => {
    itemsRef.on('value', (snapshot) => {
      const items = snapshot.val()
      const newItems = []
      for (let item in items) {
        newItems.push({
          id: item,
          text: items[item].text
        })
      }
      setItems(newItems)
    })
  }, [])

  return (
    <div>
      <h1>To-Do App</h1>
      <form onSubmit={handleSubmit}>
        <input type="text" placeholder="Add a new item" />
        <button type="submit">Add</button>
      </form>
      <ul>
        {items.map((item) => (
          <li key={item.id}>
            {item.text}
            <button type="button" onClick={() => handleRemove(item.id)}>
              Remove
            </button>
          </li>
        ))}
      </ul>
    </div>
  )
}

export default ToDoApp

它为我选择了Firebase,它甚至为我编写了占位符来输入我的凭据。

是吗?
这个代码是否有效?

到目前为止,我对结果印象深刻,我真的没有预料到这种细节水平。

但在测试代码时,我发现了几个问题,这些问题明显突出了这个机器人的缺点。

问题#1:缺少导入。愚蠢的错误,我知道,我们人类使他们所有的时间,但代码是失踪的进口 使用效果 钩子

问题2:它从未指定要使用的firebase npm包的版本。也许这是我的错,但是一个简单的npm安装firebase产生了一个与代码不兼容的版本。于是我问bot:我应该使用哪个版本的firebase npm包来实现这个例子?

我得到了一个有趣的答案:
在这里插入图片描述

我的意思是,机器人的荣誉,它能够理解我的问题的背景,并提供了一个有效的(几乎)答案。代码确实与那个版本的firebase兼容,所以我可以尝试一下。

但是Firebase的当前版本是9,而不是7,这是一个问题。

有了这些问题的解决,我就能够测试应用程序并让它工作了。
在这里插入图片描述
哦,是的,我仍然缺少编辑按钮。这是我要求的,因为没有多少教程涉及应用程序的这一部分。通常我们都会坚持添加和删除项目的按钮。

那到底算是能替代我们吗?
这算是一点chatGPT初期的缺点
不要误会我的意思,我仍然认为chatGPT是强大且可怕的。
再加上Dalle-2和MidJourney,这是我试过的最有趣、最先进的人工智能软件。
但短时间内它们不会取代开发人员。
为什么?因为我上面提到的两个问题。如果你还没有意识到这一点,机器人只是从用来训练它的文章中吐出内容。
因此,它不是通过自我意识来创建的代码,这应该是毋庸置疑的,它只是向我展示其他人写过的历史内容。不仅如此,它还向我显示了带有错误的过时内容。
这是因为它无法验证它是否真的给了我所要求的内容。相反,它似乎在猜测(以巨大的成功率)我所寻找的答案,并给我一些看起来像它的东西。
换句话说,在其当前状态下,只有当用于训练它的内容经过验证并由其他人保持实时更新时,chatGPT才有飞跃的质变。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/423922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

首家完成并购并进行重新备案公示的企业征信牌照公司-湖南省征信

2023年4月13日&#xff0c;中国人民银行长沙中心支行发布《关于对湖南省征信有限公司企业征信机构变更备案的公示》。内容显示中国人民银行长沙中心支行根据《征信业管理条例》《征信机构管理办法》《企业征信机构备案管理办法》及有关规定&#xff0c;决定受理湖南省征信有限公…

小程序学习四--组件--样式、数据、方法、属性、数据监听、生命周期、插槽、behavior

一、自定义组件 1.创建组件 2.组件引用--局部引用 3.组件引用--全局引用 4.组件和页面的区别 5.修改组件胡样式隔离选项 stypelsolation的可选值 二、自定义组件数据、方法、属性和数据监听 1.data数据 2.methods方法 事件处理函数、自定义方法_ 3.properties属性 页面中调…

JVM 内存结构

文章目录1、程序计数器2、虚拟机栈2.1 、定义2.2、栈内存溢出2.3 、线程运行诊断3、本地方法栈4、堆4.1、定义4.2 、堆内存溢出4.3 、堆内存诊断5、方法区&#xff08;Method Area&#xff09;5.1 、定义5.2、方法区组成5.3 、方法区内存溢出5.4 、运行时常量池5.5 、StringTab…

【JavaEE】TCP网络原理

目录 1.TCP协议定义 2.TCP原理 2.1确认应答机制 2.2超时重传机制 2.3连接管理 2.3.1建立连接&#xff08;三次握手&#xff09; 2.3.2断开连接&#xff08;四次挥手&#xff09; 2.4滑动窗口 2.5流量控制 2.6拥塞控制 2.7延迟应答 2.8捎带应答 2.9面向字节流&…

【STC8A8K64D4开发板】——按键检测

第2-3讲&#xff1a;按键检测 学习目的学习轻触按键和触摸按键硬件电路原理。学习STC8A8K64D4用作输入时相关寄存器的配置。掌握如何读取GPIO状态。掌握编写轻触按键和触摸按键检测程序。 硬件电路设计 IK-64D4开发板上设计了4个轻触按键和一个触摸按键&#xff0c;提供给用户作…

企业级信息系统开发讲课笔记2.3 利用MyBatis实现关联查询

文章目录零、本节学习目标一、查询需求&#xff08;一&#xff09;针对三张表关联查询&#xff08;二&#xff09;按班级编号查询班级信息&#xff08;三&#xff09;查询全部班级信息二、创建数据库表&#xff08;一&#xff09;创建教师表&#xff08;二&#xff09;创建班级…

BUUCTF-WEB-INF/web.xml泄露-SSTI注入

第八周 目录 WEB [RoarCTF 2019]Easy Java WEB-INF/web.xml泄露 WEB-INF/web.xml泄露原因 WEB-INF/web.xml泄露利用方法 解决方法 [BJDCTF2020]The mystery of ip 什么是板块注入 SSTI 为什么会产生 什么是render_template render_template&#xff1a; 我们为什么…

背包问题-动态规划

背包问题 容量有限的背包&#xff0c;给很多商品&#xff0c;商品有相应的体积与价值 01背包问题 一个背包 每个物品只有一个 最终状态方程 dp[i][j]max(dp[i-1][j],dp[i-1][j-w[i]]v[i]) 推导过程 由上一层推导过来 选择拿不拿i 最终代码 #include<iostream> #…

第12届蓝桥杯省赛真题剖析-2020年12月20日Scratch编程中级组

[导读]&#xff1a;超平老师的《Scratch蓝桥杯真题解析100讲》已经全部完成&#xff0c;后续会不定期解读蓝桥杯真题&#xff0c;这是Scratch蓝桥杯真题解析第124讲。 第12届蓝桥杯省赛举办了两次&#xff0c;这是2020年10月20日举行的第一次省赛中级组试题&#xff0c;比赛仍…

【Java实战篇】Day6.在线教育网课平台

文章目录一、需求&#xff1a;绑定媒资1、需求分析2、库表设计与模型类3、接口定义4、Mapper层开发5、Service层开发6、完善controller层二、需求&#xff1a;课程预览1、需求分析2、实现技术3、模板引擎4、Freemarker入门5、部署网站门户6、接口定义7、接口开发8、编写模板9、…

放弃 console.log 吧!用 Debugger 你能读懂各种源码

很多同学不知道为什么要用 debugger 来调试&#xff0c;console.log 不行么&#xff1f; 还有&#xff0c;会用 debugger 了&#xff0c;还是有很多代码看不懂&#xff0c;如何调试复杂源码呢&#xff1f; 这篇文章就来讲一下为什么要用这些调试工具&#xff1a; console.lo…

PostgreSQL技术内幕(七)索引扫描

索引概述 数据库索引&#xff0c;是将一个表的某些字段的数据进行重新组织的数据库对象。通过使用索引&#xff0c;可以大大加速数据库的一些操作&#xff0c;其背后的思想也很简单朴素&#xff1a;空间换时间。 数据库中的索引&#xff0c;可以类比为一本书的目录&#xff0…

linux java中使用POI将word转为PDF时无法显示文字

背景: 在windos上本地调试时使用POI将word转为PDF时, PDF无法显示文字的原因以及解决方案: 我的是在linux7.9上&#xff0c;原因是生成world时候汉字正常&#xff0c;转pdf时没有汉字&#xff0c;多次调查后发现没有 宋体: 原因1:字体不存在问题, word中使用的字体在系统(wind…

udp 版本的 echo server 和 echo client

文章目录前言UDP数据报套接字编程什么是套接字套接字的api示例&#xff1a;一发一收&#xff08;无响应&#xff09;客户端服务端前言 基于udp socket写一个最简单的客户端服务器程序. UDP数据报套接字编程 什么是套接字 我们先来解释一下什么是套接字吧! 套接字&#xff0…

流浪地球2:AI人工智能+数字生命+元宇宙

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D开发工具链剧情介绍 太阳危机 太阳即将老化膨胀&#xff0c;吞没太阳系&#xff0c;地球上的人类构思了各种生存计划&#xff1a;其一是“数字生命计划”&#xff0c;该计划制造强大的量子计算机&#xff0c;希望让人类在数字世界…

D. Omkar and Circle(非常有意思的一道题)

Problem - D - Codeforces 丹尼是当地的数学狂人&#xff0c;他对圆形很着迷&#xff0c;这是奥姆卡最近的发明。帮他解决这个圆的问题!已知n个非负整数a1, a2&#xff0c;&#xff0c; an&#xff0c;它们排成一个圆&#xff0c;其中n必须是奇数。n -1能被2整除)。形式上&…

基于Tensorflow搭建卷积神经网络CNN(人脸识别)保姆及级教程

项目介绍 TensorFlow2.X 搭建卷积神经网络&#xff08;CNN&#xff09;&#xff0c;实现人脸识别&#xff08;可以识别自己的人脸哦&#xff01;&#xff09;。搭建的卷积神经网络是类似VGG的结构(卷积层与池化层反复堆叠&#xff0c;然后经过全连接层&#xff0c;最后用softm…

KD-2125地下电缆测试仪

一、产品概述 管线探测仪是一套高性能地下金属管线探测系统&#xff0c;由信号发射机和接收机组成&#xff0c;可用于金属管线、地下电缆的路径探测、管线普查和深度测量&#xff0c;配合多种选配附件&#xff0c;可以进行唯一性鉴别&#xff0c;以及管道绝缘破损和部分类型电缆…

HTML—javaEE

文章目录1.认识HTML2.HTML标签的使用2.1注释2.2标题2.3段落2.4换行2.5字体加粗、斜体字、删除线、下划线2.6图片2.7超链接2.8表格2.9列表2.10表单标签2.11div2.12span3.HTML特殊符号1.认识HTML &#xff08;1&#xff09;HTML是网页的编程语言&#xff0c;文件的内容主要由“标…

【从零开始学Skynet】实战篇《球球大作战》(十一):战斗场景设计

现在的服务端框架有支撑数万玩家的能力&#xff0c;且支持横向拓展&#xff08;即 增加物理机数量&#xff09;&#xff0c;理论上具有无上限的负载能力。下面以《球球大 作战》为例&#xff0c;说明怎样使用这套框架。1、战斗流程 玩家登录后&#xff0c;玩家可以做些非战斗操…