AI助力非程式設計人員書寫電腦程式
你認為哪一類人數量更多:是專業的電腦程式設計師,還是會一點程式設計的電腦使用者?答案是後者。有數以百萬計所謂的終端使用者程式設計師。他們並不打算從事專業程式設計師或電腦科學家的職業。他們投身於商業、教育、法律或其他眾多行業,而他們只需要一點程式設計知識就能提高工作效率。程式設計師只能侷限於軟體開發公司的日子早已一去不返。
要是你曾在Excel中編寫公式、根據規則過濾電子郵件、修改遊戲、在Photoshop中撰寫指令碼、使用R分析某些資料,或是自動化重複性的工作流程,那你就是一名終端使用者程式設計師。
作為教授程式設計的教育工作者,我們希望幫助非電腦科學領域的學生實現他們的目標。然而,要學會編寫完整程式所需的程式設計知識相當龐雜,僅靠單一一門課程很難完成。而人工智慧可以提供助力。
對許多學生而言,學習程式語言的語法,例如冒號該放在哪裡、何時需要縮排,都要花費大量時間。對於那些只想利用編碼解決問題,而非學習程式設計技能的學生來說,把時間花在語法層面無異於浪費。
因此,我們覺得現有的課程並未很好地服務於這些學生。事實上,許多學生最終僅能勉強編寫一些小函式,也就是短小、獨立的程式碼片段,更不用說編寫一個能改善生活的完整程式了。
像GitHub Copilot這類基於大型語言模型構建的工具,或許能改變這一現狀。這些工具已然改變了專業人士的程式設計方式,我們相信也能用它們幫助未來的終端使用者程式設計師編寫對他們有意義的軟體。
這些人工智慧生成的程式碼語法幾乎總是正確的,而且常常能根據普通英文提示編寫小函式。由於學生可以利用這些工具處理一些低層次的程式設計細節,這就使他們得以專注於編寫軟體程式的核心——更宏觀的問題。如今,許多大學都提供使用Copilot的程式設計課程。
在加州大學聖地牙哥分校,我們為非電腦科學專業的學生創設了一門入門程式設計課程,並融入了Copilot。在這門課程中,學生以Copilot作為人工智慧助手,依照我們書中的課程大綱學習程式設計。在課程中,學生學習諸如將大型任務分解為小任務、測試程式碼以確保其正確性,以及閱讀和修正有錯誤的程式碼等高階技能。
在這門課程中,我們佈置給學生大型、開放式的專案,而學生的成果令我們十分滿意。
舉例來說,在一個要求學生查詢和分析線上資料集的專案中,一位神經科學專業的學生建立了一個資料視覺化工具,展示了年齡和其他因素如何影響中風風險。再比如,在另一個專案中,學生運用程式語言Python建立濾鏡,將自己的個人藝術作品融入拼貼畫中。在大型語言模型人工智慧問世之前,這些專案的難度遠超我們對學生的要求。
鑒於目前有諸多關於人工智慧如何透過替學生寫論文、做家庭作業而毀了教育的言論,你可能會驚訝於像我們這樣的教育工作者談論人工智慧的好處。人工智慧,如同人類創造的其他工具一樣,在某些情況下有用,在另一些情況下則無用。
在我們這門大多數學生都不是電腦科學專業的入門程式設計課程中,我們親眼目睹了人工智慧如何以特定方式賦能學生,並有望增加終端使用者程式設計師的隊伍。