写点什么

挑战三大任务,Amazon Q 生成代码的能力到底如何?

  • 2023-08-24
    北京
  • 本文字数:1300 字

    阅读完需:约 4 分钟

挑战三大任务,Amazon Q 生成代码的能力到底如何?

活动推荐: #生成式 AI 先锋开发者集结令 #

免费体验编程神器,丰厚大奖等你来拿!👉🏻👉🏻https://jinshuju.net/f/rVuKYa


ChatGPT 火出圈之后,AI 大模型编程越来越多,虽然 AI 编码暂时无法完全替代程序员,但是时代变化、潮流趋势所向,大家没有必要过多焦虑,而是应该拥抱变化,拥抱趋势,尝试用 AI 辅助自己的编码,看是否可以得到帮助,本文试用了 Amazon 的 CodeWhisperer AI 编程工具,在这里做一个小小的总结。


CodeWhisperer 通过 AI 技术,可以自动分析代码库中的模式和常见用法,从而生成符合标准的代码片段,其旨在帮助开发人员节省时间和精力,提高开发者的工作效率。


当前 CodeWhisperer 支持集成到几种开发环境中,VS、Jetbrains、JupyterLab,Lamda 等,由于平时用 C++/Python/Go 比较多,因此本文使用 JetBrains 的 Clion 来测试 CodeWhisperer 生成 C++的能力,首先安装好 Clion(具体步骤网上找或者亚马逊官网指导书),进行 Clion 后,首先通过 tools 搜索安装 aws toolkit,安装好后启动就可以使用 CodeWhisperer 了,第一次启动时会生成一个验证码,链接到你的亚马逊账号进行授权,此处不细讲,按照提示操作即可



下面进入正题:


使用 CodeWhisperer 生成代码,需要添加注释,其会根据注释一行一行完成代码编写,并且会帮助你完成要编写代码的注释

任务一:

测试生成全部代码能力,主题完成一个 TCP Server 收发数据,下面图里是一步步的结果




最终完成的代码如下


生成过程并非像 ChatGPT 一样,一股脑的代码全部生成扔给你,需要开发同学一行一行的插入确认,这种情况也有好处,在于可以在开发过程中自己一行一行的确认正确性及问题,避免一大堆复杂代码重新费神的确认逻辑。


任务二:

推荐相应功能的开源库以及使用已集成的开源包进行代码生成测试,主题完成一个 SIP 消息处理函数,下面图片展示其完成过程和结果


(1)使用 osip2 解析 sip 消息,下面是生成的代码,基本符合预期



 (2) 期望重新推荐一个 sip 消息解析库,不知道是我已经集成了解析库还是还是什么其他原因,没有成功


可见 CodeWhisperer 对于 Github、Gitee 以及互联网上标准开源库是进行过训练的,可以读懂 oSip2 是一个很有名的 sip 协议栈,因此可直接使用其 API 根据注释生成可用代码


任务三:

基于已完成部分代码,根据注释生成补全代码,CodeWhisperer 也可以根据上下文和注释补齐代码的相应功能,建立一个资源分配函数(带一定的业务功能),完成一半的部分(>4),让 CodeWhisperer 完成剩下的部分(<4),下面展示结果




最终的结果



至此任务三测试完成,生成了基本可用的代码。


最后总结,CodeWhisperer 对于能够更快地编写代码还是有一定的帮助。


首先,在集成开源或者第三方不熟悉的代码库时,它可以为我节省大量的时间去学习和查阅 API 接口文档,让我能够专注于改进和测试。


其次,可以帮助我节省繁琐的重复性工作,如上面的 TCP Socket 处理。


当然,也期望可以后续可以生成整体代码段的方式,对于非复杂逻辑代码的场景其效率是更高的。


版权声明: 本文为 InfoQ 作者【Hanson】的原创文章。

原文链接:【https://xie.infoq.cn/article/386428468269729e334f2c134】。

本文遵守【CC BY-NC】协议,转载请保留原文出处及本版权声明。

2023-08-24 14:385268

评论

发布
暂无评论
发现更多内容

手把手整合SSM框架

JavaPub

编程核心能力之抽象

顿晓

抽象 编程日课

负载均衡方式

羽球

负载均衡

分布式系统设计理念这么难学?

架构师修行之路

架构 分布式

Go:Stringer命令,通过代码生成提高效率

陈思敏捷

stringer Go 语言

ARTS打卡-06

Geek_yansheng25

Cache解决算法 Charles断点调试breakpoint John 易筋 ARTS 打卡 Week 08

John(易筋)

ARTS 打卡计划

智慧4S店解决方案发布,看英特尔如何引领汽车销售行业变革

最新动态

极客时间 - 架构师培训 - 6 期作业

Damon

观智能化浪潮如何改变产业链创新

CECBC

【计算机网络】为什么要三次握手四次挥手?

烫烫烫个喵啊

TCP 计算机网络

ARTS-WEEK6

一周思进

ARTS 打卡计划

程序的机器级表示-程序的编码

引花眠

计算机基础

SpringBoot 入门:03 - 统一请求返回

封不羁

Java spring springboot

每周学习总结 - 架构师培训 6期

Damon

ARTS打卡 - Week 07

teoking

每周学习总结 - 架构师培训 5 期

Damon

ARTS WEEK5

紫枫

ARTS 打卡计划

设计模式(1)—什么是设计模式?设计模式的六大原则是什么?

爱嘤嘤嘤斯坦

Java 程序员 编程语言 设计模式 23种设计模式

抽象工厂模式

Leetao

Python 面试 设计模式

【计算机网络】如何实现可靠数据传输?

烫烫烫个喵啊

Mysql插入百万条数据

Java小咖秀

MySQL 运维 数据

ARTS打卡 第7周

引花眠

ARTS 打卡计划

数据驱动 vs 关键字驱动:对UI自动化测试框架搭建的探索

冯文辉

DevOps 敏捷 自动化测试

一致性hash算法及标准差验证

Damon

昆明市成立两大“高端”中心,区块链赋能生物医药和高原特色农业

CECBC

进程、线程基础知识全家桶,30 张图一套带走

小林coding

Linux 操作系统 计算机基础 进程 进程线程区别

redis系列之——高可用(主从、哨兵、集群)

诸葛小猿

redis redis集群 redis哨兵 redis主从

低代码与无代码

lidaobing

低代码 无代码开发

简述CAP理论

lei Shi

MySQL实战45讲总结

`

MySQL

挑战三大任务,Amazon Q 生成代码的能力到底如何?_亚马逊云科技_Hanson_InfoQ精选文章