阿拉伯數字與中文數字雙向轉換 .NET 函式貼文有讀者提到:如果將來不用 C#,豈不要重寫?

好問題,其實寫函式時我就有想到這點,當時想法是,之所以擺脫 Visual Studio 程式庫從頭用 C# 重寫,便是著眼於相同演算法可移植到其他程式語言,更甭提我們現在有 ChatGPT 當靠山,這種沒用什麼平台專屬 API 的純演算法小功能,以 ChatGPT 4 的聰慧,理論上可以無痛轉移才對。

理論歸理論,但實際上呢?實測一下便知。我打算將這個工具函式轉成 JavaScript 跟 Python 版本,看看需要花多少力氣。

把程式碼貼給 ChatGPT-4,這點小事用不著情勒催眠角色扮演,Prompt 寫一句 convert this c# to javascript 即可:

C# 轉 JavaScript 的部分,ChatGPT 偷懶了。兩個核心方法 ParseChtNum 及 ToChtNum,ChatGPT 只給了註解,說他知道一種美妙的寫法,可惜這裡太小寫不下 XD 但有提示如果有需要可另外提問。把 ChtNumConvert 型別程式單獨拿出來再問一次,這回便拿到完整轉換結果。

ChatGPT 轉換的 JavaScript 可直接執行,沒編譯或 Runtime 錯誤:(註:有部分「零」沒有處理好,畫面沒截到)

轉完 JavaScript,再來轉成 Python 試試。由於 ChatGPT 對 JavaScript 比對 C# 熟 (JavaScript 訓練資料較多),我選擇請 ChatGPT 將剛轉好的 JavaScript 轉成 Python 而非從 C# 轉。這回 ChatGPT 很乾脆,整段程式一次轉完。

Python 版本也可順利編譯執行,但結果的錯誤更明顯,出現「零零零」、「零三百十」:

動手 Debug,JavaScript 版的問題出在 C# Trim('零') 邏輯沒轉對,用 RegExp 只換了結尾,補上開頭置換就 OK 了。

Python 部分幾個則是幾個 C# Regular Expression 處理沒正確轉譯。雖然不熟 Python,在 Github Copilot 協助下沒費什麼力氣就修正好了。

修改後,C#、JavaScript 與 Python 三個版本產生的結果一致,確認轉換成功。

總結一下本次實測結果:

  1. 本範例約 100 行 C# 程式,使用 ChatGPT 4 轉換耗時約一分鐘左右可拿到結果,轉換出來的 JavaScript 及 Python 版本均可直接執行,沒有編譯及 Runtime 錯誤,但執行結果有部分不正確
  2. JavaScript 有兩處需要修改,Python 有三處,但都是很明顯很容易修改的錯誤,前後不到五分鐘改好
  3. 修改後,比對 C#、JavaScript、Python 三個版本執行結果一致,判定轉換成功

在本次 ChatGPT 火力展示,由於程式碼不長,未涉及專屬程式庫呼叫並以演算法為主,ChatGPT 從 A 程式語言轉成 B 程式語言的完成度及正確率頗高,人工確認結果及修 Bug 免不了,但比起徒手翻寫不知快 N 倍。即使面對不熟悉的程式語言(本例中的 Python),靠著 ChatGPT 先轉換,利用 Github Copilot 協助修正,我也能在短短幾分鐘內自力完成翻寫,在 ChatGPT 出來之前,我沒想過有會有這麼一天。

阿貓阿狗都能轉程式改程式,這意味著會寫程式不值錢了嗎?好像不得不承認是這樣沒錯。

ChatGPT / AI 大幅降低了寫程式的門檻,新手生手不需要歷經漫長的學習也能生出可用的程式,老鳥的不可取代性下降(當然,品質效能擴充維護性有別,但很多時候,能解決眼前問題的堪用程式已值千金);但很公平的是一件事是,新手有 AI 可以依靠,老鳥一樣也得到 AI 加持,像我不熟 Python,一樣只花幾分鐘就寫好 Python 版函式。

正確地說,應該是入門到中級的程式技能貶值了。過去會寫程式在一般人眼中就是高手,會有很多人巴著你請你幫忙,排隊等你心情好賞賜幾支程式解決問題。

如今,一般人靠著 ChatGPT/RPA/NoCode 工具也能寫出滿足需求的程式,沒必要把會寫程式的人當成寶。除非對效能、資源用量、擴充維護性有較高要求的情境,此時若經驗與知識不足,即便有 ChatGPT 無法精準提問也是枉然,此時仍需經驗知識豐富的老鳥才能應付,但程式能力只有一般水平是派不上用場的。由此推論,寫得出程式真的不值錢了,很會寫程式懂偵錯且具備效能、架構、擴充維護性知識才算值錢本事。

靠會一點程式便有恃無恐的時代結束了,得再跑快一點惹。

註:轉換結果我有丟上 Github,如果有人想參考的話


Comments

# by Nesquate

其實就算沒有ChatGPT、無程式碼平台等工具出現,「只會寫程式」這件事本身就不是很值錢了xd

# by Valor

大概就是從60分變成30分的程度

Post a comment