前天百度创始人李彦宏还在说,以后的人,会说话就具备写程序的能力。昨天,英伟达CEO黄仁勋又说,不要再学编程了,机器会替代程序员。

但是在今天,首位AI程序员就诞生了。刚刚,一家叫Cognition的10人初创公司,才成立不到2个月,就研发出全球第一款AI程序员Devin。它可以掌握云端部署、底层代码、改bug、训练和微调AI模型。这让身为程序员的我突然瑟瑟发抖起来。我心想,难道我要失业了吗?忽然一想,哦,我去年就失业了,算了,不害怕了。
那么,AI程序员到底能不能写代码呢?他们官网的宣传片是否真实呢?
我们来验证一番吧。
假设我有一个需求,那就是将一个张图片从中间劈开,看看AI能不能写出来。
询问AI内容:请编写一段代码,将一张图片从左到右,一分为二,并保存为文件。
AI回复:
ini
from PIL import Image
# 打开图像文件
image_path = 'img.png' # 替换为你的图片文件路径
image = Image.open(image_path)
# 计算新图像的宽度和高度
width, height = image.size
new_width = width // 2
# 将原始图像一分为二
left_image = image.crop((0, 0, new_width, height))
right_image = image.crop((new_width, 0, width, height))
# 保存每个部分为新的文件
left_image.save('img_left_half.png')
right_image.save('img_right_half.png')
print("图像分割完毕,左半部分保存为 'img_left_half.png', 右半部分保存为 'img_right_half.png'")
代码写得不错,也有注释。下面,我们找一张图片试试。运行一下,它做到了。

如果这段代码让程序员写。做过类似功能的程序员,可能就是复制粘贴的时间。如果没做过这个功能,那可能要花上几个小时的时间去编写了。
再来实验一个功能。假设老板让我写一个功能,把用户上传的txt文档,转为Excel存储。那么,这个功能让AI写代码,效果会如何呢?
询问AI内容:请编写一段代码,读入一个txt文件,然后按行写入excel,列以空格拆分。
AI回复:
ini
import openpyxl
def txt_to_excel(txt_file, excel_file):
# 打开txt文件进行读取
with open(txt_file, 'r', encoding='utf-8') as txt:
lines = txt.readlines()
# 创建一个新的Excel工作簿和工作表
wb = openpyxl.Workbook()
ws = wb.active
# 逐行写入Excel,以空格拆分列
for row_num, line in enumerate(lines, start=1):
# 以空格拆分列
data = line.strip().split()
# 写入Excel行
for col_num, value in enumerate(data, start=1):
ws.cell(row=row_num, column=col_num, value=value)
# 保存Excel文件
wb.save(excel_file)
# 使用示例
txt_to_excel('input.txt', 'output.xlsx')
运行一下,查看效果:

果然是可以的。
随后我又试了几个,功能包括数据库读写,算法计算,文件处理,多线程,UI渲染等,这些功能AI都可以写出来。而且,100%可以流畅运行。
并且,对于bug的排查,AI也是可以轻松找出问题所在。下面是我故意写了一段运行有问题的代码。

交给AI排查时,AI这么回答:

看来,让AI写代码是可行的。其实,这也不是什么新闻了。早在ChatGPT 3.5训练完成时,开发人员就惊喜地发现了AI具备代码编写的能力。而这项功能,是出乎设计者的意料的,他们也没有想到。
一年多时间过去了,现在有创业团队慢慢地深耕这一个领域,算是作出一个垂直领域的成果。这也是在意料之中,只不过是个时间长短关系。
目前来说,AI程序员虽然能够编写代码,排查bug以及部署程序。但是它还无法完全取代现实的程序员。
因为编写代码不仅仅是机械的任务,还涉及到创造性的思考和设计。人类程序员能够理解业务需求、制定系统架构,并根据具体情境做出灵活的决策。因为许多软件问题是复杂的,需要深入领域知识,并提出创造性的解决方案。AI目前仍然还是个通用模型,难以处理所有领域和问题。比如,都是处理同一项计算,在金融和电力行业,规则是不一样的。
另外,软件开发通常是一个团队协作的过程,这涉及到与其他团队成员、客户或利益相关者的沟通。人类程序员具有良好的沟通能力和团队协作技能,这些方面的工作是难以被AI完全替代的。除非将一个巨大的任务,从上游到下游全都交给AI来做。显然,这是不可能的。
此外,软件开发领域不断发展,新的技术和工具不断涌现。人类程序员通常更容易适应这些变化。而AI程序员虽然也能进行学习,但是前提是先有这些工具,并且有了一定量的训练数据,它们才能学习。而且,在人类不指定工具的情况下,他们会更倾向于采用旧技术,因为这类技术的数据资料占比最大。
随着技术的不断发展,AI程序员会越来越智能,可以解决更多的问题,也会进一步提高开发效率。
但要完全取代人类程序员,目前看来仍然是一个遥远的未来。这就如同大家都会做饭,但是厨师依然存在一个道理。