谷歌最新的代码中,居然有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讨论群。也欢迎有兴趣、有能力的朋友加入我们的付费频道。再见。
Both comments and pings are currently closed.