本書全方位展示了利用AI編程的方法和工具,能夠有效幫助讀者掌握AI輔助編程技術(shù), 輕松完成代碼的編寫、 調(diào)試、 除錯、 更新和優(yōu)化,顯著提高編程效率。本書提供了編程過程中集成AI的實(shí)用方法,包括詳細(xì)的示例代碼,演示如何與AI API交互, 如何將AI生成的內(nèi)容納入軟件解決方案并擴(kuò)展至其他AI功能,如代碼重構(gòu)、 翻譯和測試。 本書還介紹了一些實(shí)用的AI編程資源。本書非常適合程序員、 人工智能研發(fā)人員以及其他對人工智能感興趣的讀者閱讀。
這兩年,全球最大的程序員問答網(wǎng)站Stack Overflow的流量出現(xiàn)了斷崖式下跌,造成這一局面的正是AI的崛起?梢哉f,如果不會使用AI,再優(yōu)秀的程序員也會像恐龍一樣被淘汰。不過您不用恐慌,您面前這本《與AI一起寫代碼》能夠幫助您擺脫被動局面,跳上AI快車,迅速成為AI時代的程序員。即使您已經(jīng)在編程工作中熟練使用AI,您也能書中找到豐富的相關(guān)資源,讓編程變得更輕松、更美好!
書中代碼下載 https://media.wiley.com/product_ancillary/36/13942491/DOWNLOAD/coding-with-ai.zip
在 OpenAI 推出 ChatGPT 近一年之后,我著手撰寫本書,ChatGPT 以及微軟、 谷歌、Facebook 等公司發(fā)布的一系列生成式 AI 工具正在改變我們對內(nèi)容創(chuàng)作的認(rèn)知,我們不知道這類工作將會發(fā)生多大變化,因?yàn)閮?nèi)容創(chuàng)作正是這些生成式 AI 工具的強(qiáng)項(xiàng)其實(shí),我對這些生成式 AI 工具既愛又恨,一方面,擔(dān)心自己花了大半輩子時間所掌握的寫作和編程技能再無用武之地? 另一方面,希望 AI 工具可以替我處理那些無聊和毫無意義的工作,以便我能夠騰出時間和精力,從事更有創(chuàng)意的寫作和編程工作我還擔(dān)心被人誤會,本來我是在用傳統(tǒng)方法進(jìn)行創(chuàng)作 (自己獨(dú)立思考,然后將想法撰寫成文),有人卻誤以為我在用 AI 工具進(jìn)行寫作,去年,我寫了一本當(dāng)時熱點(diǎn)話題的書就遭遇這樣的誤解,有些人壓根沒有仔細(xì)閱讀過這本書,就貿(mào)然評論 這本書很可能是用AI 寫的,為了避免以上誤解,我當(dāng)時就公開承諾,在寫下一本書時,將直播寫作過程,當(dāng)時,我并不知道自己下一本書的主題就是 AI,依此承諾,我一邊撰寫本書,一邊直播整個寫作過程,就是向讀者證明,這本書確實(shí)由我親自撰寫,并非由 AI 生成,如果讀者有興趣或?qū)Υ擞腥魏我蓡,歡迎訪問 https:/ / bit.ly/ codingwithai,查看我的整個寫作過程 (包含數(shù)百小時的直播錄像)盡管我本人拒絕使用 AI 寫書,也常常反對其他人使用 AI 寫書,但是對于使用 AI 工具生成計算機(jī)代碼,我持贊成態(tài)度,回顧計算機(jī)編程的發(fā)展歷史,可以看到,人類一直致力于發(fā)明更好的工具,以期簡化編程工作,20 世紀(jì) 90 年代,我在 Software Development Magazine(軟件開發(fā)雜志社) 工作,當(dāng)時的技術(shù)編輯是羅杰?史密斯,有一天,當(dāng)我們談?wù)摼幊坦ぞ叩陌l(fā)展方向時,他堅(jiān)信,未來我們一定能夠使用自然語言來編寫軟件,對此,我當(dāng)時持懷疑態(tài)度,30 年后的今天,事實(shí)證明羅杰的預(yù)言已經(jīng)變?yōu)楝F(xiàn)實(shí)AI 的發(fā)展日新月異,這個月還稱得上新穎有趣的技術(shù)和工具,到下個月就可能被更好的技術(shù)和工具所取代,同理,我今天書中所寫的內(nèi)容等到該書出版時可能也會過時,盡管AI 軟件開發(fā)工具在不斷優(yōu)化,但是本書的技術(shù)依然廣泛適用,除非真有那么一天,AI 砸碎軟件開發(fā)人員的飯碗,將人類程序員淘汰對于 AI 輔助編程,無論大家持歡迎還是抵制態(tài)度,AI 新時代已經(jīng)勢不可擋! 本書將介紹 AI 輔助編程工具的工作原理,您學(xué)會之后就可以讓代碼編寫工作變得更輕松、 更迅速、更優(yōu)秀希望您喜歡閱讀本書,并能夠有所收獲,如果對本書有任何問題或意見,請給我發(fā)郵件: chris@ minnick.com
克里斯·明尼克(Chris Minnick)是資深技術(shù)作家、教育專家及程序員。獨(dú)著/合著技術(shù)書籍逾20部,包括多本達(dá)人迷系列暢銷作品,為頭部在線教育平臺開發(fā)視頻課程體系,長期為多家全球大企業(yè)提供編程與AI培訓(xùn)。
譯者序 Ⅲ引 言 Ⅳ 關(guān)于本書 Ⅴ 讀者對象 Ⅴ 書中圖標(biāo) Ⅵ 在線資源 Ⅵ 近期目標(biāo) Ⅶ第 1 部分 技術(shù)入門第 1 章 AI 的作用 3 消滅無聊任務(wù) 3 發(fā)現(xiàn)無聊任務(wù) 4 用 AI 編寫模板 4 用 AI 實(shí)現(xiàn) CRUD 7 提供語法幫助 13 無須記住瑣碎細(xì)節(jié) 14 代碼補(bǔ)全提示 14 適應(yīng)新語法 15 靜態(tài)代碼分析 18 靜態(tài)代碼分析檢測不良代碼 18 使用 AI 進(jìn)行靜態(tài)代碼分析 19 使用 AI 學(xué)習(xí)編程 19 AI 的教育潛能 20 避免潛在的陷阱 20 與 AI 結(jié)對編程 20 結(jié)對編程模式 20 與 AI 結(jié)對編程的利弊 21 AI 結(jié)對編程實(shí)戰(zhàn) 21第 2 章 機(jī)器學(xué)習(xí)和深度學(xué)習(xí) 28 機(jī)器學(xué)習(xí)和深度學(xué)習(xí) 28 基本概念 28 神經(jīng)網(wǎng)絡(luò) 29 訓(xùn)練和測試模型 31 自然語言處理 32 自然語言處理的歷史 33 自然語言處理的困境 34 理解 Transformer 36 注意力機(jī)制 36 獲取標(biāo)記 37 生成式 AI 模型 39 認(rèn)識 AI 的局限 40 語言模型不擅長數(shù)學(xué) 40 語言模型啰唆冗長 41 AI 存在知識局限 42 AI 存在常識性問題 43 AI 存在準(zhǔn)確性問題 43 AI 存在偏見性問題 43第 3 章 AI 編程工具 44 探索 GitHub Copilot44 安裝 Copilot插件 44 使用 Copilot高效工作 46 使用快捷鍵 50 探索 Tabnine 51 安裝 Tabnine 51 設(shè)置 Tabnine 52 使用 Tabnine 編程 53 探索 Replit54 使用 Replit創(chuàng)建網(wǎng)站 56 探索 Replit工作區(qū) 58 與 ReplitAI 結(jié)對編程 59第 4 章 與聊天機(jī)器人一起編程 64 改進(jìn)提示詞 64 調(diào)整溫度 64 解讀提示詞的各元素 68 與 AI 一起寫代碼 開放式與封閉式提示詞 69 使用不同類型的提示詞 69 提升提示詞水平 71 與 Copilot聊天 72 了解斜杠命令 72 了解 Copilot智能體 73 利用 CopilotChat73 與 ChatGPT 聊天 75 注冊和設(shè)置 75 自定義說明 76 讓 ChatGPT 了解您 77 讓 ChatGPT 了解您的期望 79 深入理解 OpenAI 平臺 81 檢查積分 81 玩轉(zhuǎn) Playground 82 運(yùn)行示例 83 扮演不同角色 84 調(diào)整模型設(shè)置 84 獲取 API 密鑰 85 使用 OpenAI 開發(fā)聊天機(jī)器人 87第 2 部分 用 AI 編寫代碼第 5 章 從計劃到原型 93 理解項(xiàng)目需求 93 確定軟件需求 93 領(lǐng)域需求 94 功能需求 94 非功能需求 95 編寫 SRS 96 從 SRS 生成代碼 100 使用零樣本方法 100 分解問題 102 人工和 AI 混合編程 103 編寫提示 103 編寫服務(wù)器 104 提交后續(xù)提示 106 測試服務(wù)器 108 在服務(wù)器上實(shí)現(xiàn)少樣本提示 109 改進(jìn)客戶端 113 從 AI 端轉(zhuǎn)向客戶端 116 代碼生成實(shí)用技巧 118 人工引導(dǎo) 119 指令清晰 119 分步思考 119 跟進(jìn)提問 119 查驗(yàn)官方文檔 119 提供示例和上下文 120 安全第一 120 繼續(xù)學(xué)習(xí) 120 更新工具 120 留意 AI 的局限 120第 6 章 代碼格式化和重構(gòu) 121 使用 AI 工具進(jìn)行代碼格式化 121 設(shè)置格式化工具 121 使用 Prettier 自動設(shè)置代碼格式 123 使用 AI 重構(gòu)代碼 128 識別代碼異味 128 使用 Copilot檢測代碼異味 130 安全重構(gòu) 133 生成重構(gòu)代碼建議 133 設(shè)置事件監(jiān)聽器 134 刪除魔法數(shù)字 135 減少全局?jǐn)?shù)據(jù) 136 修復(fù)長函數(shù)問題 137 修復(fù)命名不一致問題 138 解決缺少注釋問題 139 井字棋游戲?qū)崙?zhàn) 140第 7 章 發(fā)現(xiàn)和消除漏洞 146 了解漏洞 146 檢測漏洞的策略 146 常見漏洞類型 147 能否做到軟件零漏洞 147 使用 Jam 進(jìn)行 AI 輔助報錯 148 使用靜態(tài)代碼分析工具預(yù)防錯誤 151 安裝 linter 151 安裝 ESLint擴(kuò)展 152 使用 linter 修復(fù)代碼 153 linter 與 AI 相結(jié)合 154 更改規(guī)則 156 使用 AI 檢測漏洞 159 使用 AI 自動修復(fù)漏洞 162 Snyk 簡介 162 Snyk 自動修復(fù) 164 對自動修復(fù)進(jìn)行驗(yàn)證 166 判斷是否適合自動修復(fù) 167第 8 章 代碼翻譯與優(yōu)化 170 代碼翻譯 170 譯前準(zhǔn)備 171 翻譯策略 171 使用 GPT-4 翻譯完整程序 175 驗(yàn)證譯后代碼 177 使用 AI 優(yōu)化代碼 178 獲取代碼優(yōu)化建議 178 避免過早優(yōu)化 182第 3 部分 測試、 記錄和維護(hù)代碼第 9 章 測試代碼 185 編寫測試計劃 186 選用傳統(tǒng)還是敏捷計劃 186 測試計劃的分步驟流程 186 AI 在測試計劃中的作用 187 識別核心功能 187 生成測試場景 188 使用測試框架 190 安裝 Jest190 運(yùn)行 Jest192 生成測試用例 193 閱讀覆蓋率報告 196 分析測試結(jié)果 197 借助 AI 進(jìn)行測試驅(qū)動開發(fā) 202第 10 章 代碼文檔化 209 使用文檔化機(jī)器人 209 構(gòu)建文檔助手 210 測試文檔助手 212 生成代碼注釋和注解 214 安裝和測試 Mintlify Doc Writer 214 測評 Underscore 216 創(chuàng)建可視化文檔 219 生成序列圖 220 生成需求圖 221 使用 AI 實(shí)現(xiàn) API 文檔自動化 223 創(chuàng)建 REST API 文檔 223 創(chuàng)建 API 文檔聊天機(jī)器人 228第 11 章 代碼維護(hù) 233 了解四種維護(hù)類型 233 糾正性軟件維護(hù) 234 適應(yīng)性軟件維護(hù) 234 完善性軟件維護(hù) 235 預(yù)防性軟件維護(hù) 235 利用 AI 進(jìn)行代碼維護(hù) 235 使用 AI 提高代碼質(zhì)量 236 理解技術(shù)債務(wù) 236 使用 Code Climate 237 啟用測試覆蓋率報告 240 分析代碼質(zhì)量指標(biāo) 240 使用 AI 提升代碼質(zhì)量 241第 4 部分 AI 工具與資源第 12 章 嘗試十個 AI 工具 251 Amazon CodeWhisperer 251 Sourcegraph Cody 252 DeepMind AlphaCode 253 Google Bard 253 Codeium 254 Claude 254 MicrosoftIntelliCode 256 Sourcery 256 Bugasura 257 UserWay 258第 13 章 了解十個 AI 編程資源 259 Code.org 的 AI 資源 259 Kaggle 260 Google DatasetSearch 261 edX 261 Edabit262 StatQuest263 AI4All 開放學(xué)習(xí) 263 Gymnasium 264 fast.ai 265 Microsoft Learn 265作者簡介 267致辭 267致謝 267