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