ChatGPT大战Copilot,谁才是最强王者

这篇具有很好参考价值的文章主要介绍了ChatGPT大战Copilot,谁才是最强王者。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

巨人之战:GitHub Copilot vs ChatGPT ⚔️⚔️

微信搜索关注《Java学研大本营》,加入读者群,分享更多精彩

ChatGPT的发布在编程社区引起了波澜,因为它可以产生令人难以置信的代码片段。

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

它与去年发布的GitHub Copilot相比如何?人工智能会追随你的工作吗?让我们找出来。

测试 ChatGPT

让我们简要回顾一下我们对GitHub Copilot进行的相同测试。https://dev.to/ruppysuppy/github-copilot-my-experience-after-one-week-usage-eie

测试 1:股票价格获取

可悲的是,它第一次生成了错误的代码。

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

该函数未定义为async,并且promises未正确处理。

下一次尝试更好

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

奇怪的是,它在没有API 密钥的情况下也能工作(只要查询参数包含apikey具有任何随机值的密钥)。

结果:GitHub Copilot让ChatGPT望尘莫及。

测试 2:BFS 遍历

这一次,ChatGPT一口气搞定了,遗憾的是太长了,截图放不下,所以生成的代码如下:

class Node:
  def __init__(self, value):
    self.value = value
    self.left = None
    self.right = None

class BinarySearchTree:
  def __init__(self):
    self.root = None

  def insert(self, value):
    new_node = Node(value)

    if self.root is None:
      self.root = new_node
      return

    current_node = self.root
    while True:
      if value < current_node.value:
        if current_node.left is None:
          current_node.left = new_node
          return
        current_node = current_node.left
      else:
        if current_node.right is None:
          current_node.right = new_node
          return
        current_node = current_node.right

  def inorder_traversal(self, node, numbers):
    if node is None:
      return
    self.inorder_traversal(node.left, numbers)
    numbers.append(node.value)
    self.inorder_traversal(node.right, numbers)

  def get_numbers(self):
    numbers = []
    self.inorder_traversal(self.root, numbers)
    return numbers

bst = BinarySearchTree()
bst.insert(10)
bst.insert(5)
bst.insert(15)
bst.insert(3)
bst.insert(7)
bst.insert(13)
bst.insert(17)

numbers = bst.get_numbers()
print(numbers)  # [3, 5, 7, 10, 13, 15, 17]

整个代码由ChatGPT生成,并附有对其工作原理的评论。

结果:ChatGPT胜出。

测试 3:100 个的数组

ChatGPT为这个生成了多个建议

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

当GitHub Copilot启动时,它生成了一个有点靠不住的建议,但现在它生成了与ChatGPT相同的代码。

结果:并列(取决于您比较的软件版本)

创建一个完整的 TODO 项目

为了进一步推进测试,我决定使用这两个软件创建一个完整的TODO项目。

ChatGPT

  1. 如何创建TODO项目?

ChatGPT提到的步骤是相当全面的

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

  1. 如何创建React项目?

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

  1. 创建一个Todo组件

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

这是我不喜欢的部分。生成的代码使用的是遗留类组件语法。它也没有处理 todos 的添加

  1. 优化Todo组件处理todos的增删并标记为已完成。

这是它生成的代码(截图太长了)

import React from "react";

// TodoItem component
const TodoItem = ({
 item,
 onDelete,
 onComplete,
}) => (
 <li>
   {item.text}
   <button onClick={onDelete}>Delete</button>
   <button onClick={onComplete}>
     {item.isComplete ? "Undo" : "Complete"}
   </button>
 </li>
);

// TodoApp component
class TodoApp extends React.Component {
 // Define the initial state of the component
 state = {
   todoItems: [],
 };

 // Method to handle adding new items to the todo list
 addTodo = (text) => {
   // Add the new item to the todo list
   this.setState({
     todoItems: [
       ...this.state.todoItems,
       { text, isComplete: false },
     ],
   });
 };

 // Method to handle deleting items from the todo list
 deleteTodo = (index) => {
   // Delete the item at the given index
   this.setState({
     todoItems: this.state.todoItems.filter(
       (_, i) => i !== index
     ),
   });
 };

 // Method to handle completing/undoing a todo item
 completeTodo = (index) => {
   // Update the "isComplete" property of the item at the given index
   this.setState((state) => {
     const todoItems = [...state.todoItems];
     todoItems[index].isComplete =
       !todoItems[index].isComplete;
     return { todoItems };
   });
 };

 // Method to render the component
 render() {
   return (
     <div>
       {/* Form to add new items to the todo list */}
       <form>
         <input
           type="text"
           placeholder="Add a todo item"
         />
         <button type="submit">Add</button>
       </form>

       {/* List of todo items */}
       <ul>
         {this.state.todoItems.map(
           (item, index) => (
             <TodoItem
               key={index}
               item={item}
               onDelete={() =>
                 this.deleteTodo(index)
               }
               onComplete={() =>
                 this.completeTodo(index)
               }
             />
           )
         )}
       </ul>
     </div>
   );
 }
}

这次生成的代码更好一些,可以将code splitting待办事项标记为已完成。它仍在使用遗留类组件,即使在明确要求之后也没有处理待办事项的添加。

  1. 最后尝试提及创建功能组件并处理待办事项的添加、删除和完成。

import React from "react";

// TodoItem component
const TodoItem = ({ item, onDelete, onComplete }) => (
  <li>
    {item.text}
    <button onClick={onDelete}>Delete</button>
    <button onClick={onComplete}>
      {item.isComplete ? "Undo" : "Complete"}
    </button>
  </li>
);

// TodoApp component
const TodoApp = () => {
  // Define the initial state of the component
  const [todoItems, setTodoItems] = React.useState([]);
  // Method to handle adding new items to the todo list
  const addTodo = (text) => {
    // Add the new item to the todo list
    setTodoItems([
      ...todoItems,
      { text, isComplete: false },
    ]);
  };
  // Method to handle deleting items from the todo list
  const deleteTodo = (index) => {
    // Delete the item at the given index
    setTodoItems(
      todoItems.filter((_, i) => i !== index)
    );
  };
  // Method to handle completing/undoing a todo item
  const completeTodo = (index) => {
    // Update the "isComplete" property of the item at the given index
    setTodoItems((state) => {
      const todoItems = [...state];
      todoItems[index].isComplete =
        !todoItems[index].isComplete;
      return todoItems;
    });
  };
  // Return the component
  return (
    <div>
      {/* Form to add new items to the todo list */}
      <form>
        <input
          type="text"
          placeholder="Add a todo item"
        />
        <button type="submit">Add</button>
      </form>
      {/* List of todo items */}
      <ul>
        {todoItems.map((item, index) => (
          <TodoItem
            key={index}
            item={item}
            onDelete={() => deleteTodo(index)}
            onComplete={() => completeTodo(index)}
          />
        ))}
      </ul>
    </div>
  );
};

即使这次添加也没有处理。从好的方面来说,使用了功能组件

GitHub Copilot

遗憾的是Copilot无法生成 React 项目。它只能在给定的上下文中建议代码片段,所以让我们从自己创建一个React 应用程序开始

  1. 创建一个React项目

npx create-react-app react-copilot
  1. 删除多余的文件并创建TodoApp.js,TodoItem.js

  2. 终于到了Copilot施展魔法的时候了,我们坐下来喝一杯莫吉托。

在文件顶部添加了关于要完成的任务的评论

Todo Item

// Functional TodoItem component which takes onDelete,
// onComplete, and item ({ todo: string; completed: boolean })
// as props

Todo App

// Functional TodoApp component which handles addition,
// deletion & completion of todos. The TodoItem component
// is used to render each todo item
  1. 生成TodoItem

export default function TodoItem({
 onDelete,
 onComplete,
 item,
}) {
 return (
   <div>
     <input
       type="checkbox"
       checked={item.completed}
       onChange={() => onComplete(item)}
     />
     <span
       style={{
         textDecoration: item.completed
           ? "line-through"
           : "none",
       }}
     >
       {item.todo}
     </span>
     <button onClick={() => onDelete(item)}>
       Delete
     </button>
   </div>
 );
}

生成的代码使用功能组件和视觉指示器来完成带有附加样式的待办事项(它还使用了checkbox,这是我的个人偏好)

  1. 生成TodoApp

export default function TodoItem({
 onDelete,
 onComplete,
 item,
}) {
 return (
   <div>
     <input
       type="checkbox"
       checked={item.completed}
       onChange={() => onComplete(item)}
     />
     <span
       style={{
         textDecoration: item.completed
           ? "line-through"
           : "none",
       }}
     >
       {item.todo}
     </span>
     <button onClick={() => onDelete(item)}>
       Delete
     </button>
   </div>
 );
}

结果

尽管我们需要做额外的工作来设置项目,但与ChatGPT相比, Copilot能够为Todo 应用程序生成更好的代码。

归根结底,Copilot应该是一个帮助开发人员更快地编写代码的工具,而ChatGPT是一个通用的工具chatbot,但它仍然可以简化开发过程,但是当任务以编码为中心时, GitHub Copilot无疑胜出!这给我们带来了问题......

谁会抢走你的工作?

(在你的脑海里)人工智能的开发者:邪恶的笑声

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

在你烧掉GitHub HQ之前,让我们退后一步,看看大局。这些是简化开发过程的工具,并不是要取代开发人员。

我们仍然需要开发人员编写代码。当然,这些工具可以帮助我们更快地编写代码,但如果没有人工输入,它们仍然无法自行完成所有工作。

经济不景气裁员如火如荼,听上去很吓人,但只要你不断更新和磨练自己的技能,你就会没事的!

推荐书单

《项目驱动零起点学Java》

《项目驱动零起点学Java》共分 13 章,围绕 6 个项目和 258 个代码示例,分别介绍了走进Java 的世界、变量与数据类型、运算符、流程控制、方法、数组、面向对象、异常、常用类、集合、I/O流、多线程、网络编程相关内容。《项目驱动零起点学Java》总结了马士兵老师从事Java培训十余年来经受了市场检验的教研成果,通过6 个项目以及每章的示例和习题,可以帮助读者快速掌握Java 编程的语法以及算法实现。扫描每章提供的二维码可观看相应章节内容的视频讲解。

《项目驱动零起点学Java》贯穿6个完整项目,经过作者多年教学经验提炼而得,项目从小到大、从短到长,可以让读者在练习项目的过程中,快速掌握一系列知识点。

马士兵,马士兵教育创始人,毕业于清华大学,著名IT讲师,所讲课程广受欢迎,学生遍布全球大厂,擅长用简单的语言讲授复杂的问题,擅长项目驱动知识的综合学习。马士兵教育获得在线教育“名课堂”奖、“最受欢迎机构”奖。

赵珊珊,从事多年一线开发,曾为国税、地税税务系统工作。拥有7年一线教学经验,多年线上、线下教育的积累沉淀,培养学员数万名,讲解细致,脉络清晰。
《项目驱动零起点学Java》(马士兵,赵珊珊)【摘要 书评 试读】- 京东图书京东JD.COM图书频道为您提供《项目驱动零起点学Java》在线选购,本书作者:,出版社:清华大学出版社。买图书,到京东。网购图书,享受最低优惠折扣!https://item.jd.com/13607758.html

ChatGPT大战Copilot,谁才是最强王者,chatgpt,copilot,python

精彩回顾

数据架构演进史(上)

数据架构演进史(下)

如何选择适合的后端框架

微信搜索关注《Java学研大本营》

访问【IT今日热榜】,发现每日技术热点文章来源地址https://www.toymoban.com/news/detail-638170.html

到了这里,关于ChatGPT大战Copilot,谁才是最强王者的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ChatGPT 拓展资料:GitHub Copilot 实践课

    ChatGPT 拓展资料 GitHub Copilot 实践课 https://docs.github.com/zh/copilot

    2024年02月10日
    浏览(49)
  • AI集成ChatGPT敲代码神器Copilot

    本文主要是AI工具Copilot解读文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力一点,优秀一点 1.Copilot是什么 Copilot (https://copilot.github.com/) 是由 Github 提供的AI编码辅助工具,它可以在

    2024年02月06日
    浏览(33)
  • ChatGPT-CURSOR(copilot)试用初体验

    chatgpt相关的cursor试用记录及总结,会极大提升开发的代码开发效率(间接的对百度、google的依赖降低很多),可以与开发需求全过程结合的点很多(如占用时间较多的CR),期待大家结合自身工作的试用分享。 “请使用python输出斐波那契数列” def fibonacci(n): if n = 0: return No

    2024年02月09日
    浏览(46)
  • 构建自定义ChatGPT,微软推出Copilot Studio

    11月16日,微软在美国西雅图举办“Microsoft Ignite 2023”全球开发者大会。本次人工智能成为重要主题,微软几乎把所有产品都集成了生成式AI功能并发布了一系列全新产品。 其中,微软重磅推出了Copilot Studio(预览版),可帮助企业、个人用户快速构建自定义ChatGPT助手。 例如

    2024年02月05日
    浏览(43)
  • 聊聊国内如何使用ChatGPT的堂兄弟Copilot

      ChatGPT狂飙160天,世界已经不是之前的样子。 新建了人工智能中文站https://ai.weoknow.com 每天给大家更新可用的国内可用chatGPT资源 ​  发布在https://it.weoknow.com 01,序言  今年算是ChatGPT爆火的一年,算是AI比较正式进入大众视野。这里面ChatGPT的开发公司OpenAI也靠着GPT在全球名

    2024年04月23日
    浏览(48)
  • ChatGPT和Copilot协助Vue火速搭建博客网站

    网上会看到很多 AI 的应用介绍或者教程 使用 AI 聊天,咨询问题 —— 代替搜索引擎 使用 AI 写各种的电商文案(淘宝、小红书) 使用 AI 做一个聊天机器人 —— 这最多算猎奇、业余爱好、或者搞个套壳产品来收费 以上这些都不是。AI 对于开发人员的最大价值就是 ——  开

    2024年02月06日
    浏览(43)
  • vs code 如何使用copilot(对接了chatgpt)

    VS Code 是一个非常流行的开发工具,而 Copilot 则是一个基于 GPT 模型的代码生成工具,可以通过 VS Code 安装相关的插件来使用。 以下是在 VS Code 中使用 Copilot 的步骤: 下载安装 VS Code 插件 首先,你需要下载并安装 Copilot 的 VS Code 插件。在 VS Code 中依次点击扩展 搜索“Copilot”

    2024年02月11日
    浏览(36)
  • ChatGPT+GitHub Copilot:从繁杂的工作中解放自己

    现在好几个大公司都推出了自家的大语言模型,有的参数比GPT多,但是真正能称得上会编程的,大概只有GPT一个,可以说是OpenAI的独门功夫。 这篇文章旨在探讨GPT辅助编程过程中常用的提示和技巧。当然,我自己也是一边学一边演练,一边演练一边完成的这篇博客内容。欢迎

    2023年04月14日
    浏览(35)
  • ChatGPT plugins & GitHub Copilot X【附申请链接】

    插件意味着无限可能,各种应用场景。 ChatGPT 发布插件系统,补齐所有短板 ChatGPT 插件系统是一项新功能,它使语言模型能够与外部工具和服务进行交互,提供对信息的访问并实现安全、受约束的操作。它由 OpenAI 于 2023年 3 月 23 日宣布,目前仅适用于一小部分用户。插件的

    2024年02月11日
    浏览(54)
  • 微软的Copilot 和OpenAI的ChatGPT应该怎么选?

    还在为是选择微软CopilotPro还是OpenAI的ChatGPTPlus愁眉苦脸吗?别担心,这篇文章将帮助你了解这两款人气AI工具的技术差异,并根据你自己的需求做出正确的决定。  两者都有免费版和付费版(20美元/月,copilot还有30美元/月的版本),并且采用了创新的GPT-4技术,可以实时访问

    2024年04月10日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包