有了AI工具就不用學習機器語言了嗎?不是的,今天我想透過本文的分析,來分享我使用ChatGPT輔助程式設計、撰寫所遇見的問題,以及我認為在AI時代仍需要學習的關鍵素養有哪些。
以下3個問題是以我使用ChatGPT生成AI code,最常遇見的困擾:
1. 需反覆修正提問:
現在許多AI教學會建議:如與ChatGPT互動時,最好用像「你現在是OOO角色」這種明確描述角色、動作或目的的指令,這樣AI才能更精準理解你的需求。不過,AI每次回應其實只能處理一定數量的關鍵字(token),就算你描述得再完整,也可能因為長度限制,導致「問了這個、AI忘了那個」的情況經常發生。
2. 無法替代開發者的全盤思考與系統整合:
AI雖然可以幫你產生長段落的程式碼,或針對明確的bug給出解法,但當你需要整合多模組、跨流程的系統時,AI只能就你問的「某一部分」給出建議,若接續詢問單一問題後,後續就難以繼續自動幫你把各部分串起來。
3. 順著你的思考邏輯回答問題:
AI能否答得好,很大程度取決於你給它的上下文,以及是否明確描述你的思考脈絡。有時候AI會照字面回答問題,結果答非所問;有時候則能「順著你的脈絡」提供很精準的協助。
根據前面所提到的問題,我認為要有效Debug,並善用AI輔助,主要可從三個面向來著手:
1. 基礎語法與邏輯思維能力:
雖然與AI互動對話可以用白話文說明敘述,並能取得生成的程式代碼,但若不具備基本的程式語法(如Python語法結構、變數、函式、類別等)和邏輯思維(如條件判斷、迴圈、資料流)能力,那很難從中明白這段程式碼的邏輯意義,例如看到for迴圈能夠知道這是在重複處理某項事件等,因此須懂得基本的語法,才能具備良好的Debug方向。
2. 系統架構與模組整合能力:
當程式碼中的各項類別功能定義很多時,惟有理解整個專案的架構、各模組的功能與相互關係,才能在多次反覆修正後,還能夠知道某項功能定義在整個專案中的關係與定位。
3. 問題拆解與有效提問能力:
當AI生成完整的程式碼執行時,可能仍會遇到執行錯誤,若直接將複雜問題再丟回給AI,常會遇到前面正確、後面又寫錯的情況,因此我們應該逐漸建立Debug的拆解邏輯,將大問題拆解成小問題,逐步釐清每一個環節後,最後再重新整合所有解法,才能真正找到核心問題並解決。
使用者提問:
請用tkinter幫我產生一個有三個欄位輸入框、和一個執行按鈕的GUI程式碼。
ChatGPT初版回覆:
import tkinter as tk
def on_submit():
val1 = entry1.get()
val2 = entry2.get()
val3 = entry3.get()
print(val1, val2, val3)
root = tk.Tk()
root.title("三個輸入框")
# 這一版雖然有三個輸入框,但沒有標示每個欄位的用途
entry1 = tk.Entry(root)
entry1.pack()
entry2 = tk.Entry(root)
entry2.pack()
entry3 = tk.Entry(root)
entry3.pack()
submit_btn = tk.Button(root, text="執行", command=on_submit)
submit_btn.pack()
root.mainloop()
使用者補充:
請每個輸入框都加上對應的Label。
(這裡的Label就是你已簡單理解了Tkinter的語法構架,並提出具體提問)
ChatGPT再回覆(完善版):
import tkinter as tk
def on_submit():
val1 = entry1.get()
val2 = entry2.get()
val3 = entry3.get()
print("欄位一:", val1)
print("欄位二:", val2)
print("欄位三:", val3)
root = tk.Tk()
root.title("三個輸入欄位+標籤")
label1 = tk.Label(root, text="欄位一:")
label1.pack()
entry1 = tk.Entry(root)
entry1.pack()
label2 = tk.Label(root, text="欄位二:")
label2.pack()
entry2 = tk.Entry(root)
entry2.pack()
label3 = tk.Label(root, text="欄位三:")
label3.pack()
entry3 = tk.Entry(root)
entry3.pack()
submit_btn = tk.Button(root, text="執行", command=on_submit)
submit_btn.pack()
root.mainloop()
因為有了精確地指示方向,ChatGPT便能更精準地完成你的需求。
今天分享了我實際應用ChatGPT輔助程式設計的經驗,並以簡單的範例說明,希望讓大家了解:AI確實能協助我們提升開發效率,但基礎語法、系統整合與問題拆解能力依然不可或缺。
下一篇我將利用ChatGPT協助產生更優化、更貼心的GUI介面,包括輸入檢查、即時提示與防呆設計等實用技巧,明天見!