ChatGPT時代,我們可能站到了自然語言編程的大門口
ChatGPT大火,我現(xiàn)在有種感覺:我們可能站到了自然語言編程的門口,一腳下去,也許能把門踹開。
當(dāng)然,也可能會踢到一塊鐵板。
回顧我們的編程之路,基本上就是一個編程門檻不斷降低的歷史。
最早的一批前輩們通過手工插拔電路的方式把程序輸入計算機(jī),每次編程都得好幾個小時,甚至好幾天。
馮諾依曼架構(gòu)出現(xiàn)后,程序可以存儲在內(nèi)存中,隨意變化,一下子方便了很多,但是編程依然是非常低級的匯編,上古的大神們用匯編寫Unix等操作系統(tǒng)、編譯器,這時候程序員是珍稀動物,編程門檻太高了。
Fortran/COBOL/BASIC/C/C++/Pascal等高級語言的出現(xiàn)讓編程難度降了一個等級,再加上80年代PC行業(yè)的爆發(fā),編程行業(yè)開始繁榮。
到了90年代,Java、Python、Ruby、JavaScript等編程語言,讓程序員更加遠(yuǎn)離硬件,遠(yuǎn)離內(nèi)存管理,可以把目標(biāo)聚焦到業(yè)務(wù)邏輯上。
進(jìn)入21世紀(jì),企業(yè)為了應(yīng)對快速的市場變化,對信息化的需求越來越高,迫切需要快速地實現(xiàn)業(yè)務(wù),推向市場,于是low code ,no code 又形成一個巨大的浪潮,在界面上,通過拖拽的方式就可以編程了。
再往下走一步,大家都非常明白,那就是自然語言編程。
在之前自然語言編程大家都覺得是挺不可思議的事情,因為這需要AI理解自然語言,并且能準(zhǔn)確地輸出代碼,這是一件非常難的事情。
但是ChatGPT、通義千問等大模型出現(xiàn)以后,我們突然發(fā)現(xiàn),自然語言編程出現(xiàn)了重大突破,我們可以告訴AI需求,讓AI來生成代碼了!
我們可以告訴AI:
我需要實現(xiàn)一個Product的RESTful的接口,用SpringBoot來實現(xiàn),Product的屬性包括id,name,description, imageUrl。
在幾秒內(nèi),AI就可以迅速生成從最上層到最底層的代碼,更讓人震撼的是,它還支持微調(diào)的能力。
我們可以說:“數(shù)據(jù)庫訪問用MyBatis實現(xiàn)。”AI可以迅速把數(shù)據(jù)庫訪問代碼改成MyBatis。
當(dāng)我們說:“把imageUrl改為image_url”,AI 馬上可以找到所有相關(guān)代碼,把imageURL改過來。
這種微調(diào)的能力,遠(yuǎn)遠(yuǎn)超過了之前常見的代碼生成器,AI似乎準(zhǔn)確地理解了你的要求,對代碼做了精確的修改。
當(dāng)然,對于某些極端的情況,AI會有些考慮不周,還依賴程序員的洞察力。所以我經(jīng)常說AI能生成95%的可運行代碼,剩下的5%需要則依賴程序員的功力。
這還只是生成代碼,程序員還需要把代碼從聊天窗口復(fù)制到IDE中去運行調(diào)試。說實話,這個過程也挺煩人的。
釘釘剛剛發(fā)布的AI生成應(yīng)用場景突然又讓我看到了新的方式,在通義千問這個大模型的支持下,它不僅僅是用自然語言生成代碼,而是直接生成應(yīng)用,一鍵部署,然后直接在釘釘群聊里運行起來!
它甚至通過拍照的方式就可以生成一個應(yīng)用,讓輸入的方式不再只有文字:
圖片
GPT-4在之前的演示中,也展示了根據(jù)圖片生成代碼和網(wǎng)頁的能力(這個能力現(xiàn)在沒有正式發(fā)布,讓大家使用),但是釘釘已經(jīng)可以直接生成可以運行的低代碼應(yīng)用,比如常見的工單管理系統(tǒng)、門店巡檢系統(tǒng)、客戶信息管理系統(tǒng)都可以交給AI去幫我們開發(fā)出來,這實在是太棒了。
如果自動生成的應(yīng)用程序不滿足要求,也可以通過繼續(xù)對話讓AI幫你修改應(yīng)用,添加選項、刪除字段。
圖片
拍照生成應(yīng)用這個微軟也可以做到,但我發(fā)現(xiàn)釘釘還劇透了一個很棒的能力,就是智能推薦選項字段,幫你補全。這個能力雖然看起來簡單,但是技術(shù)上實現(xiàn)起來難度應(yīng)該很大,需要給大模型輸入大量的行業(yè)know how。
釘釘把自家宜搭低代碼的應(yīng)用模板給大模型學(xué)習(xí),就等于是把各行各業(yè)(制造、醫(yī)療、建筑等)及各類高頻業(yè)務(wù)場景(人事行政、財務(wù)報銷、生產(chǎn)制造等)都喂給了AI,構(gòu)建了豐富的領(lǐng)域業(yè)務(wù)數(shù)據(jù)。
有了領(lǐng)域業(yè)務(wù)知識,大模型在生成應(yīng)用時,對業(yè)務(wù)人員提出的需求理解就會更加準(zhǔn)確,生成的應(yīng)用也更加精準(zhǔn)。
這種能力對于不懂代碼的業(yè)務(wù)人員是非常便利、非常友好的,他們不需要再依賴程序員去實現(xiàn)類似的需求,自己分分鐘就可以把應(yīng)用開發(fā)出來。
這類拍照或者自然語言生成的應(yīng)用,結(jié)合我去年給大家介紹過的釘釘酷應(yīng)用能力,還可以實現(xiàn)一鍵把應(yīng)用部署在群聊里。通過動態(tài)卡片的方式,讓業(yè)務(wù)人員在一個群里就能完成人機(jī)交互,聊著天就把事兒給辦了。
看到這里,你肯定會有這個疑問:AI都支持自然語言編程了,這么強(qiáng)大了,它能完全替代程序員嗎?
對于初級程序員來說,如果只會做CRUD,AI的威脅非常大,因為明確的、有規(guī)則的需求對于AI來說是小菜一碟,分分鐘搞定。
對于高級程序員來說,在編程中也少不了增刪改查,這時候AI就是一個非常好的幫手,因為對于繁瑣的、重復(fù)的代碼工作,都可以交給AI來完成。在這個過程中,高級程序員只要去“指導(dǎo)”它,“引領(lǐng)”它就可以了,減少了無效的時間浪費。
高級程序員可以把自己的精力放在更需要創(chuàng)造力的工作上來,對于現(xiàn)在的AI來說,讓它直接生成巨型的復(fù)雜系統(tǒng),它還是力不從心的。
比如我們告訴AI:
我要創(chuàng)建一個電子商務(wù)系統(tǒng),包括用戶管理,商品管理,訂單管理,倉儲管理等常見的功能,需要支持秒殺活動,優(yōu)惠券,積分系統(tǒng)等功能,幫我把代碼都寫出來。
AI是絕對不可能給你實現(xiàn)的,因為這樣的需求太模糊,如果用流程圖,界面圖,Use Case等把這些大系統(tǒng)的需求描述出來,沒有幾百頁是不可能的。即使你把這幾百頁文檔都灌給AI,它也不可能給你完整地實現(xiàn)了。
高級程序員需要出馬,把大型系統(tǒng)進(jìn)行分解,形成各個模塊,然后讓AI介入生成代碼,生成應(yīng)用。
可以看出,自然語言編程已經(jīng)發(fā)展到了一個非常高的層面,可以成為程序員提升效率的巨大助力。
在未來,沒有純粹的碼農(nóng),每個人都需要深入理解自己所面臨的挑戰(zhàn),并通過智能化的生產(chǎn)力工具去快速解決問題。
釘釘發(fā)布會的幾個場景演示,雖然只是工作智能化的一小步,卻展示出了遠(yuǎn)超“通過聊天生成代碼的能力”,可以直接創(chuàng)建、部署,在群里運行應(yīng)用,真是非常方便。
工具的價值就在于能否更好地服務(wù)于人,用機(jī)器提升人的生產(chǎn)力。
我們可以暢想,隨之智能化的進(jìn)一步發(fā)展,開發(fā)應(yīng)用的能力會不會就像用Word一樣,變成一種普遍的能力呢?這是一件特別有想象力的事情,誰都難以預(yù)料,只能交給時間來證明了。
如需轉(zhuǎn)載,請通過作者微信公眾號coderising獲取授權(quán)。