编译丨千山
审校 | 云昭
51CTO读者成长计划社群招募,咨询小助手(微信号:TTalkxiaozhuli)
最近,一个叫AutoGPT的模型火了,在GitHub上线数周Star数就直线飙升。截至目前,AutoGPT的Star数已经达到87k,马上接近90k,超过了PyTorch的65k。

图源:https://github.com/Significant-Gravitas/Auto-GPT
根据AutoGPT的命名,就可以发现其神奇之处在于“auto”,即自主人工智能。简言之,只要给AutoGPT一个指令,它就能自主思考推导下一步动作,在用户完全不插手的情况下自主执行并完成所有任务。
有国外测试者要求AutoGPT创建一个网站,结果AutoGPT直接调用React框架生成了一个前端页面,用时不到3分钟。期间不用人类参与,采用的React和Tailwind CSS都是AutoGPT自主决定的。

据介绍,AutoGPT是一个开源的AI代理Python应用程序,它以GPT-4作为基础,允许AI自主行动,不需要用户参与中间环节。OpenAI技术大牛Andrej Karpathy更是在推特直言,AutoGPT是“提示(prompt)工程的下一个前沿”。

图源:推特@Andrej Karpathy
尽管还是有人认为AutoGPT不过是一款实验性的开源工具,虽然火了但是并不能投入生产,但也有人觉得这代表着能够自主决策的人工智能开始展现出巨大的潜力。
当一款AI工具能自动完成网络搜索、信息获取、自主编码和调试时,或许也意味着终有一天,程序员完成产品开发的必要流程也将被AI取代,传统的编程工作在未来走向消亡。
那么由此带来这样一个问题:编码会死去吗?
倒转时钟,回到20世纪40年代末,彼时第一批电子计算机诞生,编程语言随之兴起。编码作为一种特殊技能,只有少数人掌握并能熟练应用。
随着时间流转,编码逐渐成为开发人员改变世界的强大手段,在互联网、智能手机陆续普及的蛮荒时代,在形形色色的领域生根发芽、遍地开花。但与此同时,人们也开始发现机器惊人的学习和适应能力,于是“机器能否取代人”的争论被摆到了台面上。
当今世界,我们似乎处在了一个十字路口。技术的浪潮裹挟着我们向前,带来效率的同时也在引发更多的焦虑。当低代码出来的时候,当Copilot出现的时候,当ChatGPT爆火的时候,“程序员即将失业”的舆论一遍又一遍响起。
一方面,有人坚持认为,编码仍然是一项必不可少的技能,对于解决复杂问题至关重要;另一方面,有人大胆提出,曾经稀缺的软件工程师早已成为如今遍地都是的码农,代码不过是历史的产物,也终将泯灭于历史。机器才是新时代的选择。
如今,AI算法可以生成代码、创作诗歌、编写文案、设计网站。而在未来主义者眼中,这不过是冰山一角,有朝一日,更强大的人工智能和自动化工具会让软件开发过程发生质的飞跃,甚至让非专业开发者也能以最少的编码知识创建应用程序。
当人与机器之间的界限变得越来越模糊,对于编码未来的争论也愈发剧烈。
关于编码的未来,各执一词的双方各有立场。
主张编码终将消亡的一方判断的依据在于:
(1)人工智能和自动化的兴起:随着人工智能驱动的工具的出现,传统的编程技能将变得越来越过时,当机器以无与伦比的速度和效率接管这些任务时,编码必将沦为鸡肋。
(2)技术的公民化: 随着无代码和低代码平台的激增,科技行业的进入门槛大大降低。这允许未经正式编程培训的个人构建应用程序和软件,从而可能减少对传统编码专业知识的需求。
(3)不断变化的教育重点: 在人工智能和自动化占主导地位的世界中,教育将把重点从教学编码基础转向培养创造力、批判性思维和协作,这些技能在快速发展的技术环境中将超过编码能力成为重中之重。
(4)编程语言的演变: 随着编程语言变得更加直观和用户友好,传统的编码作用可能会减弱,开发人员在语法和调试上花费的时间更少,同时接受更多关于概念化和设计的信息。
(5)人机协作的整合: 随着人机界限变得模糊,可以预见这样的未来——无缝的人机交互取代了编码的需求,AI驱动的系统无需编码就可以将人类意图转化为数字行动。
反对编码消亡的一方则认为不应该忽视以下因素:
(1)人工智能和自动化的局限性: 尽管人工智能已经取得了相当大的进步,但许多复杂的任务仍然需要人类程序员独有的创造力、直觉和解决问题的技能。
(2)定制化需求: 无论无代码和低代码平台的普及程度如何,对某些个性化的定制解决方案的需求将持续存在。传统的编码技能对于制作这类应用程序仍然至关重要。
(3)不可取代的程序员角色: 无论人工智能发展得再成熟,依旧需要熟练的程序员来开发、维护和优化人工智能驱动的系统,确保编码仍然是科技行业的一项基本的傍身技能。
(4)新兴技术的复杂性: 随着技术的进步,新的编程语言、框架和平台将浮出水面,这使开发人员必须不断适应和掌握新技能。这种持续的发展表明,编码不会过时,但会与它所支持的技术一起向前发展。
(5)机器所缺乏的人情洞察: 本质上技术是满足人类需求的工具。人类程序员的同理心、理解力和情感敏锐度将作为制作软件的关键组成部分,以满足用户复杂而细微的需求。
编码到底会消失与否,在短时间内必然没有结论。但我们不妨做一个更极端的假想:一个没有编码的世界会是什么样子。在这个未知的远方,我们可能会发现自己处于一个技术已经超越代码边界的领域。
在这个世界里,软件开发变得像日常表达一样轻松。不再被编程语言所束缚,开发人员只需用简单的语言概述他们的想法,就可以利用AI的力量将他们的愿景变为现实;传统的编程教育也将会发生变化,学生将不再致力于语法和算法的细节,而是专注于更大的图景,培养创造力和批判性思维;科技行业进入传统行业的壁垒也将消失,为前所未有的创新浪潮打开大门。
曾经掌握数字王国钥匙的程序员呢?他们不会过时,反而会不断进化。他们的角色将从编码专家转变为AI驱动系统的架构师,致力于编排为社会结构提供创新源动力的自动化交响曲。
世界将成为好奇之人的游乐场,现实和想象之间的界限不再那么难以逾越,创新的唯一限制是人类创造力的阈值。
在这样极端的设想中,与其说编码消失了,不如说“隐身”了。正如GitHub首席执行官Chris Wanstrath所说:“编码的未来根本就没有编码。”立足现实这是难以想象的。但这就像智能手机出现之前我们无法想象生活可以集成在这一块小小的屏幕中一样。
编码不再是工作的重心,但它还是在某处“运转”,只是作用发生了变化。在我们能预见的可实现的未来里,人工智能和自动化实际上还是在增强人的编程能力,为开发人员和创新者打造一个灵活且不断发展的环境。
当我们回顾了历史,审视了编码之争的辩论焦点,探索了编码消亡的利弊,似乎已经可以做出结论:编码的命运似乎不是灭绝,而是转变。人工智能和自动化的兴起,以及技术公民化和编程语言的发展,无疑将重塑编码在我们社会中的作用。
然而,这些变化不是一个结束,而是一个新的开始。新旅程中,人机边界不断被重新定义,创新的范围只受到我们想象力的限制。
在这个世界上,编码不会消失,而是会适应和发展,拥抱变化的潮流。程序员不会只是历史的遗迹,而将继续塑造未来,并在指导AI发展方面发挥至关重要的作用。
当我们站在新时代的悬崖上时,我们绝不能被未知所吓倒,也不能哀悼编码的消亡。相反,我们应该接受挑战,并为重新定义人机协作的本质而感到高兴。因为正是在这个有限的空间中,代码和创造力的领域融合在一起,创新的真义才会释放出来。我们如今的冒险将继续塑造人类后代的命运。
原文链接:https://link.medium.com/h2MNlYtH5yb

我需要在客户计算机上运行Ruby应用程序。通常需要几天才能完成(复制大备份文件)。问题是如果启用sleep,它会中断应用程序。否则,计算机将持续运行数周,直到我下次访问为止。有什么方法可以防止执行期间休眠并让Windows在执行后休眠吗?欢迎任何疯狂的想法;-) 最佳答案 Here建议使用SetThreadExecutionStateWinAPI函数,使应用程序能够通知系统它正在使用中,从而防止系统在应用程序运行时进入休眠状态或关闭显示。像这样的东西:require'Win32API'ES_AWAYMODE_REQUIRED=0x0
Rackup通过Rack的默认处理程序成功运行任何Rack应用程序。例如:classRackAppdefcall(environment)['200',{'Content-Type'=>'text/html'},["Helloworld"]]endendrunRackApp.new但是当最后一行更改为使用Rack的内置CGI处理程序时,rackup给出“NoMethodErrorat/undefinedmethod`call'fornil:NilClass”:Rack::Handler::CGI.runRackApp.newRack的其他内置处理程序也提出了同样的反对意见。例如Rack
我想用ruby编写一个小的命令行实用程序并将其作为gem分发。我知道安装后,Guard、Sass和Thor等某些gem可以从命令行自行运行。为了让gem像二进制文件一样可用,我需要在我的gemspec中指定什么。 最佳答案 Gem::Specification.newdo|s|...s.executable='name_of_executable'...endhttp://docs.rubygems.org/read/chapter/20 关于ruby-在Ruby中编写命令行实用程序
我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r
刚入门rails,开始慢慢理解。有人可以解释或给我一些关于在application_controller中编码的好处或时间和原因的想法吗?有哪些用例。您如何为Rails应用程序使用应用程序Controller?我不想在那里放太多代码,因为据我了解,每个请求都会调用此Controller。这是真的? 最佳答案 ApplicationController实际上是您应用程序中的每个其他Controller都将从中继承的类(尽管这不是强制性的)。我同意不要用太多代码弄乱它并保持干净整洁的态度,尽管在某些情况下ApplicationContr
我是一个Rails初学者,但我想从我的RailsView(html.haml文件)中查看Ruby变量的内容。我试图在ruby中打印出变量(认为它会在终端中出现),但没有得到任何结果。有什么建议吗?我知道Rails调试器,但更喜欢使用inspect来打印我的变量。 最佳答案 您可以在View中使用puts方法将信息输出到服务器控制台。您应该能够在View中的任何位置使用Haml执行以下操作:-puts@my_variable.inspect 关于ruby-on-rails-如何在我的R
如何检查Ruby文件是否是通过“require”或“load”导入的,而不是简单地从命令行执行的?例如:foo.rb的内容:puts"Hello"bar.rb的内容require'foo'输出:$./foo.rbHello$./bar.rbHello基本上,我想调用bar.rb以不执行puts调用。 最佳答案 将foo.rb改为:if__FILE__==$0puts"Hello"end检查__FILE__-当前ruby文件的名称-与$0-正在运行的脚本的名称。 关于ruby-检查是否
是否可以在应用程序中包含的gem代码中知道应用程序的Rails文件系统根目录?这是gem来源的示例:moduleMyGemdefself.included(base)putsRails.root#returnnilendendActionController::Base.send:include,MyGem谢谢,抱歉我的英语不好 最佳答案 我发现解决类似问题的解决方案是使用railtie初始化程序包含我的模块。所以,在你的/lib/mygem/railtie.rbmoduleMyGemclassRailtie使用此代码,您的模块将在
前言作为一名程序员,自己的本质工作就是做程序开发,那么程序开发的时候最直接的体现就是代码,检验一个程序员技术水平的一个核心环节就是开发时候的代码能力。众所周知,程序开发的水平提升是一个循序渐进的过程,每一位程序员都是从“菜鸟”变成“大神”的,所以程序员在程序开发过程中的代码能力也是根据平时开发中的业务实践来积累和提升的。提高代码能力核心要素程序员要想提高自身代码能力,尤其是新晋程序员的代码能力有很大的提升空间的时候,需要针对性的去提高自己的代码能力。提高代码能力其实有几个比较关键的点,只要把握住这些方面,就能很好的、快速的提高自己的一部分代码能力。1、多去阅读开源项目,如有机会可以亲自参与开源