首頁  >  文章  >  科技週邊  >  ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

WBOY
WBOY轉載
2023-04-12 19:19:201330瀏覽

最近有好幾個人給我安麗ChatGPT,說老劉快你去看看吧,這貨實在太強了,搞不好我們程式設計師都失業了。

剛開始我都是微微一笑,怎麼可能?我之前的觀點一直都是在我的有生之年,AI絕對不可能幹掉程式設計師。

但是安麗的人實在太多了,我忍不住要去註冊個帳號去看一下。

沒想到這貨竟然沒對中國開放,網路上有些攻略,我嫌麻煩,趕緊呼叫在國外的好兄弟,請他幫忙註冊一個帳號。 

嘗試開始,我決定跳過那些簡單的問答,例如:

如何反轉一個字串?

如何發起一個HTTP呼叫?

因為這種東西對於閱碼無數的AI來說太小兒科了,根本測試不出來它的本事有多大。

程式設計師的一個核心能力就是拿到需求,能作出優雅的設計,咱們就拿這一點考考它。

先問一個簡單的問題:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

#(點擊看大圖)

#不出所料,它「背誦」得非常好!

它說的最後一個原則是:盡量使用合成/聚合的方式,而不是繼承來達到復用目的。 這確實是物件導向一個重要的設計原則。

ChatGPT能運用這樣的原則嗎?

先問它會不會做設計:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

#說得真不錯,咱們開始放大招,我手邊正好有一個經典案例:薪水支付,這是從經典書《敏捷軟體開發:原則,模式與實踐》中提取出來的。

這個案例的需求是這樣的:

#該系統由一個公司資料庫以及和員工相關的資料組成,系統需要準時地依照規則給員工薪水

員工有三種類型

#1.鐘點工,每個小時有固定報酬,他們每天提交工作時間卡,其中記錄了日期以及工作小時數,如果每天工作超過8小時,按1.5倍進行支付。每週五對他們進行支付。

2.月薪員工,薪資固定,每個月的最後一個工作日對他們進行支付

3.銷售人員,有固定工資,但會根據他們的銷售情況,支付給他們一定數量的佣金,他們會提交銷售憑條,其中記錄了銷售的日期和數量。每隔一周的周五對他們進行支付。

員工可以選擇付款方式,可以把支票郵寄到他們指定的郵政地址,也可以保存在財務那裡隨時支取,或者要求直接存入他們指定的銀行帳戶。

看了這個需求以後,一般的設計是這樣的:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

Employee 作為基底類別,不同類型的僱員類別來繼承。

但是這個需求會有變更,客戶要求員工類型可以變更,例如從鐘點工變成月薪員工,這樣上面的設計就不行了。

這個時候應該要做個抽象,,用一個類別PaymentClassification來表達支付分類,然後讓Employee類別持有這個實例,簡單說就是 #組合代替繼承。

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

這相當於是個陷阱了,我們程式設計師能識別,抽象,這個ChatGPT可以嗎? 我還真有點好奇。

先問最初的需求,ChatGPT的回答是這樣的:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

(點擊看大圖)

你別說,還真是不錯,它「理解」了需求,從中抽取出了名詞進行類別的設計,並且設計好了類別的繼承關係。

已經達到了物件導向設計的初級水準。

接下來是重點,給他挖洞:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

非常驚艷,這貨竟然學會抽象了!

雖然它抽像出來的型別叫做EmployeeType,不如PaymentClassification那麼精確,但是大方向是一致的:用EmployeeType來管理付款規則,員工類型變更時,Employee類別不需要變更。

說實話,我看到它給出這個結果,內心是很吃驚的,可以說,能超越相當多的程式設計師了。

接下來我又問它關於支付週期怎麼處理:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

#這次它的抽象更加厲害,直接給出了精確的名稱:PaymentSchedule,還有相關的偽代碼!

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

它也特別提到了,當需要修改支付週期時,只需要更改PaymentSchedule即可,不用修改原有的員工類,組合優於繼承,再次體現出來

這和書中的例子幾乎一樣了:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

繼續問支付方法的處理方式:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

#不出所料,它的設計仍然很棒:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

#實際上,ChatGPT的設計,已經非常接近書中的最終方案了:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

嘗試到這裡,心裡有一絲失落和不甘,這個ChatGPT實在是太強悍了,展示出來很強的設計能力,並且對話過程非常流暢

人工智慧真的能理解需求,學會了抽象,能設計出漂亮的類別結構了嗎?程式設計師的核心能力被取代,程式設計師的危機真的來了?

我又問了它一個問題,讓它把類別圖畫一下:

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

等等,這裡的類別名稱怎麼跟之前的不一樣了,怎麼出現了一個新的概念:工會成員? 我在這次對話中,可是從來沒有告訴它這個概念#啊!它從哪裡知道的?

最大的可能是,這貨並沒有理解我告訴它的需求,它之前應該學過這個案例,依然是在「背誦」它學習的東西,自作主張把工會成員也我弄出來了,從而露出了馬腳。 

我關掉了ChatGPT網站,再次登錄,重新用同樣的內容和它交互,這次的結果徹底地把它暴露了。

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!

看到沒有,這次它根本沒有抽像出PaymentClassification/EmployeeType,它竟然推薦了面向過程的思路,加入一個type的屬性,用switch來解決問題。這比之前的方案差太多了。

最後聊聊感受吧! ChatGPT確實很厲害,應該是學習了大量的數據,肚子裡貨很多,但是它依然沒有真正的理解需求,它告訴我們的答案就是在現有知識中做提煉和整合。

如果拋給它一個完全全新的領域問題,估計它會懵的,大家可以拿實際業務問題來玩一下。

所以,ChatGPT是個好幫手,但是你要想完全依賴它,可要掂量掂量了,它告訴你的可能是優雅的程式碼​​,也可能是垃圾程式碼。

以上是ChatGPT強悍的程式設計能力,讓我嚇到一身冷汗!的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:51cto.com。如有侵權,請聯絡admin@php.cn刪除