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