谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜
wptr33 2025-05-08 06:56 5 浏览
编辑:LRS
【新智元导读】ChatGPT上岸第一剑,先斩开发者!
上一波图像生成模型大火,让艺术家们十分焦虑,并开始联合抗议Stable Diffusion等模型侵犯自己的版权,而这次ChatGPT带来的文字革命则是让各行各业都产生了危机感。
尤其是程序员群体,更是瑟瑟发抖,亲手把自己的饭碗整没了,未来只能沦为「代码审核专员」。
但ChatGPT改代码的能力真有想象中那么强吗?
可能还真就有那么强!
用上ChatGPT,完全不需要从浩如烟海的文档中寻找一个有价值答案了,只需要一个问题,直接就能返回大概率是正确的答案,并且还有诸多示例,从依赖库版本更新到MacOS技术支持无所不能。
ChatGPT出马,一个能顶俩,老板直呼省钱...
理解编程语言的版本更新
「版本匹配」绝对是最让程序员们掉头发的问题,每次碰到tensorflow不兼容、各种依赖库版本互斥、语言版本特性等问题都要耗费大量的精力来调试和修改。
大部分人都不会关注每次版本更新到底都有哪些内容变动,但ChatGPT把它们都记下来了。
比如老板给你一个需求,把所有网站从非常过时的 PHP 7.4版本迁移到最新的PHP 8,这个问题可能就头疼了。
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 ()
还可以使用 array_key_exists() 函数检查传入的变量是否为数组。
或者使用... 运算符将数组解构为多个变量。
事实证明,根据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同时还说了「如前面答案中所提到的」,让人感到既惊讶又惶恐。
在正在修改的代码中,原来的开发人员(已经离职很久了)经常使用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 关键字创建匿名函数(也称为闭包)。
下面是一个示例:
下面是使用匿名函数的等价代码:
此外,还可以使用 use 关键字将变量传递到闭包中:
这个回答相当清晰,看了解释以后很快就可以重写完代码。
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回答: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到底是从哪里得到的这些信息?是否曾经有人专门写过一篇关于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/
相关推荐
- 想想单身“18”年,一时想找个小奶狗男旁友还是随缘吧
-
Hello,狗子们新年好阿!都说新一年的愿望无非是升职加薪、桃花旺旺,升职加薪嘛,老板!!!想想单身“18”年,一时想找个小奶狗男旁友还是随缘吧,好在,群众的力量是强大的,纷纷献出自己心中的小奶狗最...
- 微信公众号开发出现 cURL error 60: SSL certificate problem ssl证书
-
在phpstudy的环境下如果出现这样的报错cURLerror60:SSLcertificateproblem:unabletogetlocalissuercertificat...
- 第五天快http头部信息注入cooik(http 头部信息)
-
复显今天的内容宽子节client_ip以及X_FORWARDED_FOR的利用Sql相关的转义字符函数在mysql中,用于转义...
- 苹果CMS主题 魔改MXoneV10正式整合版源码- 安装教程
-
测试环境:系统:CentOS7.8PHP7.0扩展:Redisfileinfosg111.下载程序2.把程序上传站点并解压3.上传数据库7.更改数据库链接信息5.检查一下,目录权限6.检...
- 「某CMS漏洞」SQL注入漏洞分析(sql注入漏洞语句)
-
前言这个CMS非常适合入门代码审计的人去学习,因为代码简单且漏洞成因经典,对一些新手有学习价值,...
- WAF-Bypass之SQL注入绕过思路总结
-
过WAF(针对云WAF)...
- php实现一个基本的 MVC 框架(php mvc教程)
-
以下是一个简单的PHP框架的代码示例:<?php//定义应用根目录define('APP_ROOT',dirname(__FILE__));//自动加载类文件...
- Scrapy 爬虫完整案例-提升篇(scraper爬虫)
-
1Scrapy爬虫完整案例-提升篇1.1Scrapy爬虫进阶案例一Scrapy爬虫案例:东莞阳光热线问政平台。网站地址:http://wz.sun0769.com/index.php/que...
- XSS注入我也不怕不怕啦--PHP从框架层面屏蔽XSS的思考和实践
-
本文由腾讯WeTest团队提供,更多资讯可直接戳链接查看:http://wetest.qq.com/lab/微信号:TencentWeTest对于新接触web开发的同学来说,XSS注入是一件非常头疼的...
- 基于自组织映射的检索增强生成(RAG)
-
大量数据用于训练大型语言模型(LLM),该模型包含数百万和数十亿个模型参数,目的是生成文本,例如文本补全、文本摘要、语言翻译和回答问题。虽然LLM从训练数据源中开发知识库,但总有一个训练截止日期...
- 使用python scrapy框架抓取cnblog 的文章内容
-
scrapy的文档请移驾到http://scrapy-chs.readthedocs.io/zh_CN/0.24/intro/install.html1、准备工作安装python、Spyder...
- 网站开发初级(4) 之 PHP MVC模式的简单实现
-
在之前的第一篇文章已介绍过了MVC模式,今期就简绍下一个简单的实现方式,因为不是专门讲解如何实现框架,因此,这里只是实现了MVC模式的一种简单方式,对初学者入门有很好的意义。首页网站根目录创建如上图文...
- thinkphp源码无差别阅读(一)(thinkphp分布式数据库)
-
thinkphp源码无差别阅读(一)thinkphp的framework源码大概165个文件,我们不按照逻辑分析阅读源码,我们一个文件一个文件阅读,阅读完以后有个大概了解,然后在运行逻辑下进行阅读fr...
- 谷歌阵地失守!ChatGPT又准又快,改bug完全不需要搜
-
编辑:LRS【新智元导读】ChatGPT上岸第一剑,先斩开发者!...
- php手把手教你做网站(二十)vue+tp6简单案例(demo)
-
很多时候搭建好了环境,但是不知道怎么入手去开发。下面我们通过简单案例说明如何快速入门开发模块:例1:开发helloworld模块搭建好环境,新建项目以后,进入项目所在文件夹,依次进入src/compo...
- 一周热门
-
-
C# 13 和 .NET 9 全知道 :13 使用 ASP.NET Core 构建网站 (1)
-
因果推断Matching方式实现代码 因果推断模型
-
git pull命令使用实例 git pull--rebase
-
git pull 和git fetch 命令分别有什么作用?二者有什么区别?
-
面试官:git pull是哪两个指令的组合?
-
git fetch 和git pull 的异同 git中fetch和pull的区别
-
git 执行pull错误如何撤销 git pull fail
-
git pull 之后本地代码被覆盖 解决方案
-
还可以这样玩?Git基本原理及各种骚操作,涨知识了
-
git命令之pull git.pull
-
- 最近发表
-
- 想想单身“18”年,一时想找个小奶狗男旁友还是随缘吧
- 微信公众号开发出现 cURL error 60: SSL certificate problem ssl证书
- 第五天快http头部信息注入cooik(http 头部信息)
- 苹果CMS主题 魔改MXoneV10正式整合版源码- 安装教程
- 「某CMS漏洞」SQL注入漏洞分析(sql注入漏洞语句)
- WAF-Bypass之SQL注入绕过思路总结
- php实现一个基本的 MVC 框架(php mvc教程)
- Scrapy 爬虫完整案例-提升篇(scraper爬虫)
- XSS注入我也不怕不怕啦--PHP从框架层面屏蔽XSS的思考和实践
- 基于自组织映射的检索增强生成(RAG)
- 标签列表
-
- git pull (33)
- git fetch (35)
- mysql insert (35)
- mysql distinct (37)
- concat_ws (36)
- java continue (36)
- jenkins官网 (37)
- mysql 子查询 (37)
- python元组 (33)
- mysql max (33)
- mybatis 分页 (35)
- vba split (37)
- redis watch (34)
- python list sort (37)
- nvarchar2 (34)
- mysql not null (36)
- hmset (35)
- python telnet (35)
- python readlines() 方法 (36)
- munmap (35)
- docker network create (35)
- redis 集合 (37)
- python sftp (37)
- setpriority (34)
- c语言 switch (34)