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