编纂:LRS

【新智元导读】ChatGPT上岸第一剑,先斩开发者!

上一波图像生成模子大火,让艺术家们非常焦虑,并起头结合抗议Stable Diffusion等模子进犯本身的版权,而此次ChatGPT带来的文字革命则是让各行各业都产生了危机感。

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第1张

尤其是法式员群体,更是瑟瑟发抖,亲手把本身的饭碗整没了,将来只能沦为「代码审核专员」。

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第2张

但ChatGPT改代码的才能实有想象中那么强吗?

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第3张

可能还实就有那么强!

用上ChatGPT,完全不需要从浩如烟海的文档中寻找一个有价值谜底了,只需要一个问题,间接就能返回大要率是准确的谜底,而且还有诸多示例,从依赖库版本更新到MacOS手艺撑持无所不克不及。

ChatGPT出马,一个能顶俩,老板曲呼省钱...

理解编程语言的版本更新

「版本婚配」绝对是最让法式员们掉头发的问题,每次碰着tensorflow不兼容、各类依赖库版本互斥、语言版本特征等问题都要消耗大量的精神来调试和修改。

大部门人都不会存眷每次版本更新到底都有哪些内容变更,但ChatGPT把它们都记下来了。

好比老板给你一个需求,把所有网站从十分过时的 PHP 7.4版本迁徙到最新的PHP 8,那个问题可能就头疼了。

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第4张

PHP是WordPRess和许多其他收集办理东西所依赖的收集编程语言,此中会涉及到大量的插件,而此中某些插件其实不兼容PHP 8,若是想让晋级后的网站胜利运行,就必需找到并修复此中的代码。

一般的处理流程是,先到PHP.net上搜刮问题,然后再在StackExchange上查找一些相关评论,确定详细该若何修改,整个过程十分紊乱且耗时。

如今能够把问题的细节间接输入给ChatGPT,就能快速得到一个处理计划,而且答复中还会包罗一些演示代码。

问:我在用PHP的时候,在没有传入数组的情况下,extract函数返回了一个fatal error,代码在 PHP 7.4中就一般运行,但在 PHP 8中有错误。PHP 8的extract有什么变革吗?

I'm having trouble with the PHP extract function giving a fatal error when not passed an array. In PHP 7.4, I did not get the error, but I seem to in PHP 8. Did extract change for PHP 8?

ChatGPT答复:在 PHP8中,extract()函数的行为变得愈加严酷。在以前的 PHP 版本中,若是没有传入数组,extract ()函数只会返回 false;但是在 PHP 8中,若是没有传入数组,则会抛出一个致命错误。此修改是为了进步函数的强健性,并避免不测输入引起的潜在错误。

你能够通过利用 is_array() 函数查抄传递给函数的变量能否是数组,然后再挪用extract ()

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第5张

还能够利用 array_key_exists() 函数查抄传入的变量能否为数组。

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第6张

或者利用... 运算符将数组解构为多个变量。

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第7张

事实证明,按照ChatGPT的谜底几分钟内就能够修完bug,此中很大一部门原因是晓得去哪里找到谜底,而且ChatGPT也申明了在差别版本的 PHP 中函数的行为是若何变革的。

问:当把代码从 PHP 7.4迁徙到 PHP 8时,哪些 PHP 函数可能会出问题?

What PHP functions are likely to break when moving from PHP 7.4 to PHP 8?

ChatGPT答复:当从 PHP 7.4迁徙到 PHP 8时,有一些函数和特征可能会无法运行或具有差别的行为。以下是一些可能引提问题的次要变革:

如前面谜底中所提到的,若是没有传入一个数组,则extract()函数会抛出一个致命错误;PHP 8.0中删除了foreach , array_keys()和current();PHP 8.0中删除了 create_function() 函数,建议利用匿名函数;list()构造,在与 foreach 一路利用时,如今会将键和值做为零丁的变量返回,而非单个数组;在 PHP 8.0中已经删除了__autoload() 函数;$php_errormsg 变量在 PHP 8.0中已被删除;一些弃用(deprecations)函数已经被删了,包罗create_function(),each()、__autoload()和 ()和$php_errormsg

那些只是从 PHP 7.4迁徙到 PHP 8时可能会发作问题的一些更改示例,在晋级之前彻底测试您的代码和应用法式是一个好主意,以确保一切都按预期运行。

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第8张

在那份答复中,ChatGPT同时还说了「如前面谜底中所提到的」,让人感应既惊讶又惶恐。

在正在修改的代码中,本来的开发人员(已经去职很久了)经常利用create_function,其时我不晓得该函数已经被弃用了,但按照ChatGPT供给的修改列表,只需要搜刮代码,找到需要更新和重写的内容。

然后,继续要求 ChatGPT 展现替代该函数的办法。

问:在 PHP 中利用 create_function 重写代码的好办法是什么?给我一个利用 create_function 的例子。

What's a good way to rewrite code using create_function in PHP? Can YOU give me an example using create_function, and then one using the currently proPEr mechanism?

create_function 是 PHP 中已弃用的函数,用于创建匿名函数。官方不再保举利用那个函数,PHP 8.0 中已经删除了它。如今能够利用 function 关键字创建匿名函数(也称为闭包)。

下面是一个示例:

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第9张

下面是利用匿名函数的等价代码:

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第10张

此外,还能够利用 use 关键字将变量传递到闭包中:

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第11张

那个答复相当明晰,看领会释以后很快就能够重写完代码。

MacOS手艺撑持

假设在研究Mac上的优化存储(Optimize Storage)时也有一些问题,为了缩小研究范畴能够间接问ChatGPT。

问:利用 MacOS 功用Optimize Mac Storage时,Time Machine能否会因为一些文件只暗示为当地机器上的存根而停止不完好的备份?

If you use the MacOS feature Optimize Mac Storage, will Time Machine make incomplete backups because some files are only represented as stubs on the local machine?

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第12张

ChatGPT答复:MacOS 中的「优化 Mac 存储」功用利用 iCloud 将很少利用的文件从 Mac 卸载到云中,同时在当地机器上保留一个「存根」(stub)文件来暗示原始文件。如许能够节省 Mac 硬盘上的空间。

当设置Time Machine以停止备份时,将会备份所有文件,包罗那些已经利用「优化 Mac 存储」卸载的文件,不外是用存根文件来替代代替原始文件。

那也意味着,若是你要从Time Machine备份中恢复你的 Mac,而且「优化 Mac 存储」功用是启用的,那么任何卸载的文件将不会包罗在恢复中,需要再次从 iCloud 下载。

值得留意的是,若是卸载了大量的文件,那么Time Machine备份可能会比不利用优化 Mac 存储占用更多的空间,因为备份存根文件占用更少的空间。

简而言之,若是你利用「优化 Mac 存储」功用,Time Machine将会做不完好的备份,因为它只会备份存根文件,而非已经卸载到云端的原始文件。

上面ChatGPT的谜底是准确的。

总结

ChatGPT确实能够节省开发息争决bug所需时间。

凡是情况下,法式员写代码时需要不竭停止调试,还要停止大量的收集搜刮,从搜刮成果中找到线索,包罗阅读讨论和评论。

当然,整个搜刮过程能够供给良多信息,绝比照你从聊天机器人那里得到的信息更多,还能够在评论区还能够看到良多隐藏的技巧。

但当需要赶时间或者在一个关键的最初期限前,大量搜刮绝对是一个笨办法,借助ChatGPT来处理编程问题已经被证明长短常有效的。

ChatGPT和其他的模子一样,你必需意识到AI的谜底并不是老是准确,你极有可能会得到完全错误的谜底,但它确实是一个十分超卓的东西。

谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜  第13张

不外,ChatGPT到底是从哪里得到的那些信息?能否曾经有人专门写过一篇关于extract或是create_function的文章?能否某些人的常识被用做谜底生成的原始素材?

按目前的情况来看,至少关于 Google 的做者来说,曾经还有时机让搜刮引擎为文章供给流量,做为分享信息的回报,但是像 ChatGPT 如许的聊天机器人间接垄断了信息获取渠道,当然用户得到了更高的消费效率。有人会失去工做的成就感吗?

问:当你答复一个问题时,你能否承受了其别人奉献的常识,你能否从原始的人力资本中获得了工做功效?

ChatGPT, when you answer a question, are you taking knowledge others have contributed and are you taking work and credit away from the original human sources?

ChatGPT的谜底:做为一个由 OpenAI 创建的人工智能语言模子,我没有小我的概念或设法。不外我能够告诉你,用来生成回复的信息是基于我所承受的数据训练,那些数据包罗来自互联网的巨量文本。

那段文字是由许多差别的人和来源写的,我没有才能为我供给的信息归功于特定的小我。我的目的是供给有用和准确的信息,以帮忙用户找到他们正在寻找的谜底。

重要的是要记住,我的答复是基于我所受训练的数据中的形式生成的,可能其实不老是完全准确或最新的。

参考材料:

https://www.zdnet.com/article/im-using-chatgpt-instead-of-google-to-help-me-fix-code-faster-but-at-what-cost/