Chat GPT 创建APP: 开发人员要被替代了吗?

news2024/11/15 12:42:29

我们又要被人工智能取代了吗?

GitHub Copilot 于 2021 年 10 月发布,整个开发社区都为之疯狂。有些人发表言论说我们很快就会失业,而其他人(比如我),认为虽然这个工具很有趣,但距离替代人工还很远。它可以提供更好的自动完成的功能,但无法为我们创建完整的应用程序。

所以我们很安全,至少我是这么想的。

几周前,Chat GPT 的发布,整个开发社区再次疯狂。这次,我尝试了AI,并要求它创建一个相当于“Hello world”的web开发:To-Do。让我们看看它是怎么做的。

项目需求

这是我给 Chatbot 的提示和我得到的答案:

你能给我代码来创建一个允许我编辑项目并将它们存储在数据库中的 to-do app 吗?请在前端使用 React,在后端使用 next js 

以是我最初给的提示,关键部分已用粗体标记:

  • to-do app

  • 可以编辑项目

  • 将数据存储在数据库中

  • 使用 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>
        ))}

我确实得到了一个 to-do app,并且使用了 React 和 Next,但是它没有使用数据库。事实上,它使用的是内存存储,而且它不允许我编辑项目。

现在让我们再问一次。

您可以修改该代码以添加对云数据库的支持吗?

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

瞧,这是我得到的代码:

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" on

它为我选择了 Firebase,甚至写了占位符以输入我的身份验证信息。

这段代码可以工作吗?

至少到目前为止,结果给我留下了深刻的印象,我并没有真正期待这些细节。但在测试代码时,我发现了该 chatbot 存在几个突出问题:

问题 #1:它缺少 import。这实在是一个很愚蠢的错误,我们一直在优化,但是代码却缺少了 import。

问题 #2:它从未指定要使用的 firebase npm 包的版本。也许那是我的错,但是一个简单的 npm install firebase 命令安装了一个与代码不兼容的版本。所以我问 chatbot:我应该为刚才那段代码安装什么版本的 firebase npm 包?

我得到了一个有趣的回答:

3230ba491fe58bacf4ca2f20b719decd.png

我的意思是,它能够理解我的问题的上下文,并提供了一个(几乎)有效的答案。该代码确实与该版本的 firebase 兼容,因此我可以尝试一下。但是当前的 Firebase 版本是 9,不是 7。解决了这些问题后,我就能够测试该应用程序并使其正常运行。

689073b5f1d1e0a298a51ce624fcc045.png

哦,我发现还缺少“编辑”按钮。这是我要求的,因为没有多少教程涵盖应用程序的这一部分。他们通常支持添加和删除项目。

Chat GPT的缺点

不要误会我的意思,Chat GPT 非常棒。结合 Dalle-2 和 MidJourney,这是我尝试过的最有趣、最先进的 AI 软件。

但它不会取代开发人员。

为什么?由于我上面强调的两个问题。如果您还没有注意它,那么该机器人只是从用于训练它的文章中输出内容。因此,它并没有自己创建完美无缺的代码,而是简单地向我展示了其他作者所写的内容。不仅如此,它还向我显示有错误的过时内容。

那是因为它无法验证是否确实满足了我的要求。相反,它会猜测(成功率很高)我想要什么,然后给我返回一个看起来很像的东西。换句话说,在目前的状态下,Chat GPT 只有在用于训练它的内容经过验证并由其他人保持更新时才有用。

使用 Chat GPT 对我们这些开发人员有什么影响?

我们只是在寻找另一种可能在我们的日常工作中派上用场的工具。比如现在,当你遇到问题时,你会在谷歌上输入问题,10 次中有 8 次你会登陆 StackOverflow。现在,您将能够直接在 Chat GPT 上输入问题,它很可能会为您提供来自 SO 或一些排名靠前的文章。

您应该盲目信任 ChatGPT 返回的代码吗?

不行,还是得动脑筋。但它会给你一个很好的开始。换句话说,ChatGPT 唯一能做的(至少现在)是执行更快的谷歌搜索。

不要误会我的意思,随着我们每天执行谷歌搜索的次数,它很可能会派上用场。也就是说,Chat GPT 确实会给你一个答案,根据它的算法,这是最适合你的答案。但是剩下的呢?你自己的喜好呢?

ChatGPT 将隐藏所有其他选项,有效地增加它认为对用户有效的少数选项。这种做法究竟多有效?还是由使用者自行决定。

讨厌 Copilot 的人,他们也讨厌 Chat GPT 吗?

Copilot 已经收到了一些起诉,因为它在没有正确注明作者姓名的情况下输出受版权保护的代码。ChatGPT 也会发生同样的情况吗?毕竟,正如您已经看到的那样,该机器人正在返回来自(个人认为)其他创作者的内容,而没有适当地注明他们的姓名。

当然,ChatGPT 目前是免费使用的,所以我认为不存在任何法律问题,但是一旦他们开始收费(这已经发生在 Dalle-2 上),他们就会引发法律纠纷。毕竟,他们实际上是在向您收取可在网上免费获得的内容的费用,并且没有注明适当的作者。

Chat GPT 不会取代开发人员

它充其量只会简化您的搜索过程,并帮助您更快地找到问题的答案。你怎么认为?您会尝试在日常开发工作中使用 ChatGPT 吗?

·  END  ·

HAPPY LIFE

10f854c05ae3f66775eddea59f710412.png

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

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

相关文章

【Django框架】——25 Django视图 07 状态保持Session

文章目录1.session流程图2.session语法与案例3.session配置cookie不安全&#xff0c;会把所有敏感数据放到浏览器保存。 session是把敏感数据存到自己的服务器中给浏览器一把钥匙就行了&#xff08;是基于cookie完成的&#xff09;。 Django 提供对匿名会话(session)的完全支…

Cisco Packet Tracer 8.2.x Crack

Cisco Packet Tracer 是一个网络模拟器。有了这款功能强大的软件&#xff0c;用户可以在模拟和安全的环境中学习所有网络主题&#xff0c;而无需花费很多钱。它是网络主题模拟和培训领域中最受欢迎的应用程序之一&#xff0c;因为它提供了这样做所需的所有功能。Packet Tricer …

Java方法(函数)

文章目录Java方法(函数)一、方法介绍二、方法的定义和调用格式1. 快速入门2. Debug查看方法的执行流程3. 方法调用内存图解4. 带参数方法的定义和调用1&#xff09;定义和调用格式2&#xff09;形参和实参5. 带返回值方法的定义和调用6. 方法通用定义格式三、方法常见问题四、方…

MIPI 摄像头的原理

1. 摄像头sensor 的原理 定时脉冲生成器会生成clock&#xff0c;用于访问image sensor 阵列中的行&#xff0c;预充电&#xff0c;并且按顺序采样像素阵列中的所有行。在一个行的预充电和采样的时间段里&#xff0c;像素的电荷量会随着曝光时间而逐渐减少。这就是快门结构中的曝…

擎创技术流 | ClickHouse实用工具—ckman教程(10)

一、前言 哈喽~友友们&#xff0c;转眼农历新年就在眼前&#xff0c;ckman系列也终于迎来了最后一期&#xff0c;非常感谢大家的喜欢&#xff0c;让up主有动力做完这个系列&#xff0c;也感谢一路走来&#xff0c;大家给予的反馈&#xff0c;让这个系列越做越好。 接下来&…

4-Spring使用

目录 1.存储Bean对象到Spring容器中 1.1.创建Bean 1.2.将Bean注册到Spring容器中 1.2.1.第一次存储Bean&#xff08;可选&#xff0c;如果是第二次及以后&#xff0c;此步骤忽略&#xff09; 1.2.2.添加Bean标签 2.从Spring容器中获取并使用Bean对象 2.1.创建Spring上下…

剑指 Offer 04. 二维数组中的查找 [C语言]

目录题目思路代码结果该文章只是用于记录考研复试刷题题目 在一个 n * m 的二维数组中&#xff0c;每一行都按照从左到右 非递减 的顺序排序&#xff0c;每一列都按照从上到下 非递减 的顺序排序。请完成一个高效的函数&#xff0c;输入这样的一个二维数组和一个整数&#xff…

[leetcode 1723] 完成所有工作的最短时间

题目 题目&#xff1a;https://leetcode.cn/problems/find-minimum-time-to-finish-all-jobs/description/ 该题和 [leetcode 2305] 公平分发饼干 完全相同。 解法 回溯剪枝 感觉和 [leetcode 198] 划分为k个相等的子集 有点相似&#xff0c;这题更像是划分为k个尽量相等的子…

easypoi 模板导入、导出合并excel单元格功能

easypoi 模板导入、导出合并单元格功能 参考&#xff1a; java使用poi读取跨行跨列excel springboot集成easypoi并使用其模板导出功能和遇到的坑 Easypoi Excel模板功能简要说明 easypoi 模板导出兼容合并单元格功能 ExcelUtil package com.yymt.utils;import cn.aftertu…

linux系统中利用QT实现环境传感器的数据获取方法

大家好&#xff0c;今天主要和大家分享一下&#xff0c;如何使用QT实现对三合一环境传感器的数据的获取和实现。 目录 第一&#xff1a;资源介绍 第二&#xff1a;具体代码的详细实现 第三&#xff1a;源文件“mainwindow.h”实现 第四&#xff1a;Linux应用接口获取数据 第…

大趋势:科技赋能产业

能整合传统产业资源的老板大优势&#xff01; 三大趋势&#xff1a; 科技赋能产业链 乡村振兴 文化复兴 纯技术类企业在产业链方面不占优势 趣讲大白话&#xff1a;时势造英雄 ******** 消费互联网竞争太卷了 竞争向产业升级方向转移 向高质量发展导向 乡村振兴是整合分散的集…

容器虚拟化技术Docker(一)简介、安装、常见命令、数据卷、安装常规软件

容器虚拟化技术Docker&#xff08;一&#xff09;简介、安装、常见命令、数据卷、安装常规软件 1、Docker简介 1、简介 Docker的主要目标是“Build&#xff0c;Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&a…

web3:同态加密

web3相关学习一并收录至该博客&#xff1a;web3学习博客目录大全 目录同态加密概念同态加密具体如何定义&#xff1f;主流同态加密算法原理乘法同态加密算法① RSA算法一些基本的数学知识RSA的具体过程秘钥的产生加密解密验证了 RSA 算法的乘法同态性java代码简单实现python代码…

保时捷狂推NFT,高调喊出打造Web3社区,Web2品牌“天生缺陷”终将折戟沉沙?...

图片来源&#xff1a;由无界 AI 绘画工具生成2023年1月&#xff0c;保时捷中国的公关团队“忙疯”了&#xff0c;一连搞了好几个活动。有展览&#xff0c;媒体连线直播&#xff0c;甚至搞起了一场有圆桌&#xff0c;有嘉宾主题演讲的发布会。目的只有一个&#xff0c;告诉中国用…

6、Ubuntu20的JDKMySQLtomcatRedisNginx安装

安装JDK 这里以安装版本8为例 进入存放jdk目录创建目录 cd /usr/local mkdir jdk cd jdk 把下好的jdk8压缩包拖拽到Ubuntu连接用户下 移动jdk包文件 mv /home/starfish/jdk-8u351-linux-x64.tar.gz . 解压jdk tar -zxvf jdk-8u351-linux-x64.tar.gz cd jdk1.8.0_351/ p…

ubuntu20.04安装搜狗sogou输入法

环境 Ubuntu20.04 Sogou拼音输入法安装过程 Step.1 安装fcitx框架 sudo apt-get update sudo apt-get install fcitx输入winA后&#xff0c;打开Languate Support Keyboard input method system中&#xff0c;选择fcitx 点击Install/RemoveLanguates...&#xff0c;选择Ch…

面向物流行业的文档管理系统

用于运输和物流的 DocuWare 文档管理软件 物流和货运行业的效率激烈战在公路、火车、货船和空中展开。DocuWare 的快速、安全和灵活的文档管理是真正的竞争优势。在您的公司和客户的核心流程中节省新的成本和时间。 一、数字化和文档管理软件改变了物流公司的游戏规则 智能链…

PostgreSQL 技术内幕(五)Greenplum-Interconnect模块

Greenplum是在开源PostgreSQL的基础上&#xff0c;采用MPP架构的关系型分布式数据库。Greenplum被业界认为是最快最具性价比的数据库&#xff0c;具有强大的大规模数据分析任务处理能力。 Greenplum采用Shared-Nothing架构&#xff0c;整个集群由多个数据节点&#xff08;Segm…

mycat数据分片

Mycat是一个彻底开源的&#xff0c;面向企业应用开发的大数据库集群。它的定义是是一个开源的分布式数据库系统&#xff0c;是一个实现了MySQL协议的服务器&#xff0c;前端用户可以把它看作是一个数据库代理&#xff0c;用MySQL客户端工具和命令行访问&#xff0c;而其后端可以…

【题解】2023牛客寒假算法基础集训营1

目录A. World Final? World Cup! (I)思路B. World Final? World Cup! (II)C. 现在是&#xff0c;学术时间 (I)思路D. 现在是&#xff0c;学术时间 (II)思路E. 鸡算几何思路F. 鸡玩炸蛋人思路G. 鸡格线思路H. 本题主要考察了DFS思路I. 本题也主要考察了DFSJ. 本题竟也主要考察…