
程式碼開發的新思維:Extract, Edit, Apply (EEA)
軟體開發的挑戰之一是如何有效地修改現有程式碼。尤其是在面對大型、複雜的系統時,理解程式碼的運作方式和規格,往往讓人感到吃力。
舊有的程式碼開發模式
在過去的軟體開發中,「程式碼為王」——程式碼是主要的產物,規格或文件則退居其次,甚至付之闕如。但隨著生成式 AI 的出現,我們開始探索如何將自然語言的力量融入軟體開發流程中。
提出問題:自然語言程式設計的挑戰
使用自然語言進行程式設計存在一些根本性的問題,包括:
- 語言的歧義性: 自然語言本身就容易產生歧義。
- 規格文件不足: 許多現有程式碼庫缺乏規格或文件。
- 維護困難: 在程式碼變更的情況下,維護自然語言規格和文件非常困難。
- 非母語挑戰: 非母語人士難以使用高度技術性的語言。
- 非確定性: 即使意圖明確,LLMs(大型語言模型)的程式碼生成也可能具有不確定性。
- 不穩定性: 輸入發生微小變更時,LLM 的程式碼生成可能會產生巨大差異。
核心理念:EEA 的誕生
GitHub Next 提出了 Extract, Edit, Apply (EEA) 的概念,這是一種從程式碼出發,以規格(文字)為輔的開發模式。
EEA 的核心是「短暫、可編輯、部分的規格」。使用者可以編輯程式碼或短暫的規格,而規格本質上是程式碼摘要,可依使用者指定的「樞紐(pivot)」來呈現。這些規格可以根據需要產生、修改和捨棄。
實作方式:EEA 如何運作
EEA 通常是作為現有程式碼導向的軟體開發工具鏈的補充。它包含以下功能:
- 樞紐(Pivot): 使用者輸入樞紐,它可以是一個短語、單字或文字,作為提取過程的參考。
- 規格提取: 自動從程式碼中生成規格,粒度可依函數、類別、檔案、目錄或儲存庫而定。
- 規格編輯: 允許使用者修改提取的規格並檢視相應的程式碼變更。
- 規格應用: 根據編輯過的規格將變更應用於程式碼庫。
- 變更檢視與驗證: 使用者可以檢視和驗證對程式碼庫所做的變更。
EEA 的優點
- 易於理解和維護: EEA 幫助使用者理解和維護程式碼,同時保持程式碼的可讀性。
- 解決詞彙問題: EEA 為使用者提供描述意圖所需的詞彙。
- 逐步採用: EEA 可以在現有儲存庫上逐步採用,無需重寫整個程式碼庫。
- 準確性: EEA 可以產生準確且精確的變更意圖。
- 簡潔性: EEA 使得程式碼變更可以用非常簡潔的方式指定。
EEA 的缺點
- 需要樞紐: EEA 需要使用者提供樞紐,這對於某些使用者來說可能在概念上很困難,並且在實務上也很難找到。
- 需要理解能力: EEA 需要使用者閱讀和編輯提取的規格,這對於某些使用者來說可能很困難。
- 文字過多: 如果方向錯誤,EEA 可能會產生大量文字,這對於某些使用者來說可能難以承受。
- 工作流程有限: EEA 僅允許一種使用模式。
總結
Extract, Edit, Apply (EEA) 概念代表了一類可以協助開發者整合自然語言摘要和編輯功能的工具。它提供了一個更結構化的方式,將自然語言融入軟體開發流程。


