问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Eric Matthes:思考 AI 对编程和程序员的影响

创作时间:
作者:
@小白创作中心

Eric Matthes:思考 AI 对编程和程序员的影响

引用
CSDN
1.
https://blog.csdn.net/weixin_61138436/article/details/143997490

AI工具的出现正在深刻改变编程工作流程。从简单的代码生成到复杂的项目部署,AI助手正在展现其独特价值。本文通过具体案例,深入探讨了AI工具带来的机遇与挑战,帮助程序员更好地理解这一技术变革。

尽管几十年来我们一直在构建和使用越来越有用的工具,但AI助手的出现却带来了极为深远的影响。这种变化无疑超过了我们长期以来所见的任何革新。

本文是我试图理性分析这些变化的一部分:什么在改变?什么保持不变?我们应该如何应对?

在两个极端之间

没有人知道未来的1~5年,编程会变成什么样子。任何以绝对自信谈论未来的人,要么过于自信,要么试图推销某种东西。设定一些边界来判断事情可能会发生多大的变化是有帮助的。关于变化的两种极端观点非常简单:

  • 没有人再需要编程,因为AI会接管一切。
  • 没有任何变化,因为这些工具实际上并不真正有用。

我可以很肯定地说,现实介于这两者之间。所以,继续学习编程仍然非常值得。但同时,不可否认的是,事情确实发生了根本性的变化。

关于py-image-border的反思

在本系列的前几篇文章中,我编写了一个为图像添加边框的小工具。因为我需要为屏幕截图添加边框,而macOS并没有内置这样的工具,所以我决定开发一个。最初,我手动编写了一个可用版本,接着又分别使用和不使用AI助手进行了重构。这次实践让我对AI工具的影响有了深刻的认识。

从独有技能到人人可用

有一个非常显著的结论让我至今感到惊讶。py-image-border这种小工具,对于有一定能力的程序员来说,构建它简直易如反掌,因为有太多像Pillow这样优秀的第三方软件包可供使用。它也是那种非程序员历来完全无法使用的实用程序。对于非程序员来说,花钱请人制作这样一个工具总是太贵了,即使它只不过是一个下午就能完成的工作。

但是,现在只要能使用GPT,任何人都能轻松制作这种工具。

虽然本系列的重点是重构,但我做了一个小测试:直接要求GPT生成“添加图片边框的代码”。GPT生成的代码与我自己写的不完全相同。我对是否完全采用GPT生成的架构抱有复杂的情绪,但更重要的是,GPT能够生成完整的、非简单的功能性程序。

即便你完全没有编程背景,只需告诉GPT你的需求,它会一步步指导你如何在自己的系统上使用代码。对于某些问题,你甚至不需要理解生成的代码内容,只需清晰表达你的需求即可。

PyCon的见闻

我从PyCon回来,此次前往的一个重要目标是了解现实中人们如何使用AI工具,远离营销宣传和博客文章的夸张之词。

这次的重构实验让我能够清晰地向他人讲述这些现有AI工具的有效性。我发现,比起夸大AI影响力的人,低估AI能力的人更多。这种低估往往来源于发现AI工具在某些小问题上表现不佳或不够一致,然后以此为依据,完全否定其价值。

更复杂的用例中的启示

我遇到的一个例子,很好地说明了为什么一些有经验的程序员容易过早否定AI工具。我正在开发一个更复杂的项目——django-simple-deploy,这是一个自动化Django项目部署的工具,支持多个平台。它需要在用户的本地系统上运行,并根据用户选择的平台配置项目。

由于工具需要支持不同的包管理工具(如requirements.txt、Poetry或Pipenv),我最初尝试检测用户系统中是否安装了Poetry。我用poetry --version检测,但发现该命令在不同的系统或目录中输出不同的结果,导致方法不够可靠。于是我询问GPT是否有更好的解决方案。它建议如下代码:

def is_poetry_installed():
    poetry_path = shutil.which("poetry")
    return poetry_path is not None

这是一个非常棒的解决方案,它跨平台,仅检测Poetry的可执行文件是否可用,而不是尝试解析命令行输出。

我随后问GPT如何检测Pipenv是否安装,它最初提供了一个复杂且笨拙的方法。经过反复交流后,我发现检测Pipenv同样可以使用这行代码实现。GPT解释说,它最初建议更复杂的方法,是因为“想提供更全面的解释”。

这些不一致之处让一些人对AI工具感到失望,但如果了解其局限性,实际上仍然可以发现其背后的巨大价值。

非确定性带来的不适

对于许多程序员来说,AI工具的非确定性是一个让人不适的重要原因。AI并不总是对相同输入产生相同输出,这种非确定性让人感到无法完全信任。我们习惯了确定性的系统,对于非确定性的系统通常充满戒备。这种心态导致一些人完全拒绝使用AI工具,尤其是在没有提供足够上下文时,AI回答复杂问题表现得不够理想。

此外,一些程序员习惯将逻辑性和分析能力视为个人身份的核心,当面对看似“不合逻辑”的AI工具时,可能会产生认知冲突。尤其是当他们意识到这些工具可能威胁到自己的工作时,这种排斥情绪会更为强烈。

py-image-border的实际价值

当讨论AI工具对编程的深远影响时,提供一个具体的例子是很有帮助的。py-image-border项目就是这样的例子。它展示了一种曾经只有程序员才能实现的技能,编写小型实用工具以提高效率,如今对于任何能够使用GPT的人来说都变得触手可及。

几十年来,无代码工具总是被过度宣传。而AI工具的出现,表明我们终于拥有了一种真正通用的“无代码的自然语言工具”。这是令人惊叹的进步。

没有预想中的过度宣传

在为期一周的面对面交流中,包括与一些实际开发这些工具的人交谈,我发现关于AI工具的宣传并没有我预想的那么夸张。我认为这有两个原因。

首先,PyCon倾向于吸引那些不会试图过度吹嘘其产品功能的人,包括赞助商。因为周围有足够多的专业人士,过度吹嘘只会让自己显得很傻。

但更重要的是,那些每天构建和使用AI工具的人根本不需要炒作任何东西。他们清楚这些工具并不完美,但也知道自己和其他许多人一样,正在通过这些工具完成非常重要的工作。他们能够看到模型的缺陷,同时也知道如何解决这些缺陷,有时甚至可以利用这些缺陷完成特定的任务。

我不盲目崇拜AI

请不要误解我的意思。我坚定地相信AI工具非常有用,但我并不盲目崇拜它们。这些工具已经在许多方面对人们的生活造成了负面影响,未来这种影响可能还会持续一段时间。然而,出于多种原因,这已经是无法逆转的现实。

换句话说,这个“精灵”已经从瓶子里跑出来了。既然如此,我们所能做的就是努力理解这些工具,开始适当地使用它们。

结论

通过这次实验以及观察,我得出的结论非常明确:尽早以自己的方式探索AI工具。不要知识复制粘贴AI生成的结果,也不要因为它们的错误就轻易放弃。AI工具的强大之处在于,它们偶尔的错误和误解,实际上可以引导你思考新的解决方案。

与此同时,继续从可靠的资源学习:阅读书籍、新闻咨询和文档,观看视频和演讲,与同事交流,并向非技术人了解他们对AI的体验。AI工具已经是当下世界的一部分,而不是未来的工具。越早理解它们的能力和局限性,你就越能在这个快速变化的世界中游刃有余。

许多人都在尝试理解AI工具。如果这篇文章对你有帮助,请转发分享给你的朋友们。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号