Hi,您好,歡迎來到西安天任軟件科技有限責任公司!

程序員(yuán)真的會被AI取代嗎(ma)?我們如何理性看待AI變革之路

發布時間:2024-01-26 13:39:49


針對AI對程序員(yuán)的影響,我們不應過于悲觀和焦慮,而是(shì)要積極看待AI變革對我們産生的影響。隻有不斷提升自己,擁抱AI,才能讓自己立于不敗之地。雖然AI 技術可能會影響程序員(yuán)的部分工作,但(dàn)不太可能完全取代他們。程序員(yuán)應關注技能提升和專業發展,以适應不斷發展的技術環境。

AI 能否替代軟件?

你可以把大模型比作人腦,傳統程序比作計算器。雖然人腦也能做加減乘除,但(dàn)是(shì)人腦能取代計算器嗎(ma)?大家都知(zhī)道神經網絡模拟的是(shì)人腦,雖然現(xiàn)在還不能完全作證這個模拟到了什麽程度,但(dàn)起碼出發點是(shì)模拟人腦,那按理說人腦有的缺點大模型也會有。目前的實踐也證明了大模型不善于計算,無法精準地存取信息,存在随機性,這些恰恰也是(shì)人腦的弱點,卻正好是(shì)傳統程序的強項

所謂程序,其實就在幹兩件事“數據的存儲,數據的處理”,無它。爲什麽數據庫軟件這麽牛逼,賺這麽多錢?因爲數據的存儲和處理少不了數據庫。人類創造的大量高價值軟件都是(shì)某個行業的信息系統,比如航空機票(piào)、鐵路調度、ERP、銀行賬戶、股票(piào)交易等,都極大地依賴數據庫以及精準的數據處理。

我很難想象把 12306 幹掉,放(fàng)一個大模型在那裏,所有人訂票(piào)都跟 12306 聊天,然後這個大模型記錄了一切。起碼在目前的 AI 範式下,這個事情不可行。所以大模型更多的是(shì)取代人腦,而非取代軟件。要讓大模型很好地工作,需要給它工具,軟件工具,正如 ChatGPT Plugins 所做的那樣。所以編程不會被終結,反而會越來越重要,因爲不光要給人做軟件,還要給 AI 做軟件

軟件和模型的區别大緻可以總結爲:确定的交給程序,動态的交給模型。但(dàn)這個格局會不會發生變化?兩件事情的發生會打破這個格局:


這兩個技術的出現(xiàn)可以讓我們徹底抛棄現(xiàn)有的軟件,這才是(shì)編程的終結。我不知(zhī)道怎樣才能發展出這兩樣技術,但(dàn)起碼對于目前的 AI 而言,需要新一輪的範式升級才有可能實現(xiàn)。未來的事情 who knows,關注當下,軟件依然重要,比以前更加重要。

AI 是(shì)否會替代程序員(yuán)的工作機會?

要回答這個問題,我們得搞清楚 AI 帶來了什麽——AI 是(shì)智力革命,是(shì)對智力的替代。工業革命讓英國的農業人口從 60% 降低到 10%,信息革命讓美國的工業人口從 40% 降到了 8%。按照這個思路,如果說 AI 是(shì)智力革命,白領在就業市場的占比會從 60%+ 變成個位數。從這個角度說,長期來看,AI 的确會替代程序員(yuán)的工作機會。

如果 AI 可以替代人,那就意味着它替代了一種生産要素。這對于生産力的影響是(shì)巨大的,将釋放(fàng)更多的人類創造力,消滅舊(jiù)崗位,創造新崗位,對大家的生活造成極大的影響。

GPT-4 的智力水平已經相(xiàng)當高,GPT-5 可能超越 80% 的人類智力。在這樣的背景下,問題就變成了如何讓 AI 真正去(qù)替代某一個工種。但(dàn)當前來看,AI 技術仍然更偏向于輔助者,而非驅動者。市場上出現(xiàn)的完全由 AI 構建應用的産品,仍停留在玩(wán)具階段。而輔助型的 AI 助手則更加成熟,如 GitHub Copilot,這樣的工具并不能替代程序員(yuán),隻能作爲生産工具的增益,無法替代生産力本身。

Semantic Kernel 團隊曾總結過:人類覺得有困難的工作,對于 LLM 同樣困難。這點出了 LLM 的本質:一個類似于人腦,可以理解意圖、代替腦力勞動的工具。那這個人腦本身的水平,自然限制了其是(shì)否可以在複雜(zá)場景下處理複雜(zá)問題。

對于複雜(zá)應用來說,LLM 需要在如下三個方面達到一定标準:

1. Context Length(上下文長度)

上下文長度可以說是(shì)新時代的内存。正是(shì)因爲上下文長度不夠,所以目前構建 LLM 應用需要各種複雜(zá)的 Prompt Engineering(提示工程)來做各種召回、切換、調度等工作,有點像當年的虛拟内存。但(dàn)同樣的上下文長度,質量卻是(shì)不一樣的。不能光看模型聲明的上下文長度,而要實測有效的上下文長度。例如,GPT-4 默認的上下文長度是(shì) 8K,但(dàn)也有 32K 版本。在實際測試時,會發現(xiàn) 32K 版本在上下文超過 8K 的情況下能力驟降,很多内容會被忽略。我理解這是(shì) LLM 的注意力不夠導緻的,額外的上下文長度沒有意義。所以 Context-Length 這個指标核心考察的是(shì)該 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.

這是(shì)一個簡單的信息收集應用的需求,在需求描述中是(shì)沒有提到存儲或者數據庫這樣的字眼,但(dàn)是(shì)實現(xiàn)這個應用需要用到存儲或者數據庫。這就要求 LLM 理解這個需求的意圖,并且推斷實現(xiàn)這個意圖必須有持久化的存儲,正确答案是(shì) YES。

3. Instruction Compliance(指令遵循)

指令遵循可以理解爲 LLM 聽(tīng)話(huà)的程度。跟 LLM 打交道的過程中往往會遇到你讓它不要幹啥,但(dàn)它壓根不理你,還是(shì)會輸出一些你不想要的内容的情況。比如你跟它說不能讨論政治,但(dàn)在聊天過程中還是(shì)會回答政治相(xiàng)關的問題。我們還是(shì)拿上面那個信息收集的應用舉例。我們在 Prompt 中明确了回答隻要 YES or NO,但(dàn)是(shì)我們來看看 LLM 的表現(xiàn)

可以看到 Claude 的理解是(shì)對的,但(dàn)答案的格式是(shì)錯的,也就是(shì)沒有按照我們的指令生成答案。

指令遵循的能力是(shì) LLM 結構化輸出的基礎,例如輸出 YAML 或者 JSON。如果這個能力不好,不按照格式要求輸出,會導緻輸出結果很難被下遊的程序所使用。所以 Instruction Compliance 這個指标得分越高,說明 LLM 結構化輸出的能力越好。

以上是(shì)在構建複雜(zá)應用的場景中必備的三個能力,恰好對應了“輸入-處理-輸出”三個環節,任何一項的薄弱都會導緻很難實際使用這個 LLM。所以 LLM 能力本身的大發展,是(shì)可以替代人的基礎。

當我們提到 LLM 在工業代替人進行工作時,除了和人打交道,往往還要和具體行業的知(zhī)識、數據、系統進行交互。給 LLM 灌輸行業知(zhī)識,當前有兩種方式,一種是(shì) Fine Tuning(微調),另外一種是(shì) Prompt Engineering。就目前實際的行業發展而言,Fine Tuning 還未形成共識,并且成本巨高,實際目前的大量應用都是(shì)基于 Prompt Engineering 做的——當前世界上應用最廣泛的模型 GPT-4 并不提供 Fine Tuning 的選項。

但(dàn)無論是(shì) Fine Tuning 還是(shì) Prompt 工程,都對結構化數據有一定要求。這方面我認爲最值得參考的是(shì)微軟的一篇論文,來自 Office Copilot 團隊所著的“Natural Language Commanding via Program Synthesis”,這篇論文提到的工程實踐有一個核心點就是(shì) ODSL(Office DSL),是(shì) Office 團隊爲這個場景定制的一套 DSL(領域特定語言),這也是(shì)控制大模型輸出的主要手段,就是(shì)結構化,事實證明“大模型喜歡結構化”。

盡管人類和人工智能(AI)都擁有一定的智力能力,但(dàn)在現(xiàn)階段,大多數産品設計仍然以人類爲中心,而非 AI。

以協作爲例,單個人的工作能力有其天然的限制,因此需要與他人協同合作。這就導緻了人類工作的異步性。在軟件工程領域,我們使用 Git 這樣的工具來解決異步協作帶來的問題。

再比如,任何一個工程項目都需要經過生産和測試兩個環節。考慮到确保工作的誠信性,通常我們不會讓生産者和測試者是(shì)同一個人。但(dàn)你完全可以讓一個 AI 同時進行生産和測試,因爲 AI 本身不存在誠信問題。

此外,人類和 AI 在交互方式上也存在着顯著差異。比如,大部分的軟件操作都需要使用鼠标,因爲這種人類和 AI 在輸入和輸出(I/O)方式上的區别,導緻 AI 其實很難操作現(xiàn)有的軟件。

小結

AI 未來會怎樣,沒有辦法預知(zhī),但(dàn)是(shì)可以确定,它目前的編碼水平不會威脅到程序員(yuán)。

雖然現(xiàn)在的情況不太好,但(dàn)等過了低谷期,經濟恢複了,程序員(yuán)的需求就會上升。

你的工作今年是(shì)有保障的。如果你努力的話(huà),明年也是(shì)有保障的,而且很可能從此都是(shì)有保障的。因爲如果一直不斷學習 AI,你會越來越熟練地掌握它,讓它爲你工作,達到你的目的。也就是(shì)說,它會放(fàng)大你的生産力。這就是(shì)很關鍵的地方,AI 與人類不是(shì)競争關系,

它未必會減少機會,反而可能帶來更多的機會。

因此,當前AI的編碼水平不會對程序員(yuán)構成威脅,并且通過不斷學習和掌握AI的使用方法,可以将其作爲工具來提高生産力。



以上爲本次所有分享内容

圖片

關注“盛圖科技”公衆号

私信“寒假編程訓練營”即可免費(fèi)報名參加!


圖片


上一篇:軟件工程--------就業與編程語言的多樣性選擇
下一篇:嵌入式——實時時鍾(RTC)