程序員真的會(huì)被AI取代嗎?我們?nèi)绾卫硇钥创鼳I變革之路
發(fā)布時(shí)間:2024-01-26 13:39:49
針對AI對程序員的影響,我們不應(yīng)過于悲觀和焦慮,而是要積極看待AI變革對我們產(chǎn)生的影響。只有不斷提升自己,擁抱AI,才能讓自己立于不敗之地。雖然AI 技術(shù)可能會(huì)影響程序員的部分工作,但不太可能完全取代他們。程序員應(yīng)關(guān)注技能提升和專業(yè)發(fā)展,以適應(yīng)不斷發(fā)展的技術(shù)環(huán)境。
AI 能否替代軟件?
Chat UI:適合業(yè)務(wù)導(dǎo)向的需求,例如打車、買票,用戶要的是結(jié)果,也就是最適合秘書干的活。
Traditional UI:適合體驗(yàn)導(dǎo)向的需求,例如淘寶、抖音,用戶要的是過程,秘書可以幫你買東西,但是不能代替你逛街。
Super UI:所有生產(chǎn)力工具都會(huì)增加 AI 能力,跟 AI 的交互包括但不限于聊天。
你可以把大模型比作人腦,傳統(tǒng)程序比作計(jì)算器。雖然人腦也能做加減乘除,但是人腦能取代計(jì)算器嗎?大家都知道神經(jīng)網(wǎng)絡(luò)模擬的是人腦,雖然現(xiàn)在還不能完全作證這個(gè)模擬到了什么程度,但起碼出發(fā)點(diǎn)是模擬人腦,那按理說人腦有的缺點(diǎn)大模型也會(huì)有。目前的實(shí)踐也證明了大模型不善于計(jì)算,無法精準(zhǔn)地存取信息,存在隨機(jī)性,這些恰恰也是人腦的弱點(diǎn),卻正好是傳統(tǒng)程序的強(qiáng)項(xiàng)。
所謂程序,其實(shí)就在干兩件事“數(shù)據(jù)的存儲(chǔ),數(shù)據(jù)的處理”,無它。為什么數(shù)據(jù)庫軟件這么牛逼,賺這么多錢?因?yàn)閿?shù)據(jù)的存儲(chǔ)和處理少不了數(shù)據(jù)庫。人類創(chuàng)造的大量高價(jià)值軟件都是某個(gè)行業(yè)的信息系統(tǒng),比如航空機(jī)票、鐵路調(diào)度、ERP、銀行賬戶、股票交易等,都極大地依賴數(shù)據(jù)庫以及精準(zhǔn)的數(shù)據(jù)處理。
我很難想象把 12306 干掉,放一個(gè)大模型在那里,所有人訂票都跟 12306 聊天,然后這個(gè)大模型記錄了一切。起碼在目前的 AI 范式下,這個(gè)事情不可行。所以大模型更多的是取代人腦,而非取代軟件。要讓大模型很好地工作,需要給它工具,軟件工具,正如 ChatGPT Plugins 所做的那樣。所以編程不會(huì)被終結(jié),反而會(huì)越來越重要,因?yàn)椴还庖o人做軟件,還要給 AI 做軟件。
軟件和模型的區(qū)別大致可以總結(jié)為:確定的交給程序,動(dòng)態(tài)的交給模型。但這個(gè)格局會(huì)不會(huì)發(fā)生變化?兩件事情的發(fā)生會(huì)打破這個(gè)格局:
On-deman UI,即 UI 界面可以按需實(shí)時(shí)生成。例如在和 ChatGPT 聊天過程中,它不但會(huì)用語言、圖片、視頻來回應(yīng),還可以彈出一個(gè)界面讓你做一些操作,例如在調(diào)色板上選取心儀的顏色。再比如文字編輯場景,實(shí)時(shí)生成一個(gè)編輯器讓你設(shè)置段落和文字樣式。On-deman UI 的出現(xiàn),可以根據(jù)當(dāng)下的場景,實(shí)時(shí)生成具有交互能力的界面,充分利用攝像頭、麥克風(fēng)、鍵盤鼠標(biāo)等交互能力。
Model as Database,指大模型徹底解決了“記憶力”的問題。大模型可以像數(shù)據(jù)庫一樣實(shí)時(shí)、高效、精準(zhǔn)地存取數(shù)據(jù),相當(dāng)于大模型內(nèi)置了一個(gè)數(shù)據(jù)庫,或者想象一下你的大腦內(nèi)植入了一個(gè)數(shù)據(jù)庫。
這兩個(gè)技術(shù)的出現(xiàn)可以讓我們徹底拋棄現(xiàn)有的軟件,這才是編程的終結(jié)。我不知道怎樣才能發(fā)展出這兩樣技術(shù),但起碼對于目前的 AI 而言,需要新一輪的范式升級才有可能實(shí)現(xiàn)。未來的事情 who knows,關(guān)注當(dāng)下,軟件依然重要,比以前更加重要。
AI 是否會(huì)替代程序員的工作機(jī)會(huì)?
要回答這個(gè)問題,我們得搞清楚 AI 帶來了什么——AI 是智力革命,是對智力的替代。工業(yè)革命讓英國的農(nóng)業(yè)人口從 60% 降低到 10%,信息革命讓美國的工業(yè)人口從 40% 降到了 8%。按照這個(gè)思路,如果說 AI 是智力革命,白領(lǐng)在就業(yè)市場的占比會(huì)從 60%+ 變成個(gè)位數(shù)。從這個(gè)角度說,長期來看,AI 的確會(huì)替代程序員的工作機(jī)會(huì)。
如果 AI 可以替代人,那就意味著它替代了一種生產(chǎn)要素。這對于生產(chǎn)力的影響是巨大的,將釋放更多的人類創(chuàng)造力,消滅舊崗位,創(chuàng)造新崗位,對大家的生活造成極大的影響。
GPT-4 的智力水平已經(jīng)相當(dāng)高,GPT-5 可能超越 80% 的人類智力。在這樣的背景下,問題就變成了如何讓 AI 真正去替代某一個(gè)工種。但當(dāng)前來看,AI 技術(shù)仍然更偏向于輔助者,而非驅(qū)動(dòng)者。市場上出現(xiàn)的完全由 AI 構(gòu)建應(yīng)用的產(chǎn)品,仍停留在玩具階段。而輔助型的 AI 助手則更加成熟,如 GitHub Copilot,這樣的工具并不能替代程序員,只能作為生產(chǎn)工具的增益,無法替代生產(chǎn)力本身。
LLM 能力本身提高
Semantic Kernel 團(tuán)隊(duì)曾總結(jié)過:人類覺得有困難的工作,對于 LLM 同樣困難。這點(diǎn)出了 LLM 的本質(zhì):一個(gè)類似于人腦,可以理解意圖、代替腦力勞動(dòng)的工具。那這個(gè)人腦本身的水平,自然限制了其是否可以在復(fù)雜場景下處理復(fù)雜問題。
對于復(fù)雜應(yīng)用來說,LLM 需要在如下三個(gè)方面達(dá)到一定標(biāo)準(zhǔn):
1. Context Length(上下文長度)
上下文長度可以說是新時(shí)代的內(nèi)存。正是因?yàn)樯舷挛拈L度不夠,所以目前構(gòu)建 LLM 應(yīng)用需要各種復(fù)雜的 Prompt Engineering(提示工程)來做各種召回、切換、調(diào)度等工作,有點(diǎn)像當(dāng)年的虛擬內(nèi)存。但同樣的上下文長度,質(zhì)量卻是不一樣的。不能光看模型聲明的上下文長度,而要實(shí)測有效的上下文長度。例如,GPT-4 默認(rèn)的上下文長度是 8K,但也有 32K 版本。在實(shí)際測試時(shí),會(huì)發(fā)現(xiàn) 32K 版本在上下文超過 8K 的情況下能力驟降,很多內(nèi)容會(huì)被忽略。我理解這是 LLM 的注意力不夠?qū)е碌?,額外的上下文長度沒有意義。所以 Context-Length 這個(gè)指標(biāo)核心考察的是該 LLM 的有效上下文長度,得分越高說明處理長文本的能力越強(qiáng)。
2. Reasoning Depth(推理深度)
推理深度可以理解為 LLM 的“聰明”程度,能否舉一反三、理解隱含意圖、基于中間答案推斷出最終答案。比如:
You are an AI software requirement analyst. Please make a judgement if the following requirements needs persistent storage. YES or NO, no explanations. Requirements: I want to hold a party tomorrow night. Please send invitation emails to my friends. My friends emails: Ella: ella@gmail.com, jack: jack@gmail.com.
In the email, give them a link that shows a web page, ask them what kind of alcohol they prefer, whisky, wine or beer. I also need a web page to see their choices.
這是一個(gè)簡單的信息收集應(yīng)用的需求,在需求描述中是沒有提到存儲(chǔ)或者數(shù)據(jù)庫這樣的字眼,但是實(shí)現(xiàn)這個(gè)應(yīng)用需要用到存儲(chǔ)或者數(shù)據(jù)庫。這就要求 LLM 理解這個(gè)需求的意圖,并且推斷實(shí)現(xiàn)這個(gè)意圖必須有持久化的存儲(chǔ),正確答案是 YES。
3. Instruction Compliance(指令遵循)
指令遵循可以理解為 LLM 聽話的程度。跟 LLM 打交道的過程中往往會(huì)遇到你讓它不要干啥,但它壓根不理你,還是會(huì)輸出一些你不想要的內(nèi)容的情況。比如你跟它說不能討論政治,但在聊天過程中還是會(huì)回答政治相關(guān)的問題。我們還是拿上面那個(gè)信息收集的應(yīng)用舉例。我們在 Prompt 中明確了回答只要 YES or NO,但是我們來看看 LLM 的表現(xiàn):
可以看到 Claude 的理解是對的,但答案的格式是錯(cuò)的,也就是沒有按照我們的指令生成答案。
指令遵循的能力是 LLM 結(jié)構(gòu)化輸出的基礎(chǔ),例如輸出 YAML 或者 JSON。如果這個(gè)能力不好,不按照格式要求輸出,會(huì)導(dǎo)致輸出結(jié)果很難被下游的程序所使用。所以 Instruction Compliance 這個(gè)指標(biāo)得分越高,說明 LLM 結(jié)構(gòu)化輸出的能力越好。
以上是在構(gòu)建復(fù)雜應(yīng)用的場景中必備的三個(gè)能力,恰好對應(yīng)了“輸入-處理-輸出”三個(gè)環(huán)節(jié),任何一項(xiàng)的薄弱都會(huì)導(dǎo)致很難實(shí)際使用這個(gè) LLM。所以 LLM 能力本身的大發(fā)展,是可以替代人的基礎(chǔ)。
工作內(nèi)容 DSL 化
當(dāng)我們提到 LLM 在工業(yè)代替人進(jìn)行工作時(shí),除了和人打交道,往往還要和具體行業(yè)的知識、數(shù)據(jù)、系統(tǒng)進(jìn)行交互。給 LLM 灌輸行業(yè)知識,當(dāng)前有兩種方式,一種是 Fine Tuning(微調(diào)),另外一種是 Prompt Engineering。就目前實(shí)際的行業(yè)發(fā)展而言,F(xiàn)ine Tuning 還未形成共識,并且成本巨高,實(shí)際目前的大量應(yīng)用都是基于 Prompt Engineering 做的——當(dāng)前世界上應(yīng)用最廣泛的模型 GPT-4 并不提供 Fine Tuning 的選項(xiàng)。
但無論是 Fine Tuning 還是 Prompt 工程,都對結(jié)構(gòu)化數(shù)據(jù)有一定要求。這方面我認(rèn)為最值得參考的是微軟的一篇論文,來自 Office Copilot 團(tuán)隊(duì)所著的“Natural Language Commanding via Program Synthesis”,這篇論文提到的工程實(shí)踐有一個(gè)核心點(diǎn)就是 ODSL(Office DSL),是 Office 團(tuán)隊(duì)為這個(gè)場景定制的一套 DSL(領(lǐng)域特定語言),這也是控制大模型輸出的主要手段,就是結(jié)構(gòu)化,事實(shí)證明“大模型喜歡結(jié)構(gòu)化”。
成熟的、給 AI 設(shè)計(jì)的工具
盡管人類和人工智能(AI)都擁有一定的智力能力,但在現(xiàn)階段,大多數(shù)產(chǎn)品設(shè)計(jì)仍然以人類為中心,而非 AI。
以協(xié)作為例,單個(gè)人的工作能力有其天然的限制,因此需要與他人協(xié)同合作。這就導(dǎo)致了人類工作的異步性。在軟件工程領(lǐng)域,我們使用 Git 這樣的工具來解決異步協(xié)作帶來的問題。
再比如,任何一個(gè)工程項(xiàng)目都需要經(jīng)過生產(chǎn)和測試兩個(gè)環(huán)節(jié)??紤]到確保工作的誠信性,通常我們不會(huì)讓生產(chǎn)者和測試者是同一個(gè)人。但你完全可以讓一個(gè) AI 同時(shí)進(jìn)行生產(chǎn)和測試,因?yàn)?AI 本身不存在誠信問題。
此外,人類和 AI 在交互方式上也存在著顯著差異。比如,大部分的軟件操作都需要使用鼠標(biāo),因?yàn)檫@種人類和 AI 在輸入和輸出(I/O)方式上的區(qū)別,導(dǎo)致 AI 其實(shí)很難操作現(xiàn)有的軟件。
小結(jié)
AI 未來會(huì)怎樣,沒有辦法預(yù)知,但是可以確定,它目前的編碼水平不會(huì)威脅到程序員。
雖然現(xiàn)在的情況不太好,但等過了低谷期,經(jīng)濟(jì)恢復(fù)了,程序員的需求就會(huì)上升。
你的工作今年是有保障的。如果你努力的話,明年也是有保障的,而且很可能從此都是有保障的。因?yàn)槿绻恢辈粩鄬W(xué)習(xí) AI,你會(huì)越來越熟練地掌握它,讓它為你工作,達(dá)到你的目的。也就是說,它會(huì)放大你的生產(chǎn)力。這就是很關(guān)鍵的地方,AI 與人類不是競爭關(guān)系,
它未必會(huì)減少機(jī)會(huì),反而可能帶來更多的機(jī)會(huì)。
因此,當(dāng)前AI的編碼水平不會(huì)對程序員構(gòu)成威脅,并且通過不斷學(xué)習(xí)和掌握AI的使用方法,可以將其作為工具來提高生產(chǎn)力。
以上為本次所有分享內(nèi)容
關(guān)注“盛圖科技”公眾號
私信“寒假編程訓(xùn)練營”即可免費(fèi)報(bào)名參加!