今年的小鲜肉报到了,军训完就要开始上虐人的编程课了, 大部分学Python,一部分学C,还有一部分学C++。万事开头难,面对全新的课程和学习模式,一部分同学痛不欲生。或许,AI能帮忙渡劫。
本文以百度文心快码为例,介绍在Visual Studio Code中安装、使用AI助手进行辅助编程的方法。本文以Python语言为背景展开,C和C++大同小异。
版权声明
本文节选自《Python编程基础及应用》第2版,高等教育出版社,作者:陈波,刘慧君, 向涛
本文可以在互联网上自由转载,但必须:注明出处(作者:海洋饼干叔叔)并包含指向本页面的链接。本文不可以以纸质出版为目的进行改编、摘抄。
随着深度学习技术的发展,尤其是大规模预训练语言模型的兴起,AI辅助程序设计逐步成为现实。通过对大量代码的预训练,可以训练出一种能够“理解”编程语言的大模型,这样的模型可以直接从自然语言需求或其他提示中生成代码片段或完整程序。表1-1列出了目前常见的用于辅助程序设计的专用模型。开发者也可以使用通用大模型辅助编程,如文心一言、百川智能、通义千问、ChatGPT、星火、混云、盘古大模型等。
名称 | 供方 | 名称 | 供方 |
---|---|---|---|
通义灵码 | 阿里云 | 代码小浣熊 | 商汤科技 |
GitHub Copilot | GitHub、OpenAI、 Microsoft | iFlyCode | 科大讯飞 |
CodeWhisperer | 亚马逊 | MarsCode | 字节跳动 |
CodeGeeX | 清华大学、智谱AI | Comate | 百度 |
上述专用模型的功能和使用方法大同小异。为便于教学,本书选用百度公司的Comate作为AI辅助编程工具。第一种使用Comate的方法是直接访问Comate网站(http://comate.baidu.com),通过自然语言进行问答交流。
第二种也是更专业的使用Comate的方法是将Comate插件工具安装到诸如Visual Studio Code这样的IDE环境中。
1. 在Visual Studio Code中安装Baidu Comate插件
如图1所示,打开Visual Studio Code,点击窗口左侧的“Extensions(扩展)”按钮 ,输入Comate进行检索,在检索结果中找到Baidu Comate,然后点击对应的“Install”按钮即可安装Comate插件。
安装完成后,Visual Studio Code窗口左侧会出现“Baidu Comate”按钮。点击此按钮,即见Comate的登录页面,如图2所示。读者需要注册并登录,才能正常使用Comate。
点击图2中的登录按钮,软件会弹出如图3所示的对话框要求打开外部网站,选择“Open”,同意打开外部网站。
接下来,系统会打开浏览器,读者将看到如图4所示的登录窗口。注意,如果读者已经在浏览器中登录了百度账号且未退出,看到的界面可能与图4不同。
图4的登录窗口提供了很多登录方法。作者由于已经拥有百度账号,选择直接使用账号密码登录,如图5所示。
读者如果还没有百度账号,可以点击右下方的”立即注册“注册百度账号,也可以点选左下方的新浪微博、微信、QQ等图标绑定并使用微博、微信、QQ的已有账号。在登录过程中,系统为了确保安全,可能还会要求通过邮箱、手机号验证等手段确认账号的正确归属。在完成上述过程后,作者得到如图6所示的登录成功页面。
2. 通过自然语言问答使用AI编程助手
关闭浏览器,回到Visual Studio Code中,发现图2的Comate登录页面变成了图7的模样。图中右上侧的karlcbalex为作者的百度账号,图中下方则有一个对话框,读者可以在该对话框中直接使用自然语言向Comate发问。
我们先择著名的”鸡兔同笼“问题来牛刀小试。输入如图8下方所示的提问,然后点击右下侧的蓝色纸飞机按钮。经过一通”思考“,Comate给出了解决方案,如图9所示。
Comate给出的回应较长,一屏显示不下,读者可以拖动图9右侧的上下滚动条滚动阅读。如图所见,对于作者所提的问题,Comate不光给出了Python程序,还说明了程序的工作原理和过程。需要注意的是,包括Comate在内的大模型一直在进化和发展,当读者向Comate提出相同问题时,Comate给出的解答不太可能跟图9完全一致。
我们点击图中的“复制”按钮复制代码,然后将其粘贴(使用Ctrl + V快捷键或者Edit->Paste菜单)到Python程序文件中,如图10所示。
如图10所示,运行程序,可见程序正常运行。稍加验算可知,程序执行结果也是正确的。
需要注意的是,读者千万不要产生AI已经“会”编程了,人类学习编程已经没有用的错觉。象鸡兔同笼这样简单的数学问题,互联网上存在大量的现有解决方案和代码,经过训练的AI模型容易找到解决方案。 但对于复杂的工程问题,以及那些超出人类知识边界的新领域的探索,当前阶段的AI至多还是一个配合者,人类的智力思考仍牢牢占据C位。
3. 体验AI助手的代码补全
如果读者已经成功安装并登录了百度的Comate插件,则可借助Comate来完成上述习题2-1。
如图11所示,当作者录入到demo.py程序的第6行时,Comate给出了代码补全建议,图中的浅灰色文字即为建议内容。此时,按下Tab键即可接受补全建议,在Comate的辅助下,程序员的工作效率有了显著提升。
在程序设计过程中,程序员也可以通过书写注释的方式与Comate交互,交互内容可以是对AI的请求,也可以是对AI进行下一步工作的指示。在图12中,当作者写完第8行的注释并按下Enter键后,Comate立即给出了代码补全建议,该建议包含了习题2-1中第2空的正确答案。
4. 使用AI助手给程序挑错
图13中的程序包含多处新手程序员常犯的错误。AI编程工具Comate可以帮助程序员找出这些错误并提供优化建议。
使用Ctrl + A组合键或者按住鼠标左键拖动选中全部代码,然后右击鼠标,在弹出菜单中选择Baidu ComateàOptimize Code(优化代码)。
Visual Studio Code事实上将上述操作转换成了一次要求Comate对特定代码段进行优化的对话。稍作等待后,Comate给出了如图15所示的回应。
图15中可见,Comate正确找出了程序中的三处错误,其中语法错误两项(缩进、字符串单双引号不匹配),逻辑错误一项(age未转换成整数)。同时,Comate还给出了修复后的代码片段。程序员如果认同Comate的修改建议,可以点击“采纳”按钮,让Comate将修改应用到程序文件中。
5. AI助手生成代码完成matplotlib绘图
示例源自Python教材案例 - 滚雪球的复利,源代码如下,供复制:
1 | #loan.py |
当前阶段,读者尚未学习使用matplotlib进行绘图。在AI时代,这种简单的低水平劳动可以由AI替代。在图5-4的第10行(我们书写了一行注释,要求AI辅助编程工具提供协助,在按下Enter后,Comate立即给出了代码补全建议。
按下Tab键接受代码补全建议后执行代码,会发现折线图虽然绘制成功,但图中的中文信息未能正确显示,如图5-5所示。
为解决这一问题,我们按下Ctrl + A组合键全选代码,然后再按下Ctrl + I组合键调出Baidu Comate交互对话框,并提交了如图5-6所示的反馈信息。
稍作等待后,Comate做出了如图5-7所示的回应。其中,第1 ~ 16行为原有代码,第17 ~ 34行为建议后修正代码。按照屏幕提示按下Alt + A组合键,接受代码修正。再次运行程序,可见图表中的中文显示正常,如图5-8所示。
接下来,请读者尝试应用前述方法与Comate进行交互,将折线图的横轴改为以年为单位显示。
6. 程序看不懂?让AI助手给讲讲
示例源自Python教学案例 - 发现圆周率,原始代码如下,供复制:
1 | #picalc.py |
当读者遇到读不懂的程序时,也可以请AI工具Comate来帮助解释。如图5-11所示,我们选中“发现圆周率”程序的全部代码(示例来自微实践 - 发现圆周率),右击鼠标右键,然后在弹出菜单中选择Baidu ComateàExplain Selected Code(解释全部代码)。
接下来,Visual Studio Code发起了一项要求Comate解释相关代码的对话。几秒钟之后,Comate给出了它对程序的解释,如图5-12、5-13所示。Comate的回应分4个部分解释了程序的工作原理和执行过程,准确而又详细。
欢迎支持海洋饼干叔叔系列程序设计教材,案例、配套资源丰富,实践性强,都是高等教育出版社出版的。
高校教学同行如果需要样书,或者索取教学支持资源, 请联系公众号或者海洋饼干叔叔本人。
《Python编程基础及应用》 | 《Python编程基础及应用实验教程》 | 《C++编程基础及应用》 |
---|---|---|