本書全方位展示了利用AI編程的方法和工具,能夠有效幫助讀者掌握AI輔助編程技術(shù), 輕松完成代碼的編寫、 調(diào)試、 除錯(cuò)、 更新和優(yōu)化,顯著提高編程效率。本書提供了編程過程中集成AI的實(shí)用方法,包括詳細(xì)的示例代碼,演示如何與AI API交互, 如何將AI生成的內(nèi)容納入軟件解決方案并擴(kuò)展至其他AI功能,如代碼重構(gòu)、 翻譯和測試。 本書還介紹了一些實(shí)用的AI編程資源。本書非常適合程序員、 人工智能研發(fā)人員以及其他對(duì)人工智能感興趣的讀者閱讀。
這兩年,全球最大的程序員問答網(wǎng)站Stack Overflow的流量出現(xiàn)了斷崖式下跌,造成這一局面的正是AI的崛起?梢哉f,如果不會(huì)使用AI,再優(yōu)秀的程序員也會(huì)像恐龍一樣被淘汰。不過您不用恐慌,您面前這本《與AI一起寫代碼》能夠幫助您擺脫被動(dòng)局面,跳上AI快車,迅速成為AI時(shí)代的程序員。即使您已經(jīng)在編程工作中熟練使用AI,您也能書中找到豐富的相關(guān)資源,讓編程變得更輕松、更美好!
書中代碼下載 https://media.wiley.com/product_ancillary/36/13942491/DOWNLOAD/coding-with-ai.zip
在 OpenAI 推出 ChatGPT 近一年之后,我著手撰寫本書,ChatGPT 以及微軟、 谷歌、Facebook 等公司發(fā)布的一系列生成式 AI 工具正在改變我們對(duì)內(nèi)容創(chuàng)作的認(rèn)知,我們不知道這類工作將會(huì)發(fā)生多大變化,因?yàn)閮?nèi)容創(chuàng)作正是這些生成式 AI 工具的強(qiáng)項(xiàng)其實(shí),我對(duì)這些生成式 AI 工具既愛又恨,一方面,擔(dān)心自己花了大半輩子時(shí)間所掌握的寫作和編程技能再無用武之地? 另一方面,希望 AI 工具可以替我處理那些無聊和毫無意義的工作,以便我能夠騰出時(shí)間和精力,從事更有創(chuàng)意的寫作和編程工作我還擔(dān)心被人誤會(huì),本來我是在用傳統(tǒng)方法進(jìn)行創(chuàng)作 (自己獨(dú)立思考,然后將想法撰寫成文),有人卻誤以為我在用 AI 工具進(jìn)行寫作,去年,我寫了一本當(dāng)時(shí)熱點(diǎn)話題的書就遭遇這樣的誤解,有些人壓根沒有仔細(xì)閱讀過這本書,就貿(mào)然評(píng)論 這本書很可能是用AI 寫的,為了避免以上誤解,我當(dāng)時(shí)就公開承諾,在寫下一本書時(shí),將直播寫作過程,當(dāng)時(shí),我并不知道自己下一本書的主題就是 AI,依此承諾,我一邊撰寫本書,一邊直播整個(gè)寫作過程,就是向讀者證明,這本書確實(shí)由我親自撰寫,并非由 AI 生成,如果讀者有興趣或?qū)Υ擞腥魏我蓡,歡迎訪問 https:/ / bit.ly/ codingwithai,查看我的整個(gè)寫作過程 (包含數(shù)百小時(shí)的直播錄像)盡管我本人拒絕使用 AI 寫書,也常常反對(duì)其他人使用 AI 寫書,但是對(duì)于使用 AI 工具生成計(jì)算機(jī)代碼,我持贊成態(tài)度,回顧計(jì)算機(jī)編程的發(fā)展歷史,可以看到,人類一直致力于發(fā)明更好的工具,以期簡化編程工作,20 世紀(jì) 90 年代,我在 Software Development Magazine(軟件開發(fā)雜志社) 工作,當(dāng)時(shí)的技術(shù)編輯是羅杰?史密斯,有一天,當(dāng)我們談?wù)摼幊坦ぞ叩陌l(fā)展方向時(shí),他堅(jiān)信,未來我們一定能夠使用自然語言來編寫軟件,對(duì)此,我當(dāng)時(shí)持懷疑態(tài)度,30 年后的今天,事實(shí)證明羅杰的預(yù)言已經(jīng)變?yōu)楝F(xiàn)實(shí)AI 的發(fā)展日新月異,這個(gè)月還稱得上新穎有趣的技術(shù)和工具,到下個(gè)月就可能被更好的技術(shù)和工具所取代,同理,我今天書中所寫的內(nèi)容等到該書出版時(shí)可能也會(huì)過時(shí),盡管AI 軟件開發(fā)工具在不斷優(yōu)化,但是本書的技術(shù)依然廣泛適用,除非真有那么一天,AI 砸碎軟件開發(fā)人員的飯碗,將人類程序員淘汰對(duì)于 AI 輔助編程,無論大家持歡迎還是抵制態(tài)度,AI 新時(shí)代已經(jīng)勢(shì)不可擋! 本書將介紹 AI 輔助編程工具的工作原理,您學(xué)會(huì)之后就可以讓代碼編寫工作變得更輕松、 更迅速、更優(yōu)秀希望您喜歡閱讀本書,并能夠有所收獲,如果對(duì)本書有任何問題或意見,請(qǐng)給我發(fā)郵件: chris@ minnick.com
克里斯·明尼克(Chris Minnick)是資深技術(shù)作家、教育專家及程序員。獨(dú)著/合著技術(shù)書籍逾20部,包括多本達(dá)人迷系列暢銷作品,為頭部在線教育平臺(tái)開發(fā)視頻課程體系,長期為多家全球大企業(yè)提供編程與AI培訓(xùn)。
譯者序 Ⅲ引 言 Ⅳ 關(guān)于本書 Ⅴ 讀者對(duì)象 Ⅴ 書中圖標(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é)對(duì)編程 20 結(jié)對(duì)編程模式 20 與 AI 結(jié)對(duì)編程的利弊 21 AI 結(jié)對(duì)編程實(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)識(shí) AI 的局限 40 語言模型不擅長數(shù)學(xué) 40 語言模型啰唆冗長 41 AI 存在知識(shí)局限 42 AI 存在常識(shí)性問題 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é)對(duì)編程 59第 4 章 與聊天機(jī)器人一起編程 64 改進(jìn)提示詞 64 調(diào)整溫度 64 解讀提示詞的各元素 68 與 AI 一起寫代碼 開放式與封閉式提示詞 69 使用不同類型的提示詞 69 提升提示詞水平 71 與 Copilot聊天 72 了解斜杠命令 72 了解 Copilot智能體 73 利用 CopilotChat73 與 ChatGPT 聊天 75 注冊(cè)和設(shè)置 75 自定義說明 76 讓 ChatGPT 了解您 77 讓 ChatGPT 了解您的期望 79 深入理解 OpenAI 平臺(tái) 81 檢查積分 81 玩轉(zhuǎn) Playground 82 運(yùn)行示例 83 扮演不同角色 84 調(diào)整模型設(shè)置 84 獲取 API 密鑰 85 使用 OpenAI 開發(fā)聊天機(jī)器人 87第 2 部分 用 AI 編寫代碼第 5 章 從計(jì)劃到原型 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 自動(dòng)設(shè)置代碼格式 123 使用 AI 重構(gòu)代碼 128 識(shí)別代碼異味 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 輔助報(bào)錯(cuò) 148 使用靜態(tài)代碼分析工具預(yù)防錯(cuò)誤 151 安裝 linter 151 安裝 ESLint擴(kuò)展 152 使用 linter 修復(fù)代碼 153 linter 與 AI 相結(jié)合 154 更改規(guī)則 156 使用 AI 檢測漏洞 159 使用 AI 自動(dòng)修復(fù)漏洞 162 Snyk 簡介 162 Snyk 自動(dòng)修復(fù) 164 對(duì)自動(dòng)修復(fù)進(jìn)行驗(yàn)證 166 判斷是否適合自動(dòng)修復(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 編寫測試計(jì)劃 186 選用傳統(tǒng)還是敏捷計(jì)劃 186 測試計(jì)劃的分步驟流程 186 AI 在測試計(jì)劃中的作用 187 識(shí)別核心功能 187 生成測試場景 188 使用測試框架 190 安裝 Jest190 運(yùn)行 Jest192 生成測試用例 193 閱讀覆蓋率報(bào)告 196 分析測試結(jié)果 197 借助 AI 進(jìn)行測試驅(qū)動(dòng)開發(fā) 202第 10 章 代碼文檔化 209 使用文檔化機(jī)器人 209 構(gòu)建文檔助手 210 測試文檔助手 212 生成代碼注釋和注解 214 安裝和測試 Mintlify Doc Writer 214 測評(píng) Underscore 216 創(chuàng)建可視化文檔 219 生成序列圖 220 生成需求圖 221 使用 AI 實(shí)現(xiàn) API 文檔自動(dòng)化 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 啟用測試覆蓋率報(bào)告 240 分析代碼質(zhì)量指標(biāo) 240 使用 AI 提升代碼質(zhì)量 241第 4 部分 AI 工具與資源第 12 章 嘗試十個(gè) 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 章 了解十個(gè) 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