GitHub Copilot:让开发编程变得像说话一样简单

引用:

人类天生就梦想、创造、创新。但今天,我们花太多时间被繁重的工作所消耗,花在消耗我们时间、创造力和精力的任务上。为了重新连接我们工作的灵魂,我们不仅需要一种更好的方式来做同样的事情,更需要一种全新的工作方式。

image.png

前言:

最近,随着GPT-4 植入 Office 全家桶,几秒钟就能够做成 PPT、Excel文档,办公软件应用无缝衔接,在工作中解放双手,不得不说的确很强!尚能饭否?感叹其背后拥有如此巨大的知识库跟算力去支撑!当我们还沉浸在-传统的工作方式是否终将被颠覆?在研发编程领域,开发者工程师们的得力助手GitHub Copilot 的诞生,想必更是让我们由衷感叹其如此强悍!

案例场景应用:
image.png
众所周知,GitHub 代码仓库跟 SonarQube 这类代码扫描工具都有 ES 的影子,协助研发做代码的管理、版本diff,以及潜在问题扫描检查有着极其重大的意义!

image.png

上述是 SonarQube 做 CodeReview 的效果,此伪代码存在 BUG 大名鼎鼎的空指针!!!
而换成 AI 工具,我们来看一下ChatGPT如何随机应变?可见ta在下述回答中规中矩,“有智慧的回答”,明显能够看出其上下文关联性很强!!!

image.png
image.png
我们这里浅尝试下单方法以及算法,比如耳熟能详的数据结构算法,快速排序、冒泡排序、二分查找…

译点一下,马上晓得
译点一下,马上晓得
由此可见,AI可以协助我们开发者完成自动补全代码块、单方法以及函数,并根据代码注释提示自动生成可运行的代码片段。

在使用 Microsoft Visual Studio、Vim、Visual Studio Code、JetBrains 集成开发环境,通过 Copilot 工具无疑是大大提升了广大开发者的生产力,节省了研发查阅资料的时间,使得研发效率大幅度提升。

image.png

这注将是一个划时代的产品,随着OpenAI训练的数据集不断扩展,将各种开发语言有针对性地进行训练,想必在很多垂直领域上会带来更大地突破,帮助开发人员将编程速度提高到不可思议的地步。

我们也结合到实际项目中,再来上一些示例:

那就让 Copilot 帮我们封装一个websocket.js,用于连接websocket…
image.png

从上述可知,我们看到 AI 给我们提供了多种解决方式以供参考。在如此短时间内,你的提示语无疑成了拥有巨大生产力 AI 工具的媒介,特别是当遇到需要检索资料时,尤其是针对SQL或DSL脚本写不出来的情况下,可以借力于 Copilot ,这不仅缩减了google一下的时间,还能够协助你补全并完善相关事项,提高软件开发的效率以及工作的满意度,这将是一种从传统编程向有智慧、有意识思维模式的转变…

image.png

随着 OpenAI 的 GPT-4 模型的不断演进,其能力还远不如此,还有更多功能值得我们去挖掘-工作中得力伙伴,特别是将其集成到我们开发人员工作流程各个部分中去,比如像 TFS 中我们开发者 Git 代码仓库版本的管理-团队协作:

在一个大型开源项目维护过程中,有规范的提交(PR)对于我们开发者是及其重要的,好的 pr 描述不仅能让代码审查工作人员一目了然,还可以协助审阅者快速了解 Code 变动情况,提升了沟通效率的同时,又减少了合并过程中出错的可能性。

延伸:
image.png

当我们开发者创建 pr 时,AI 若是能够标记动态提取代码,并分析代码的变更信息,帮我们自动生成描述及建议,这样我们开发人员就可以查看或修改建议的描述即可。

当我们开发者创建 pr 时,发现提交缺少足够的测试,AI 若是能够智能提醒我们开发人员,并给出解决策略,协助审查工作人员解决问题以及 Bug 修复。

这无疑是降低了在代码审查环节的时间成本。当下,一般都是开发人员通过搜索引擎查阅相关资料文档,AI 这一来同时改变了人们检索信息的方式与习惯,这样,我们更多需要与 AI 传达较为准确的信息媒介就是-提示词。

总结:

的确,DT&AI时代,AI类创新性产品的出现,无疑给开发者带来了巨大的冲击。但是,作为开发者的我们,应以积极的态度去面对,拥抱技术,提高我们自身的知识技能,学会借助并运用工具,从而更好地适应技术的发展。
image.png
1、注册 GitHub 账号

image.png

2、申请试用

image.png

3、安装代码编辑器

image.png

4、安装 GitHub Copilot 插件

以 Visual Studio Code 为例(下载->https://code.visualstudio.com)

image.png

接着,进入 Extensions 面板,在搜索框中输入回车,在搜索结果中找到插件并选择相应的插件点击安装,如下:

image.png

然后,待安装完成后,单击工具底部状态栏中的 GitHub Copilot 图标,进入 GitHub Copilot ,可以选择使用 GitHub 账户登录。在使用 GitHub Copilot 插件过程中,像我们在上述给的示例中,即在编辑器中输入关键字或者你想要实现效果的提示语句,GitHub Copilot 会自动出现一个提示框,我们就可以选择其中的建议代码了,或者还可以继续输入提示,获得更多我们想要的建议,当然,也可以手动编辑并校正代码来达到我们预期的效果。

文末,这里 Copilot 也提供了一些快捷键,使用技巧:
image.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux下CMake开发

CMake编译和运行C文件 编写CMakeLists.txt # 声明要求的 cmake 最低版本 cmake_minimum_required( VERSION 3.1 )# 声明一个 cmake 工程 project( pro )# 设置编译模式 set( CMAKE_BUILD_TYPE "Release" )#添加OPENCV库 #指定OpenCV版本,代码如下 #find…

笔记20230727

1. http2.0,概念就不说了,查看是否使用:network调试,查看请求的header-view source,可以查看http版本;后端,如nginx,配置,http2表示开启。后端开启、浏览器支持&#xff…

PHP8的注释-PHP8知识详解

欢迎你来到PHP服务网,学习《PHP8知识详解》系列教程,本文学习的是《PHP8的注释》。 什么是注释? 注释是在程序代码中添加的文本,用于解释和说明代码的功能、逻辑或其他相关信息。注释通常不会被编译器或解释器处理,而…

《TCP IP网络编程》第十一章

第 11 章 进程间通信 11.1 进程间通信的基本概念 通过管道实现进程间通信: 进程间通信,意味着两个不同的进程中可以交换数据。下图是基于管道(PIPE)的进程间通信的模型: 可以看出,为了完成进程间通信&…

Redis 笔记,基本数据类型、持久化、主从、集群等等问题

标题 😀😀😀创作不易,各位看官点赞收藏. 文章目录 标题Redis 基础笔记1、安装及环境搭建2、Redis 数据类型2.1、String2.2、List2.3、Hash2.4、Set2.5、Zset2.6、BitMap2.7、HyperLogLog2.8、Geospatial2.9、Stream 3、Redis 持久…

C++之普通函数指针/类成员函数指针/lambda回调函数总结(一百六十八)

简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长! 优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀 人生格言: 人生…

Go 语言入门指南:基础语法和常用特性解析

文章目录 Hello,World变量、指针及赋值变量和常量指针赋值 选择和循环选择循环 基本数据类型整型整型的取值范围 运算符二元运算符一元运算符 浮点型复数和布尔类型 字符串runeUnicode和UTF-8按字节访问按字符rune访问特点 数组数组的定义1. 使用默认初始值2. 定义并初始化3. 省…

13.4.2 【Linux】sudo

相对于 su 需要了解新切换的使用者密码 (常常是需要 root 的密码), sudo 的执行则仅需要自己的密码即可。sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),因此并非所有人都能够…

Verilog语法学习——LV1_四选一多路器

LV1_四选一多路器 题目来源于牛客网 [牛客网在线编程_Verilog篇_Verilog快速入门 (nowcoder.com)](https://www.nowcoder.com/exam/oj?page1&tabVerilog篇&topicId301) 题目 制作一个四选一的多路选择器,要求输出定义上为线网类型 状态转换:…

将Parasoft和ChatGPT相结合会如何?

ChatGPT是2023年最热门的话题之一,是OpenAI训练的语言模型。它能够理解和生成自然语言文本,并接受过大量数据的训练,包括用各种编程语言编写的许多开源项目的源代码。 软件开发人员可以利用大量的知识库来协助他们的工作,因为它具…

迁移学习、微调、计算机视觉理论(第十一次组会ppt)

@TOC 数据增广 迁移学习 微调 目标检测和边界框 区域卷积神经网络R—CNN

Kafka-配置Kerberos安全认证(JDK8、JDK11)

一、相关配置 1、JAAS 配置文件 KafkaClient {com.sun.security.auth.module.Krb5LoginModule requireduseKeyTabtruestoreKeytrueserviceName"kafka"keyTab"D:/code/demo/conf/kafka.service.keytab"principal"kafka/hdp-1"; }; 2、keytab 文…

3d软件动物生活习性仿真互动教学有哪些优势

软体动物是一类广泛存在于海洋和淡水环境中的生物,其独特的形态和生活习性给学生带来了新奇和有趣的学习主题,为了方便相关专业学科日常授课教学,web3d开发公司深圳华锐视点基于真实的软体动物,制作软体动物3D虚拟展示系统&#x…

在CSDN学Golang云原生(Kubernetes声明式资源管理Kustomize)

一,生成资源 在 Kubernetes 中,我们可以通过 YAML 或 JSON 文件来定义和创建各种资源对象,例如 Pod、Service、Deployment 等。下面是一个简单的 YAML 文件示例,用于创建一个 Nginx Pod: apiVersion: v1 kind: Pod m…

瓦瑟斯坦距离、收缩映射和现代RL理论

Wasserstein Distance, Contraction Mapping, and Modern RL Theory | by Kowshik chilamkurthy | Medium 一、说明 数学家们在考虑一些应用的情况下探索的概念和关系 - 几十年后成为他们最初从未想象过的问题的意想不到的解决方案。 黎曼的几何学只是出于纯粹的原因才被发现的…

动静态网页、Django创建表关系、Django框架的请求生命周期流程图

一、request对象的几个方法 在视图函数中写方法的时候,都会有一个形参requestdef index(request):passrequest.method # GET POST request.GET.get() # 它获取最后一个元素值 request.GET.getlist() # 获取到所有的request.POST.get() # 它获取最后一个元素值 req…

哈工大计算机网络课程局域网详解之:无线局域网

哈工大计算机网络课程局域网详解之:无线局域网 文章目录 哈工大计算机网络课程局域网详解之:无线局域网IEEE 802.11无线局域网802.11体系结构802.11:信道与AP关联 本节介绍一下平时经常使用的一个无线局域网技术,也就是通常我们使…

Vue2基础五、工程化开发

零、文章目录 Vue2基础五、工程化开发 1、工程化开发和脚手架 (1)开发 Vue 的两种方式 核心包传统开发模式:基于 html / css / js 文件,直接引入核心包,开发 Vue。工程化开发模式:基于构建工具&#xf…

CSS Flex 笔记

1. Flexbox 术语 Flex 容器可以是<div> 等&#xff0c;对其设置属性&#xff1a;display: flex, justify-content 是沿主轴方向调整元素&#xff0c;align-items 是沿交叉轴对齐元素。 2. Cheatsheet 2.1 设置 Flex 容器&#xff0c;加粗的属性为默认值 2.1.1 align-it…

Windows 找不到文件‘chrome‘。请确定文件名是否正确后,再试一次

爱像时间&#xff0c;永恒不变而又短暂&#xff1b;爱像流水&#xff0c;浩瀚壮阔却又普普通通。 Windows 找不到文件chrome。请确定文件名是否正确后&#xff0c;再试一次 如果 Windows 提示找不到文件 "chrome"&#xff0c;可能是由于以下几种原因导致的&#xff1…