- AI輔助編程Python實戰:基于GitHub Copilot和ChatGPT
- (美)利奧·波特 (加)丹尼爾·津加羅
- 1011字
- 2025-03-13 18:31:20
1.3 Copilot如何改變我們學習編程的方式
為了闡明AI將如何改變學習編程的方式,我們將展示Copilot在解決編程任務方面的強大能力,而這些任務正是選自編程教材中分派給學生的題目。
在以往的編程學習過程中,學習者們往往將大部分時間投入程序的語法和基礎結構中。能做到從零開始逐行手寫一段完整的程序(例如,下面即將展示的這個示例),通常就是他們學習編程的最終目標了。然而,在深入探討具體的編程題目之前,必須指出的是,盡管大多數編程教育者和圖書作者都認為新手程序員應該能解決此類題目,但實際上許多初學者根本做不到這一點。下面列出的就是這類題目的一個代表[4]。
編寫一段程序來讀取每天的降雨量。若降雨量為負值,則認為這是不合法且不可接受的,應予以排除。該程序應輸出以下信息:有效記錄的天數、下雨的天數、整個時間段內的總降雨量及任何單日的最大降雨量。程序以9999作為結束輸入的警戒值。
如果你以前嘗試過學習編程,那么對于這種類型的題目應該并不陌生,而且你可能在解決此類問題時頭疼不已。但現在,如果我們將這段明確的提示詞交給Copilot,將立即得到一段Python代碼,如代碼清單1.1所示。(我們在前言中提到,Copilot的行為具有不確定性,所以,如果我們再次提問,可能會得到不一樣的代碼。)
代碼清單1.1 Copilot生成的解決經典降雨問題的代碼
rainfall = 0 total_rainfall = 0 num_rainy_days = 0 num_valid_days = 0 max_rainfall = 0 rainfall = int(input("Enter the amount of rainfall for the day: ")) while rainfall != 9999: if rainfall < 0: print("Invalid rainfall amount. Please try again.") rainfall = int(input("Enter the amount of rainfall for the day: ")) else: num_valid_days += 1 total_rainfall += rainfall if rainfall > 0: num_rainy_days += 1 if rainfall > max_rainfall: max_rainfall = rainfall rainfall = int(input("Enter the amount of rainfall for the day: ")) print("Number of valid days:", num_valid_days) print("Number of rainy days:", num_rainy_days) print("Total rainfall over the period:", total_rainfall) print("Maximum amount of rain that fell on any one day:", max_rainfall)
我們并不指望你立馬就能從直覺上判斷出這段代碼的優劣。事實上,這段代碼相當不錯。作為計算機科學專業的教授,我們會給這段代碼打高分。
以前學習編程的人們可能需要花費幾周甚至幾個月的時間才能寫出這種水準的代碼。而如今,Copilot能夠瞬間生成這樣的代碼。后續的章節會一直強調,我們仍然需要驗證這些代碼的正確性,因為Copilot有可能犯錯。但我們再也不需要從零開始手寫代碼了。我們相信,與Copilot的這次成功互動,預示我們過去教授編程和學習編程的方式已然終結。
作為一個有志于學習編程的人,你不必再像以往那樣在語法、控制流程等眾多Python概念上苦苦掙扎。誠然,我們會在本書中講解這些概念,但目的不是讓你通過從零開始手寫代碼來證明你已理解,因為Copilot已經能夠輕松生成這些代碼。我們學習這些概念,僅僅是因為它們有助于我們解決實際問題,并與Copilot進行更富有成效的互動。正是由于AI助手從根本上改變了學習編程所需的技能,你才能更快地學會如何編寫規模更龐大、意義更深遠的軟件。
- 流量的秘密:Google Analytics網站分析與優化技巧(第2版)
- TypeScript實戰指南
- Drupal 8 Module Development
- Visual C#.NET程序設計
- Java程序設計
- 利用Python進行數據分析
- Programming with CodeIgniterMVC
- HoloLens與混合現實開發
- 深入淺出Python數據分析
- Instant Automapper
- JavaScript編程精解(原書第2版)
- JavaScript Concurrency
- 深入大型數據集:并行與分布化Python代碼
- Spring Boot從入門到實戰
- Mastering JavaScript Promises