all.jpg

一、用於軟體開發的生成式人工智慧簡介 Introduction to Generative AI for Software Development

勞倫斯·莫羅尼和吳恩達之間的對話

吳恩達>>歡迎來到生成式 AI 軟體開發。生成式 AI 正在幫助許多軟體開發者撰寫更快、更好的程式碼。需要澄清的是,這門專項課程並不是關於開發生成式 AI 應用程式,而是關於生成式 AI 如何幫助進行軟體開發。不管你是數據科學家、前端開發者、後端開發者、全端開發者、行動應用開發者,或其他類型的開發者,我們的課程都能為你提供幫助。

在這裡,我們邀請了 Laurence Moroney 擔任這些課程的講師。你可能已經熟悉 Laurence,他曾與 DeepLearning.AI 合作教授 TensorFlow 課程。此外,他還撰寫了 30 多本書,內容涵蓋科幻小說、程式設計和機器學習。我們非常高興他能教授如何利用生成式 AI 來提高軟體開發的最佳實踐。

勞倫斯·莫羅尼>> 很高興能在這裡與你和你的團隊一起合作。其中一個我一直在思考的問題是,生成式 AI 對軟體開發者日常工作的影響。你認為這會是什麼樣子?

吳恩達>> 令我感到驚訝的是,使用生成式 AI 寫程式比不使用時更加有趣。三週前,我嘗試將某個項目部署到雲端服務上。由於很久沒做這件事,我忘記了該怎麼做。如果我不得不去閱讀文檔來解決問題,那麼我可以做到,但坦白說,使用 LLM 提示來引導我完成這個過程要快得多。它幾乎是正確的,幫助我打包 Docker 容器,將其推送到所使用的雲端服務,並快速完成工作。所以我發現,知道有這樣一個生成式 AI 的程式開發夥伴可以幫助我,我會更加期待寫程式。

勞倫斯·莫羅尼>> 是的,有時候是那些繁瑣的任務讓人失去了解決問題的樂趣。有一個合作的程序員夥伴來幫助你完成這些事情,確實讓整體任務變得更加有趣。

吳恩達>> 是的,生產力是其中一個因素,我完全支持這一點。我記得有一項 McKinsey 的研究,還有一項 Cisco 的研究,估計代碼生成和各種任務的生產力提升大約是 35% 或更高。所以生產力的提升是很棒的,我完全支持。此外,增加的樂趣也是一個很大的加分。

勞倫斯·莫羅尼>> 完全同意。我發現自己坐下來寫程式時,比以前更加享受,因為我花更多的時間思考要解決的問題,思考如何實現它,而不是去處理用戶介面、Docker 容器或推送到雲端這類事情。這真的很有趣。

吳恩達>> 那麼關於社交媒體上的一些聲音——有人強烈表示沒有人需要再編寫代碼,因為生成式 AI 的緣故,軟體工程師將被淘汰。對此你有什麼看法?

勞倫斯·莫羅尼>> 我認為這種觀點是錯誤的。我認為作為一名軟體開發者的專業技能在生成式 AI 時代比以往任何時候都更為重要。它可以賦予你超能力,讓你更高效,能夠解決這些特定領域的問題,並在此過程中享受更多樂趣,讓你在工作中更加充實。

吳恩達>> 如果生產力提升的估算是準確的,比如說 35%,那麼我認為會發生的是,使用 AI 的人將取代那些不使用 AI 的人,而不是 AI 本身取代軟體開發者。而且當我想到已經顯示出明顯生產力提升的研究時,我認為隨著技術的快速發展,這些收益將會進一步擴大,變得更大。

勞倫斯·莫羅尼>> 絕對如此。我也認為,如果要用一個詞來形容的話,應該是『縮小化』(shrinkification)。LLM 變得越來越小,但仍然能保持高效。我確實看到這一趨勢在持續並加速,讓開發者的工作變得更加輕鬆。所以現在,與其透過聊天機器人或類似工具將代碼外包給第三方,不如直接在本地機器上運行一個 LLM。這個 LLM 是基於你的代碼庫訓練的,對你的領域有專業知識,可以作為你的配對程序員。我認為這將成為一個重要的趨勢。

此外,當然還有一點,許多公司不允許他們的源代碼被分享給外部。因此,你無法將它們帶到 ChatGPT、Claude 或其他類似平台。但是,當你有一個內部模型在自己的開發設備上運行時,這些限制就會被突破,我認為這將開啟新的可能性。

吳恩達>> 對於許多開發者來說,無論是新手還是有經驗的開發者,如果學習新事物時遇到困難,你必須找到人類專家來幫助解決問題。我非常喜歡這種『配對寫程式』的類比,現在你隨時有一個夥伴可以問問題,立即得到答案。我認為相比於等待一天或更長時間來找到該領域的專家,即使 LLM 並不總是知道所有答案,但這位夥伴可以立即提供答案並給出一些選項,這無疑將幫助開發者更快地解決問題。

勞倫斯·莫羅尼>>我個人發現,有時候即使它無法幫助直接解決當前問題,它所提供的答案也會激發靈感。一些答案會幫助我找到一個新的方向來解決某個問題,或者引導我進入一個我之前從未想到過的全新方向。這種靈感的激發確實讓任務更加有趣。

吳恩達>> 我非常欣賞你在我們的討論中帶來的洞察力。我們很多人可能已經在即興但有效的方式下使用生成式 AI 來幫助寫程式。你帶來的一點我特別欣賞,那就是系統性地分析開發者必須處理的任務,以及如何利用生成式 AI 幫助完成這些任務的最佳實踐。舉例來說,我之前從未想到可以用生成式 AI 來幫助測試驅動開發,直到很久以前從你那裡聽說這件事。這些系統性的分析真的讓人耳目一新。

勞倫斯·莫羅尼>> 謝謝。是的,另一個我喜歡的例子是依賴管理(dependency management)。通常錯誤並不在於你的代碼,而是你的依賴關係集有某些不匹配之處。能夠有一個友好的配對程序員或 LLM 幫助你解決這些依賴問題,處理變更,並指導你完成這些工作,這真的非常有幫助。