偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

這個(gè)“搭子”不賴!用AI實(shí)現(xiàn)結(jié)對(duì)編程

譯文 精選
人工智能
本文從“結(jié)對(duì)編程”的角度出發(fā),介紹了自己通過與AI交流合作,學(xué)習(xí)新的語言和框架,進(jìn)而重建博客的過程。

譯者 | 陳峻

審校 | 重樓

您聽說過“結(jié)對(duì)編程(Pair Programming)”的概念嗎?根據(jù)維基百科,它是由兩名程序員共同開展軟件開發(fā)的一種方式。其中的一名程序員(或稱“駕駛員”)負(fù)責(zé)編寫代碼,另一名程序員(或稱“觀察員”或“領(lǐng)航員”)需要在對(duì)方輸入每一行代碼時(shí),對(duì)其進(jìn)行審查。而且,兩名程序員經(jīng)常會(huì)互換角色。在審查的過程中,“觀察員”還會(huì)考慮工作的“戰(zhàn)略”方向,提出改進(jìn)意見,以及有待未來解決的問題。此舉的目的在于基于“觀察員”的指導(dǎo),“駕駛員”能夠?qū)⒆⒁饬θ考性谕瓿僧?dāng)前任務(wù)的“戰(zhàn)術(shù)”方面。

在過去的兩周里,我與人工智能(AI)一起,以結(jié)對(duì)編程的方式,在一個(gè)陌生的開發(fā)環(huán)境中,使用了對(duì)自己來說全新的語言和框架,重建了過往的博客。下面,我將分享該重建過程的一些與人工智能結(jié)對(duì)合作的經(jīng)歷。

背景介紹

為了確保人工智能在此次重建中發(fā)揮關(guān)鍵性作用,我制定了以下兩項(xiàng)規(guī)則:

  1. 使用傳統(tǒng)搜索引擎獲取信息的比例不超過20%。
  2. 不尋求其他開發(fā)人員的幫助。

換句話說,在這次開發(fā)和學(xué)習(xí)過程中,人工智能成為了我的主要信息來源、合作伙伴和助手。從某種意義上說,這種合作類似于我們?cè)陂_篇提到的、通過讓人工智能在其中扮演伙伴的角色,與之開展“結(jié)對(duì)編程”。因此,在整個(gè)過程中,我使用到了GitHub CopilotChatGPT、ClaudeWarp(一種人工智能助手)等服務(wù),并且將它們視為重要的編程“伙伴”。

選擇技術(shù)棧

在選擇技術(shù)棧的階段,我主要依靠的是ChatGPTClaude。通過向他們提供我的技術(shù)背景和具體要求等詳細(xì)信息,我在多輪溝通中逐漸明確了自己需要的編程語言、框架和編輯器。

如您所知,與人工智能的對(duì)話可謂既自由又發(fā)散。每當(dāng)人工智能給出建議或提示時(shí),我都會(huì)深入研究其對(duì)應(yīng)的方向和細(xì)節(jié),并定期總結(jié)自己的理解,以便再次與人工智能進(jìn)行確認(rèn)。與幾個(gè)月前相比,GPT-4Claude 2已不再一味地去迎合提問者,而是及時(shí)、禮貌地指出了我的理解總結(jié)中的錯(cuò)誤,并有效地避免了我在錯(cuò)誤的道路上越走越遠(yuǎn)。最終,我選擇了TypeScript、Astro、TailWindCSSVSCode作為博客重構(gòu)的必要技術(shù)。

在此階段,人工智能為我高效地提供了有價(jià)值的信息,而且?guī)椭铱焖俚刈龀隽藳Q策。究其原因,我歸結(jié)為如下方面:

  1. 明確的要求:清晰且通俗易懂的需求,能夠簡(jiǎn)化與人工智能溝通的整個(gè)過程,并使之快速明白提問者的意圖。
  2. 成熟的技術(shù)選擇:我所選擇的技術(shù)堆棧是由成熟的項(xiàng)目組成。這些項(xiàng)目通常擁有活躍的在線社區(qū)和豐富的官方文檔。這些信息為人工智能提供了可靠的語義資源,并確保了人工智能夠?qū)ζ渖婕暗降募夹g(shù)有深入理解。
  3. 結(jié)合個(gè)人經(jīng)驗(yàn):利用自己在其他編程語言方面的經(jīng)驗(yàn),我在“結(jié)對(duì)”討論中,使用了熟悉的語言、框架、以及開發(fā)環(huán)境作為參考,以幫助人工智能更好地理解我的需求。
  4. 多個(gè)人工智能平臺(tái)的互補(bǔ)性:我同時(shí)在ChatGPTClaude上開展了討論。雖然在大多數(shù)情況下,兩個(gè)平臺(tái)提供的信息整體相似,但是偶爾也出現(xiàn)不同的方向,這就相當(dāng)于您的“結(jié)對(duì)”中多了一個(gè)伙伴。
  5. 人工判斷不可或缺:盡管與傳統(tǒng)搜索相比,人工智能提供的信息總量有所減少,但是如果用戶缺乏分析能力和決策能力的話,他們可能仍然會(huì)犯“選擇困難癥”。因此,提問者必須具備較強(qiáng)的分析和判斷能力。否則,過度的自由可能會(huì)阻礙我們獲得令人滿意的結(jié)果。

設(shè)置開發(fā)環(huán)境

雖然我曾用過VSCode,但是從未將其作為我的主要開發(fā)工具。同時(shí),我在安裝Node.js和使用NPM方面的經(jīng)驗(yàn)也相對(duì)有限。對(duì)此,AI詳盡地協(xié)助我構(gòu)建出了開發(fā)環(huán)境。

值得一提的是AI回答命令行操作的過程。鑒于由Warp提供的AI助手使用起來非常便捷,因此在遇到錯(cuò)誤時(shí),我只需點(diǎn)擊閃電(??)按鈕,AI助手便會(huì)自動(dòng)將相關(guān)命令和輸出作為上下文,提交給人工智能。相比之下,在GitHub Copilot中,我得需要手動(dòng)選擇有待解釋的輸出內(nèi)容,以確保上下文的完整性。雖然我可以使用右鍵菜單中的人工智能選項(xiàng)、或快捷命令@workspace /explain #terminalSelection來完成這項(xiàng)工作,但總歸不如Warp便捷。

Xcode的集成測(cè)試環(huán)境不同,在VSCode中,開發(fā)人員需要根據(jù)所使用的語言和框架,來選擇合適的測(cè)試框架和插件。在此過程中,我曾遇到了一些困難。起初,我試圖根據(jù)人工智能的建議安裝Jest,但由于開發(fā)環(huán)境與Astro的兼容性問題,而未能成功。在與人工智能討論了幾次未果后,我轉(zhuǎn)而使用了搜索引擎,不過仍然找不到解決方案。最終,網(wǎng)上的一篇文章提及了一個(gè)我從未告知AI的知識(shí)點(diǎn),及其有關(guān)配置的背景信息。據(jù)此,在人工智能的指導(dǎo)下,我成功實(shí)現(xiàn)了對(duì)Jest框架的配置。

不過,在隨后的單元測(cè)試中,我又發(fā)現(xiàn)Jest無法與Astro的運(yùn)行環(huán)境協(xié)同工作。通過查閱Astro的官方文檔,我發(fā)現(xiàn)其實(shí)ViTest是更適合Astro的測(cè)試框架。而且,ViTest的安裝過程非常便利,可以完美地運(yùn)行Astro代碼的測(cè)試。

因此,在該項(xiàng)目中,我最終配置了兩個(gè)測(cè)試框架,即:將ViTest用于Astro特定測(cè)試,并將Jest用于其他測(cè)試。

此外,不知道是否配置問題,GitHub Copilot通過快捷命令所生成的默認(rèn)測(cè)試代碼是基于Jest的。而為了生成適合ViTest的測(cè)試代碼,我需要通過與AI對(duì)話,明確提出該請(qǐng)求方可。

通過上述經(jīng)歷,我意識(shí)到:即使有人工智能和搜索引擎的幫助,最權(quán)威的信息來源仍然是官方文件。也就是說,雖然人工智能對(duì)這些文件有相當(dāng)?shù)牧私?,但有時(shí)也會(huì)遺漏一些關(guān)鍵信息??梢姡俜轿募哂袩o可替代的權(quán)威性,仍然是我們首選的信息來源。

通過代碼閱讀學(xué)習(xí)新的語言

通過閱讀由Astro提供的官方模板,我了解了Astro,也是學(xué)習(xí)TypeScript的最佳途徑。同樣,在此階段,人工智能起到了決定性的輔助作用。它大幅提高了我的學(xué)習(xí)效率。在Astro項(xiàng)目中,Astro文件可能包含諸如:TypeScriptJavaScript、HTML、CSS、以及特定的Astro標(biāo)記與用法等各種元素。顯然,對(duì)于像我這樣沒有相關(guān)經(jīng)驗(yàn)的人來說,如果沒有人工智能的幫助,將很難知曉該從何處開始。

雖然Astro相比其他框架來說更新,但是人工智能的知識(shí)庫已經(jīng)能夠?qū)ζ鋼碛凶銐虻牧私猓⒖梢郧宄刂赋龃a不同部分的含義。通過人工智能對(duì)于具體代碼的詳細(xì)解釋,我逐漸理解了代碼的結(jié)構(gòu)和邏輯。甚至,對(duì)于那些我不理解的地方,它也能按需給出進(jìn)一步的解釋。

在與AI討論的過程中,我充分利用了自己對(duì)于其他編程語言和框架的了解,作為與人工智能對(duì)話的參考。同時(shí),我還會(huì)定期總結(jié)自己的理解,并請(qǐng)人工智能幫助糾正其中的錯(cuò)誤認(rèn)識(shí)。此外,隨著討論的深入,我也會(huì)定期要求人工智能提供之前討論過的結(jié)論,以作記錄之用。

該階段有關(guān)的代碼解讀和討論,主要是在GitHub Copilot中進(jìn)行的。雖然GitHub Copilot的總體表現(xiàn)良好,但我們?cè)谑褂眠^程中仍有一些事項(xiàng)需要注意,例如:

  1. 如果沒有選擇特定的代碼,GitHub Copilot只會(huì)解釋當(dāng)前編輯窗口中可見的代碼。
  2. 為了向GitHub Copilot提供更多的上下文,我們有必要手動(dòng)選擇要提交的代碼,以作為當(dāng)前問題的上下文。
  3. GitHub Copilot不支持跨多個(gè)文檔的討論,因此用戶需要自己整合不同文檔的內(nèi)容,才能形成完整的上下文。
  4. GitHub Copilot的答案有長(zhǎng)度限制。如果答案太長(zhǎng),它可能會(huì)提示涵蓋掉了已提供的代碼。在這種情況下,我們可能需要ChatGPTClaude的幫助。
  5. 在某些情況下,GitHub Copilot提供的答案質(zhì)量可能不如ChatGPT。

編程實(shí)踐

根據(jù)提示自動(dòng)生成代碼,是開發(fā)人員體驗(yàn)人工智能強(qiáng)大功能的最佳方式之一。最近在開發(fā)者社區(qū)中熱議的、前文已提到的GitHub Copilot,既有能力理解開發(fā)者的意圖,又能夠?qū)崟r(shí)生成高質(zhì)量的代碼。對(duì)于我的博客重構(gòu)項(xiàng)目而言,我不僅想創(chuàng)建一個(gè)新的博客,而且希望在此過程中學(xué)習(xí)和掌握新的語言和框架。對(duì)此,在啟用了GitHub Copilot后,只要我提供了足夠多的提示和注釋,Copilot就能夠快速地生成相應(yīng)的代碼。

起初我認(rèn)為這樣挺好,但是隨著使用的深入,我發(fā)現(xiàn)自己在短時(shí)間內(nèi),居然養(yǎng)成了向人工智能索取程序代碼的習(xí)慣。它讓我更關(guān)注的是注釋對(duì)代碼生成的影響,而不是具體代碼的實(shí)現(xiàn)概念。這顯然與我想通過重構(gòu)來掌握一門新的語言的愿望是相矛盾的。面對(duì)人工智能給出的代碼結(jié)果,我甚至產(chǎn)生一種以為自己已經(jīng)掌握了這門語言的錯(cuò)覺。

意識(shí)到這種情況后,我只有在無法獨(dú)立實(shí)現(xiàn)代碼的時(shí)候,才會(huì)啟用GitHub Copilot的實(shí)時(shí)代碼生成功能。也就是說,不管寫得好不好,我都會(huì)先嘗試著先自己寫,然后讓人工智能幫我發(fā)現(xiàn)問題,進(jìn)而逐步提高代碼的可讀性和可用性。在這個(gè)過程中,我會(huì)向人工智能請(qǐng)教語法上的細(xì)節(jié),讓人工智能指導(dǎo)我使用更符合TypeScript的編程范式、以及更合適的代碼實(shí)現(xiàn)方法。

由于同一功能的代碼會(huì)被多次重復(fù)創(chuàng)建,因此提前創(chuàng)建單元測(cè)試是非常重要的。在VSCode中,無論是Jest還是ViTest,都可以啟用自動(dòng)化測(cè)試,以便代碼在被修改后,立即運(yùn)行測(cè)試。我希望Xcode也能提供類似的功能。畢竟在不斷修改代碼的過程中,經(jīng)常會(huì)出現(xiàn)需要優(yōu)化或糾正錯(cuò)誤的情況。我們只有通過測(cè)試,才能及時(shí)發(fā)現(xiàn)問題。

小結(jié)

經(jīng)過這段時(shí)間與人工智能產(chǎn)品的密切合作,我逐漸認(rèn)識(shí)到:在有效利用人工智能的同時(shí),保持個(gè)人技術(shù)成長(zhǎng)和獨(dú)立思考的重要性。面對(duì)勢(shì)不可擋的人工智能的飛速發(fā)展趨勢(shì),它將毫無疑問地對(duì)我們未來的生活和工作等方方面面產(chǎn)生深遠(yuǎn)的影響。

目前,人工智能已經(jīng)具備了快速編寫代碼的能力,許多開發(fā)人員或多或少地?fù)?dān)心會(huì)被它所取代。作為一名開發(fā)人員,我認(rèn)為避免被取代的關(guān)鍵在于:不斷提高自身技能,展現(xiàn)人工智能無法取代的獨(dú)特價(jià)值。也就是說,過度地依賴人工智能確實(shí)可以在某些方面提高工作效率,或者實(shí)現(xiàn)以前不可能實(shí)現(xiàn)的結(jié)果。但是長(zhǎng)此以往,開發(fā)者可能會(huì)逐漸喪失自身優(yōu)勢(shì),最終從人工智能工具的使用者,很可能會(huì)轉(zhuǎn)變?yōu)槿斯ぶ悄芄ぞ叩闹郑喝祟愄崾旧善鳎℉uman Prompt Generators)。當(dāng)然,總的來說,人工智能在幫助我的學(xué)習(xí)和重建過程中,確實(shí)給我?guī)砹司薮蟮捏@喜。將來,我計(jì)劃將人工智能更多地融入自己的工作。

譯者介紹

陳峻(Julian Chen),51CTO社區(qū)編輯,具有十多年的IT項(xiàng)目實(shí)施經(jīng)驗(yàn),善于對(duì)內(nèi)外部資源與風(fēng)險(xiǎn)實(shí)施管控,專注傳播網(wǎng)絡(luò)與信息安全知識(shí)與經(jīng)驗(yàn)。

原文標(biāo)題:Pair Programming with AI,作者:fatbobman

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2013-01-30 10:03:01

結(jié)對(duì)編程編程語言

2013-05-06 10:22:07

結(jié)對(duì)編程敏捷開發(fā)敏捷管理

2013-11-28 10:22:37

編程結(jié)對(duì)編程

2013-06-20 09:38:57

2010-01-27 09:33:40

結(jié)對(duì)編程

2015-09-11 08:59:03

結(jié)對(duì)編程

2023-01-18 23:20:25

編程開發(fā)

2013-05-24 09:37:25

結(jié)對(duì)編程結(jié)對(duì)編程實(shí)踐BitBucket

2014-03-03 09:48:55

SSHTmux

2023-04-20 18:45:44

2015-09-11 09:43:27

分析編程特征

2011-06-03 09:58:03

結(jié)對(duì)編程程序員

2021-04-18 07:09:50

工具類異步編程

2017-10-20 11:07:45

編程代碼編程模式

2011-08-30 10:03:59

軟件工程

2025-04-07 00:00:00

DeepSeekAI輔助編程
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)