谷歌代码1/4由AI生成:程序员的失业危机即将到来还是杞人忧天?
11 月 06
AIGC, Google的故事 AIGC工具, AI代码生成, AI合成, AI和人类, AI审校, AI工具, AI工程, AI延伸, AI替代, AI算法, AI编程, AI编程工具, AI编辑, AI计算, AI设计, AI语音, Facebook Copilot, Github Copilot, IT行业趋势, Microsoft GitHub, OWL编码, 临界点, 云端数据库, 产品向程序员, 人工与AI, 人工智能, 人工码农, 代码合并, 代码库, 代码统计, 代码自动化, 分子系统, 制度改变, 前端程序员, 失业危机, 安全认证, 对话窗口, 岗位替代, 工具使用, 工具差异, 工具选择, 市场竞争, 开发工具, 开发者指南, 技术应用, 技术更新, 技术革新, 接口代码, 数字化, 数据分析, 数据生成, 文生图工具, 文科生编程, 未来挑战, 未来科技, 消费者吸引, 用户需求, 界面代码, 界面规划, 百度AI, 程序员失业, 程序需求, 算法代码, 算法程序员, 类库, 类目优化, 系统连接, 编程创新, 编程学习, 编程技术, 编程效率, 编程教育, 编程未来, 编程简化, 美术AI, 职业前景, 自动化, 自动补全, 行业发展, 行业变革, 行为艺术, 计算机革命, 设计师AI, 谷歌AI, 谷歌代码, 进阶编码, 逻辑代码, 阿里AI 谷歌代码1/4由AI生成:程序员的失业危机即将到来还是杞人忧天?已关闭评论
谷歌最新的代码中,居然有1/4是由AI写的,这到底是不是真的?程序员是不是又要失业了?大家好,欢迎收听老范讲故事的YouTube频道,咱们来讲一讲谷歌代码的事情。
首先,上面这个消息是哪来的?谷歌在发布三季度财报的时候,开了一个电话会议,由Alphabet的CEO皮彩直接在财报电话会议上讲的。他说我们现在至少有1/4的代码是由AI生成的。人干嘛去了呢?读这些代码,然后再把它确认入库,就像是AI建议大夫怎么开药,大夫开完药以后要在下面签名字一样。现在他是这么来工作的。
其实现在各个公司都在讲这个事情,百度宣称他们的代码里头有27%是由AI生成的,阿里呢,宣称他们最新的代码里头大概有20%是由AI生成的。当然,这个里头,百度应该是在骗人。
那你说为啥呀?有25%的,有20%的,有27%的,咋这27的就骗人了呢?大家要注意,甭管是谷歌说的至少1/4,还是阿里说的20左右,这个数其实都是一个大约的数字,或者说是一个概念性的数字。而这个里面,一旦提到一个很具体的数字,比如像27%这种数,那么这个数通常不会是真的,因为你很难去统计到底哪一行代码、哪一个字符是由AI生成的。你到底是按照行数,还是按字符数,还是按照什么样的方式来去统计比例,这个事情其实是没有一定之规的。
所以真正能够去验证说代码到底有多少是由AI写的,只有一个方法:你开除了多少程序员。原来10个程序员写代码,现在剩8个了,那你20%代码是AI写的;原来5个程序员写代码,现在剩4个了,开了一个,那你25%的代码是由AI写的。那这个里头,你到底能不能算到一个27%这样的一个有零有整的数据呢?这个大概率在骗人。
那咱们讲到开人的事情了,谷歌的程序员肯定就不乐意了嘛,上来说:“我们不承认这个事,你凭什么说我们25%的工作都是由AI做的?这不行,你是要降薪呢,还是要裁员?咱得把话说清楚,咱不能随便一张嘴就来这个事。”
当然,谷歌说这个话,包括百度、阿里说这个话,咱们能够理解他。为什么?因为人家是要靠AI来挣钱的。如果你自己不在身上贴个标签来,我也用AI了,你怎么好意思把AI的产品卖给别人呢?所以这个话人家还要说。其实,真正在里头挣到最多钱,或者说用户量最大的那个产品,他们公司啥也没说。最大的产品是谁?是微软的GitHub Copilot,这个是AI编程工具里的老大。但是微软从来没有出来说过,我们家百分之多少的代码是由AI写的。这已经不需要去争辩了。
其他需要追赶的厂商,挨个儿要出来说。当然,百度呢,属于是想去吹个牛,结果还没吹好的那种。人家20%、25%,他整了27%,稍微有些丢人。那么,从程序员的角度上来说,到底有多少代码是由AI生成的呢?因为我自己也是程序员,虽然现在只能算业余程序员。当然,有了AI编程以后,我觉得我这个业余程序员又行了。现在我的编程能力蹭蹭蹭的往上涨,我现在可以去学习一些原来不会的编程技术,因为我并不需要把一本书看完了。我只需要问GitHub一些问题,然后到VS Code里头用GitHub Copilot,就可以去进行新技术的使用,去编程去了。这还是非常开心的一件事情。
我们要去衡量,到底有多少代码是由AI自动生成的,这件事本身其实没什么意义。为什么呢?很早的时候,我应该是在2007年,在Borland的公司任职的时候,当时我们的开发工具里头就有这种代码自动补全的功能。只是当时的代码自动补全,它是根据你整个项目的编译结果来进行补全的。但是他的补全也不像现在这样,你可以补出一个完整的函数来,或者补出一整段代码来。他能干嘛呢?就是当你去一个地方,说我现在要补全这一个单词后半截,他是可以做到的;或者是说我需要去填参数,需要去填空的时候,他会给你一个比较好的建议,比如说,这里应该是填一个什么样的参数,什么类型的,你前面有没有定义过这样的东西。
可能是哪个哪几个里面去挑一个。他可以把这个约束条件收束得比较紧,然后让你一次性命中,或者可能一两次就可以命中。你真正要去填的这个东西,已经可以极大地提升效率了。这是在很早就开始有的。而且我们写程序这件事呢,我们经常干这种叫“一句顶一万句”的事情。
什么叫“一句顶一万句”?前两天跟一个语言学家去聊天的时候,他给我讲了一个事情。我们问他说,语言发展的方向是什么?人类语言发展的方向是什么?他给我们讲说,全人类的语言发展方向都是变得越来越简单。因为像西班牙语、俄语这种又非常复杂的各种格式的语言,现在都在变得越来越简单。因为你要交流、要沟通嘛。而且会有越来越多的这种代词,会有一些新的词汇产生。这些词汇可能原来会有一个很复杂的意思,他就用一个缩写,或者用一个很简单的词就给你带过了。
它是这样的一个发展趋势。人类可能说的话始终就是这么多,但是呢,我们这个话语里边所表达的含义,会变得越来越丰富,信息密集度越来越高。而且在这个过程中呢,各种对格式的要求会变得越来越低。当时他讲完那个故事以后,我就想起了我们程序员的一句顶一万句了。
我们使用的叫类库(class library)。原来你要去写程序的时候,你要写说:“我在屏幕上哪个点画一个红色,画一个绿色,下一个点再画一个什么颜色,拼起来是个按钮或是什么样的。”以前你要这么来写程序,但是现在的话,我们只需要告诉他说:“请给我画一个按钮,下头有个阴影,什么样的字体,给我写什么字上去就完事了。”那中间执行的部分都是谁来执行的呢?就是类库来执行。
你下一次说:“我连这个按钮具体想摆在什么地方我都不想告诉你了。”那你可以告诉他什么呢?你说:“请给我按照横向平均排列,比如三个按钮横着了。”他给你均匀地排开,或者你给我按照纵向什么排列。为什么我们后来这么写程序,不再告诉他你给我从左上右下去写?这个其实很简单,因为我们后面面临的各种设备越来越多,各种设备的分辨率是不一样的。
你如果每一次都写死了,说请给我从左边哪个点开始画,上面哪个点开始画,右下哪个点结束。你换到不同的设备上,长的位置不一样。所以我们后来都是改成说,请按照一个比例,给我画在一个什么位置上。那甭管你用什么样分辨率的设备,我们都保证这个按钮是在一个相应的比例的位置上。基本上是一句顶一万句。
那你要这样算的话,我们可能写了几百行的一个代码,但是呢,实际上这个代码编译了以后,可能有几十万行,或者有几百万行,因为你每一句后边,可能都调用了非常多的底层程序去工作。所以你说我来算一下,到底有多少代码是由人写的,有多少代码是由AI写的,或者人写的多少代码去调用了AI写的多少代码,或者AI写的多少代码去调用了人写的多少代码,这个事其实是没有什么意义的。
所以为什么我说百度,这个稍微有点夸张,27%算的还有零有整了。那么到底什么样的代码适合AI生成呢?有各种各样的地方都可以写代码。你说C代码适合AI生成,Python代码适合AI生成,Java代码适合AI生成,这个都没有什么意义。现在呢,AI代码生成器是我们常用的代码,都是可以生成的。
那么到底什么样的代码更适合AI生成,应该怎么去分类呢?我们分成四类:界面代码、逻辑代码、算法代码和接口代码。一般写程序大概率就是这4种东西。
什么叫界面代码?就是刚才我描述的,哪个地方写一个按钮,按钮什么颜色,字是多大字,字体什么样的,字写什么颜色,摁了以后该怎么办,这个东西呢就叫做界面代码。
哪一部分叫逻辑代码呢?逻辑代码就是,比如说你现在要去做一笔交易,这个交易我应该先确认一下库存够不够,然后确认库存够了以后,我在库存里扣除你的钱,把东西发快递发给你,然后把钱存到我自己账户里去。这一部分呢叫逻辑。
然后呢,算法代码,比如说我现在需要做个排序,需要做个查找,需要做一个很复杂的分类,这个东西呢就属于叫算法。特别是像现在做AI算法这一块,要求会越来越高。
还有一块程序叫接口程序。接口程序干嘛呢?比如说,我今天要使用谷歌的账号来进行登录,我就需要去查一下谷歌的文档,谷歌账户登录的这个API应该怎么去写。我应该先到谷歌哪个地方去申请这个权限。申请好权限以后,得到一个叫做TOKEN的东西。然后呢,再把这个TOKEN放到我们自己代码里去,按照谷歌的文档去调用某一个接口,把TOKEN放上去,说明现在我要用这个TOKEN,然后用谷歌的账号去登录。
得到了谷歌账号登录以后的一个凭证,之后我们在网上做各种操作的时候,就可以使用谷歌账号登录以后的凭证,再去申请各种各样的权利。这部分呢,实际上就属于接口代码。这四个里面,逻辑代码跟算法代码相对来说没有那么容易被替代,而剩下两部分,界面代码跟接口代码呢,相对来说是比较容易被AI所取代的。
而接口代码呢,是更容易被AI取代的。为什么呢?因为你不需要好看的界面代码,界面好不好看这件事是要靠人来看的,这个事情你没法完全被AI取代。但是接口代码是可以完全被AI取代的。像刚才我们讲的百度、阿里、谷歌,他们所使用的代码里头,接口代码的数量占比是比较高的。像公司内部这么多的分子系统,需要跟公司外部的各种系统去连接,所以他们需要大量的接口代码,这部分完完全全都可以交给AI去处理,而且AI会处理得非常好。
你不需要去看文档了。比如说,我举一个例子,我前两天希望在我的一个程序里边使用谷歌家的Firebase这种大数据库。原来你需要干嘛?看文档,看各种的接口,再进行一步一步的配置。因为你可以直接从Web端访问这种云端数据库,所以它在安全处理上做了非常多的认证,这不是那么容易的。我就交给AI了,我说我现在要干这个事情怎么办。它说,行吧,我给你搞定吧。你第一步先到谷歌那去申请这个授权。我说申请完了,那行了。然后它说,下面我们去执行哪一个命令。
这个命令就可以自动化地帮你做完所有的配置。然后我就开始做这个命令,做完了以后说,谷歌上你申请了哪些项目?你现在想把你这一个APP所使用的数据库挂在哪个项目的授权里头去。然后只要选一下,剩下都不用管了。他在问你说,你这个应用是要在Mac OS、Windows、iOS、安卓、Web,需在哪些端跑。先是打勾,打完勾以后,一按确认,他就呲咔嚓嚓嚓咔给你去搞去了。可能在这个过程中,他就生成了几百行、上千行代码,把所有的配置给你做完。这就是挺好的事情嘛。
现在呢,有非常多的成熟的AI编程工具。我最早使用的AIGC工具实际上就是Github Copilot,它就是AI编程工具,非常好用。现在呢,我自己个人使用最多的AI变声工具还是GitHub Copilot,那没办法,我交了100美金给他,我总要把这一年使完。虽然很多人都说Cursor好用,我也确实用了一段时间,在他给我的免费试用期里试了一下。但是现在看来呢,我觉得Github Copilot还是很好用的,可以把Cursor基本上扔掉了。为什么呢?就是底层的模型还是做得很好的嘛。
你像Cursor自己,底层的模型也是用的GPT-4O,GPT-4O MINI,用的GPT-o1以及Cloud 3.5 Sunnet。现在Github Copilot也是把所有的模型都扔进去了,而且下一步可能还会去开Gemini 1.5 Pro这样的模型进去。他的所有功能又非常完善,我觉得Github Copilot还是可以再战几年的。而且Cursor再怎么着,他需要20美金一个月,他一个月要找我多收10美金,还是觉得稍微有些心疼。
国内呢,有一大堆免费的产品,比如说阿里的通义零码,百度的叫文新快码,质朴的叫Codegeex,字节叫MARSCODE,就是火星代码。这些都不要钱,免费的大家可以随意去使用,效果呢其实都还可以。我用过字节的MARSCODE。
其他几个用的不多,基本上可以满足大家的需求。现在所有的这些工具做的,使用的方式都差不多。你只要向它提出要求,说我想去做什么,什么事情都是有聊天窗口。你直接提完要求以后,它给你生成代码。生成完代码以后呢,你只要说:“哎,我现在需要去进行合并了。”它就把新生成的代码直接跟你原来的代码进行比较。合并完了以后告诉你:“哎,这我给你加点什么,那给你改点什么。”你只要去确认就行了。确认完了以后,这些代码就合并到自己的代码库里边去。
或者说你直接在代码库里边打字的时候,它也会根据当前的情况给你做一些建议,使用方法都很像。另外呢,所有的工具都有代码解释。什么叫代码解释?就是你选中一段代码,问:“给我讲讲这段代码说什么。”以及改错误。遇到错误了,或者有什么错误信息出来以后,把这些东西扔给这些大模型的聊天窗口,问:“这到底咋回事,我应该咋改?”所有这些功能差不多,但也都有很多不方便的地方。
你比如说,我最近在学习一个新的开发环境,叫 Next.js,算是一个前端加后端的开发工具吧。实际上都是错的,因为分很多版本,不同的版本之间有不同的约束。每一次在回答问题的时候,它就忘记了你前面的约束是什么,然后就给你一些错误的代码。现在请给我把错误改掉,它也都给你改的没有问题,能给你改过来。但是你下次再要求它生成的时候,还是会有一些错误。你说:“哎,现在再去给我把这些错误都改了,通通通给我改回来。”这是可以工作的,但还没有那么顺畅。
那么程序员是不是又要失业了呢?百度的李彦宏就讲过说:“再过多少年就没有程序员这个职业了。”当时还引出周鸿祎以及一大堆的行业老大跟他对喷。那么程序员是不是又要没有工作了?这个里头呢还差那么一点点。现在那到底差在哪一点上呢?这个临界点到底是什么呢?临界点就是如果你完全没有受过编程训练,这些工具你使不了。什么意思?你说:“我就是个文科生,我这个程序一点都不懂,完全不知道。”
这个程序的架构是什么样的?什么叫面向对象?什么叫函数式编程?什么叫顺序编程?这些东西,比如说你都不了解,那所有刚才咱们讲的那些工具,就跟你都没啥关系了。等真到哪一天能够达到说“端到端,上帝说要有光,于是就有了光”的时候,那那个时候程序员就真的失业了。现在还不行,你还是需要经受编程教育,才可以使用刚才我们说的这些工具。
那你说这个临界点,是不是在近期就可以快速被突破呢?嗯,可以说是,也可以说不是。为什么呢?因为你去想一下,说你用嘴去描述一个应用需求的时候,你能说得清楚吗?有一些简单的通用化的需求,你可能能够快速地用嘴把它说清楚。对于这一部分来说呢,程序员确实没什么用了,你只要告诉他:“我现在想要什么东西”,马上就交给你了,这个事是可以的。但是所有的复杂需求,你用嘴一句说不清楚的,或者需要很多人去一起才能把一个事情定义明白的这种需求,这一部分呢,短期内或者说在相当长的一段时间内,这个临界点都是过不去的。
所以为什么说既是又不是呢?就是看你的需求到底是有多简单,还是多复杂。昨天还有一个朋友说:“哎呀,我想去学一下编程,想做一些应用。”后来我说:“你想干嘛?”然后提出来的那个应用的需求叫复杂呀。我说:“你再好好想想,你要看什么?你又没学过编程,何必要跟自己过不去呢?”
那么现在学习编程还有必要吗?还来得及吗?首先,现在还是建议大家去学习一下,只是呢,学法可能需要调整一下。就不需要像我当年上大学那么个学法了,我们可能只需要学一些基础知识,剩下的交给AI就完事了。我们上大学的时候,大量东西需要背,记忆这种事情,计算机永远比人强。所以未来计算机编程,肯定也是需要新的教学方式的。
再往后一个问题,什么样的程序员最容易失业呢?第一个,产品向的程序员其实是可以大展拳脚的。什么叫产品向程序员?就是他知道我做这个东西是为什么,我到底在解决一个什么具体的产品需求,而且可以去跟真正的需求方进行讨论,去确定产品需求的这些人。
或者说,他有一部分产品经历,职能的这些程序员,对于他们来说呢,未来大有可为。为什么呢?就是原来他们沟通明白了以后,还需要跟一些编码的程序员再去沟通,再去写一大堆程序,而且这个沟通成本还很高。
现在的话,他们只需要把前期的需求搞明白了,后面他自己就可以在AI的帮助下,快速地完成大量的代码了。然后,算法向的程序员呢,这个其实永远都不够用。你只要是能够把算法的效能提高一些,把一些原来做不了的事情能够做掉,这一块的需求是非常大的,特别是在AI时代,这一块的需求会变得更大。
那你说前端程序员呢?前端程序员,未来应该会更多地被设计师所替代。就是我能把画画出来了,那你这个程序就算写完了,不需要再通过这个画再怎么切,切完了以后再怎么一块一块拼起来。这一块其实就不太需要了。
因为以前我们去写程序的时候,都是先让设计师设计,设计完了以后呢,我们在写程序的时候,再把这个设计的稿件搬到这个程序的表达上面去,原来有这样的一个过程。以后呢,就不需要了,直接设计师就完事了。
当然,设计师说我也烦这了,别来烦我。设计师烦什么呢?这边还有文生图的很多模型,mid journey、达利,还有一大堆这样的模型,我都快失业了,你们不要来烦我。可能是未来会有一个过渡吧,有一段时间还是需要他们的。
等过完这一段时间以后呢,更多的可能是需要他们提出想法,然后再把大量的文生图所产生的结果进行判断,我到底要哪个,不要哪一个,或者拿到一些文生图的结果以后进行一些精修,这可能是未来的一个方向。
现在已经有一些公司里边出现这种岗位了,就是给机器人打工。机器干完了以后,这个图出来了,让美术去修这个图。原来一个美术可能还能挣个一万多块钱,没准只做得好的能有两三万。现在这种给AI修图的美术的话,一个月的薪水大概也就只剩五六千了。
原来写接插件的这些程序员,很多程序员原来是给接口写程序的,这些程序员呢,以后应该重新找找新出路了。
也只能言尽于此了。对于整个程序员行业来说,现在真正需要做的事情,不是说我到底应该向产品向程序员发展,是向前端程序员发展,还是说我应该去做一些算法,不是这个事情,而是什么呢?应该要找出更多的需求来。如果整个程序的需求量不上升的话,那么大量的程序员失业,这件事情是不可避免的。
所以现在呢,还是要去看看,我们到底能够用AI配合程序员做点什么事,这个是需要现在去思考的。未来AI程序的占比呢,一定会越来越高,甭管现在谷歌说的至少1/4,阿里说的20%,还是百度说的27%,未来这个数一定会越来越高的。而且程序员呢,也不像是很多设计师似的,一定要用笔画,没有这支笔了,我就失去灵魂了。程序员从来不讲究这种事情。
现在欧美的程序员已经大量的开始使用GitHub Copilot这样的AI编程工具,国内的我相信也是如此。你说我就不用这个玩意,除非你最后变成行为艺术,否则真的没有任何意义。人以后真正需要做的事情是什么?不是看代码,改代码,不是这些事情。人以后真正需要做的事情,叫提出问题。我到底要解决一个什么问题?我希望通过什么样的方式解决?我需要规避哪些东西?这个是人真正需要干的活。
然后呢,是检查结果。AI拿出来结果以后,你要去检查一下,是不是很好的依从了你前面的提示,还是说你前面的提示本身有一些什么样的问题?是不是有一些代码拼接接口的地方,有不合适的地方?有不合适的,我们就再拿出来修改一下,或者说再告诉AI说这里不对,再给我改一改。就哪怕我自己不会改也是如此。
你像我现在使用新的编程技术去写程序的时候,这个编程技术我除了一些大的逻辑清晰之外,其他的所有细节我都不知道。报的所有错误,都是人给GitHub Copilot说来给我改一下,出什么毛病了,在这个地方我希望怎么个改法,他就去给我认真的修改。只是比较费劲的就是屡教不改,这次犯了错误,下次接着犯,这次是改正了以后,下次接着改。
这个是让人稍微有一些烦恼。所以,人呢,就是提出问题,检查结果,最终再把一些新的问题处理掉。这就是人以后干的事情,找到更多的需求,才是避免大面积失业的一个唯一途径。我觉得现在咱们不用去纠结,到底是有多少代码是由AI写的,这个没有任何意义。
好,这就是今天跟大家讲的故事。感谢大家收听,请帮忙点赞,点小铃铛,参加Discord讨论群。也欢迎有兴趣、有能力的朋友加入我们的付费频道。再见。