很多人都发现ChatGPT可以做一些代码相关的工作,不仅可以写一些基础的类似python、java、js的代码段,还可以做一定量的调优,于是就开始担忧起来,到哪天我的开发工作会不会被ChatGPT这个工具给取代了?
目录
目前看来,ChatGPT可以做什么?说的最直白点,他可以对话。再说的啰嗦点,就是可以充当现在的百度一下,你就知道;可以充当咨询大使;可以充当某些网站的客服人员;可以搞一搞文学创作,可以搞一搞艺术创作,前些天不是动不动就有人发出来一个AI大美图,看得我们开发人员直流鼻血那种。
而做为开发人员呢,他还可以帮你写一段代码,还可以植入到某个开发工具中去。所以,ChatGPT真的是AI时代的变革,他让我们搜索而无广告,他让我们写代码而不用再打开一个又一个的链接,结果看见一个比一个更2B的文章。
所以,一旦未来ChatGPT不断的放开且功能强大起来,我们将不再需要去网页上查找各种信息,直接问ChatGPT即可找到答案;我们每次打客服电话,将不用再受那些垃圾的假的智能客服的干扰,也不用再按0等人工客服,因为这个GPT客服足够强大;我们也不用再去各种平台找自己不会的代码,而是直接在自己的VSCode中找到自己需要的某个算法。
所以,这真的是一股AI时代的浪潮,浪潮之下,必有倒霉的职业和行业。至于是哪些,大家其实也能想到一些,我也不好说,但可以肯定的一点是,未来,基于ChatGPT这个应用的场景将会越来越多,也许某一天你将不必再打开淘宝APP购物,也许你不需要打开12306购票,也许你出行之前再也不用单独打开马蜂窝挨蛰,也许元宇宙也成为里面的一个子应用了。而且再也不会像现在一样,某个APP功能强大,强大到你好不到自己需要的功能。那个时候,真的是万物互联。

现在python的大火,能火到什么时候,我们这些开发工程师还能被带火多久?例如,搞一个python程序,在VSCode中,我们希望把桌面上的mp4转为mp3格式,

再比如,让python帮着写一个数组取重,都已经是再简单不过的事情了
a=[22,21,12,3,10]
def duplicate(arr):
s=[]
for i in arr:
if i not in s:
s.append(i)
return s
print(duplicate(a))
可以想象,ChatGPT可以慢慢的帮助我们解决问题,提供教程,可以帮我们直接输出一段代码,甚至未来,一旦我们做的一个项目慢慢多和ChatGPT接触之后,也许真的是未来某一天,来了一个新需求,和原来差别不是特别大,没准ChatGPT真的就长篇代码输出了。你本来还想着看一看那里的逻辑不通顺,哪里可能会有小问题,帮着ChatGPT来做个code review,最后你发现,真的是无可挑剔,真的到了那个时候,你觉得自己的工作是否岌岌可危呢?
其实也不用怕,即便如此也不用担心,因为你要对产品经理这个职位放心,开发人员值钱是因为他们真正超越了ChatGPT甚至ChatGPT未来版本的代码功底,开发人员从来都不是靠写几个单一的算法,写一些小需求来取胜的,而ChatGPT即便是未来也就这样了。产品经理有足够蛋疼的思路让ChatGPT跑不会了,而只有我们人类的大脑,可以不断和产品需求进行沟通,不断的中和理解,不断的砍需求,不断的把产品做得更烂,才迎来了上线的高光时刻。而且,ChatGPT真的是一个机器人,他无法和客户有效沟通,无法请客户吃饭喝酒,他就只能勤勤恳恳的学习模型,然后输出,即便学习会了,客户的需求也是他永远无法企及的目标。
所以,ChatGPT能帮助我们成为高效的工具,能帮助我们充当一个知识库,但,绝对不能替代我们和客户,和产品需求,和老板掰头,就是掰,也是老板的头硬。

即便ChatGPT是智能的,是带有人工的AI智能,拥有海量的数据模型可以学习,但这都算是一种工具类的冲击,他们是无法干掉我们开发人员的,能干掉我们开发人员的,可能也只有我们自己。举几个例子啊。
就拿前端开发来说,最基本的HTML|CSS|JAVASCRIPT,人们觉得开发效率低,不兼容浏览器,就开始不断封装方法,想要给人们赋能,慢慢又觉得性能不够,又开始搞虚拟DOM,这还不够,开始搞智能打包,搞智能脚手架,不断提升开发效率,觉得光做前端不过瘾,搞一搞NODE,搞一搞koa之类的,连一连mysql,觉得仍然不能堪当重任,直接把自己刚写完的node代码扔线上去,好让自己多一些在老板面前曝光的机会。本来公司10个人能干的活儿,好嘛,现在3个人就要搞定。
再说个场景,还是前端,做了H5,PC,这本来无可厚非,但是呢,觉得自己不够强大,从开始就不断思考如何做APP,刚开始套个壳,里面放H5页面,后来又开始一拖三,搞ReactNative,慢慢又觉得不过瘾,Flutter做个左面应用吧,然后又开始渗透到各种小程序去。总之就是,你能看见的,都是我前端可以搞的,你看不见的我想搞一搞。跟西厂田化雨似的,啥都想管。就是恨不得公司就剩你们前端得了,最后再把前端干掉几个,你剩下你们几个在那说啥是啥。
整天有人出什么幺蛾子,搜棒子主意,要给你赋能这个,赋能那个,想要把你手中的也许交给他们做,表面上看他们想让你变得更轻松,让他们做更多更累更苦,其实他们只想抢你的饭碗。
所以,行走在黑夜的马路上,你别担心那些飘飘然的东西,你更应该担心哪个人喝多了还开着一个破四轮车。
说道这里,我们可以看几个案例,优秀的与反面的。我不说哪个优秀,哪个是反面,大家可以自行猜测一下。
《葫芦娃救爷爷》,7个葫芦娃,其实最早就是7个小矮人,他们想要救爷爷,但是自己能力低微,就要想着精进本领,于是练就成了江湖人知的武当七侠,但还是不行啊,老爷爷被妖怪抓走了,于是又开始修炼,练成了葫芦娃,长在树上。虽然这个时候每个人都有了看家本领,千里眼,顺风耳,大力士等等,但还是能力不足,不能完成整个需求。为了更好的完成需求,早日完成需求,他们最后找到了合体的招式,很快就取得了胜利。如果没记错的话,也就是8集就完了。需求完成了,7个孩子没事了,最终被合体的功能取代了。
《西游记》,皇帝问几年能做完需求?3年,再问,几年?快了?再问,几年?不行,路上坏人多,再问几年,艰难险阻实在是多,再问,几年?不行,师傅被抓走了。眼看都到了灵山了,还能弄出《java springboot无字真经》《python基础掉水里》《javascript掉了一个角》那样的事情。你看,我们不是不能飞过去,我们就得艰难一些,一个需求一干就是13年。这还不算完,回去了得讲经吧,慢慢的还得有《西游记后传》吧,《东游记》,还不过瘾,我们又加需求,《春光灿烂猪八戒》,《一飞一飞孙悟空》,你看吧,最后实在是不行,也得搞需求啊,再来个《勤勤恳恳沙和尚》啥的,总之,我得有事情做。
再看那些具有共通点的优秀作品,《光头强总也砍不完树》《灰太狼总也抓不到羊》《蓝猫淘气一直问》等等,我们可以一集就发大招搞全剧终,但我们不会这么搞,不能轻易发大招。

最后,不要总想着ChatGPT越来越强大啦,我还要不要做开发,我还要不要学java,我还能学python不,前端是不是已经死啦。你就放心大胆的去学吧,工具永远是工具,顶多加一个字,让他变成工具人。你也不要总想着未来ChatGPT真的很强了,再也不惧怕产品经理们了,ChatGPT顶多就是给你提供一些代码片段,就现在的管理平台,不同的角色拥有不同的权限,不同员工属于不同的角色,也许某个人拥有多个角色,而且这些代码片段必定是低耦合的,这个逻辑就够他搞一阵子的。
所以,我们既要学习这个新鲜事物,但也不能反受其累,你用的再利索,他也不能帮你做毕业设计,帮你面试。但是,但是,但是,狗哥能
给大家推荐一个从0到1全网最优秀的《Vue + SpringBoot前后端分离项目实战》专栏
前端部分:Vue + SpringBoot前后端分离项目实战
服务端部分:SpringBoot + Vue前后端分离项目实战
我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现
了解Rails缓存如何工作的人可以真正帮助我。这是嵌套在Rails::Initializer.runblock中的代码:config.after_initializedoSomeClass.const_set'SOME_CONST','SOME_VAL'end现在,如果我运行script/server并发出请求,一切都很好。然而,在我的Rails应用程序的第二个请求中,一切都因单元化常量错误而变得糟糕。在生产模式下,我可以成功发出第二个请求,这意味着常量仍然存在。我已通过将以上内容更改为以下内容来解决问题:config.after_initializedorequire'some_cl