亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

【CSDN 編者按】這篇文章探討了軟件工程的復(fù)雜性,以及如何應(yīng)對。作者認(rèn)為,雖然大型語言模型(LLM)如 ChatGPT 可以減少編寫軟件時(shí)的“偶然復(fù)雜性”,但“本質(zhì)復(fù)雜性”仍然是一大挑戰(zhàn)。LLM 的出現(xiàn)將改變軟件工程,但我們?nèi)孕杈杵錆撛趩栴}。

原文鏈接:https://www.kolide.com/blog/can-chatgpt-save-programmers

作者 | Jason Meller譯者| 明明如月

責(zé)編 | 夏萌

出品 | CSDN(ID:CSDNnews)

ChatGPT 能拯救程序員嗎?

在我二十多歲時(shí),笑容常掛在我的臉上。最初我并未察覺,但和我熟悉的人都會(huì)注意到這一點(diǎn),大多數(shù)情況下,這被視為一種正面的特質(zhì)。

然而,有次一位軟件工程師用困惑和擔(dān)憂的眼神問我:“你為什么總是這么快樂?”

這個(gè)問題讓我有些意外。據(jù)我所知,我擁有一切應(yīng)當(dāng)讓人感到快樂的條件:我剛加入了一家我非常喜歡的公司,擔(dān)任的職位與我的專長高度匹配,同事們都是才華橫溢且工作熱情高漲的人。更重要的是,我們正在享受公司贊助的部門晚宴,這是一周緊張工作和會(huì)議后的輕松時(shí)光。在這樣的環(huán)境下,誰會(huì)不快樂呢?

答案出人意料:軟件工程師。

當(dāng)我環(huán)顧整個(gè)房間,忽略那些熱情洋溢的高級管理人員、愉悅的項(xiàng)目經(jīng)理和樂觀的用戶體驗(yàn)設(shè)計(jì)師后,我看到了另一幅畫面,一幅令人擔(dān)憂的畫面。

我們團(tuán)隊(duì)里最資深的工程師獨(dú)自坐在吧臺(tái)前,下巴放在手掌上,由于頭部壓力,肘部已泛紅。他另一只手的食指在吧臺(tái)上隨意地劃來劃去,顯然心情并不好。

在房間的另一個(gè)角落,四名工程師圍成一個(gè)小圈子。其中一人正用手勢激動(dòng)地解釋著某個(gè)問題,而其他人顯然是在不耐煩地等待他結(jié)束,以便他們能發(fā)表自己的觀點(diǎn)。他們的面部表情都很嚴(yán)肅。

后來我了解到,他們當(dāng)時(shí)正在討論一個(gè)表面上看似微不足道,但實(shí)際上非常有爭議的問題:數(shù)據(jù)庫中第一條記錄的 ID 應(yīng)該是 0 還是 1?

這讓我明白了,那名先前覺得我總是快樂的軟件工程師為何會(huì)有這樣的疑惑。作為一名編程專家,我為何總是笑容滿面呢?

如今,我 38 歲,肩負(fù)著一對嬰兒雙胞胎和一個(gè)三歲孩子的父親角色。同時(shí),我還是一家擁有 30 名員工的初創(chuàng)公司的創(chuàng)始人和 CEO。這家公司為數(shù)百家企業(yè)提供關(guān)鍵的身份驗(yàn)證服務(wù)。面對這么多身份和責(zé)任,額頭上的皺紋加深、體型微胖、頭發(fā)漸白,以及眼下的黑眼圈都似乎成了理所當(dāng)然的事。

然而,這些身體和精神的消耗主要源于一個(gè)因素:我依然在編程。

請不要誤解,我對編程依然充滿熱情,只是現(xiàn)在人們不再因?yàn)槲业臉酚^而稱贊我。

我并非孤例。Cobalt 最近發(fā)布的研究報(bào)告調(diào)查了超過 600 名網(wǎng)絡(luò)安全和軟件開發(fā)專業(yè)人士,揭示了一些令人震驚的現(xiàn)象:

  • 58% 的受訪者正面臨職業(yè)倦怠。
  • 53% 的受訪者考慮辭職。
  • 63% 的受訪者認(rèn)為工作對他們的心理健康有負(fù)面影響。
  • 64% 的受訪者認(rèn)為工作對他們的身體健康有負(fù)面影響。

回頭看看我以前的工程師同事,幾乎所有人都已經(jīng)不再進(jìn)行日常的代碼編寫工作。事實(shí)上,許多人已經(jīng)完全退出了科技行業(yè)。

一名程序員因職業(yè)倦怠而崩潰,這是他在被要求澄清一個(gè)問題時(shí)的真實(shí)回應(yīng)。

“哦,這有什么大不了的?”你可能會(huì)這樣想,“坐在 700 美元的椅子上,穿著睡衣,在 3000 美元的 macBook Pro 前工作 8 小時(shí),一周幾天,有什么難受的呢?”

現(xiàn)在,讓我來告訴你。

為什么軟件工程如此困難?

根據(jù)我的經(jīng)驗(yàn),如果你選擇軟件工程僅僅是為了賺錢,你在這個(gè)領(lǐng)域里可能走不遠(yuǎn)。事實(shí)上,對于大多數(shù)開發(fā)者來說,有數(shù)百個(gè)其他職業(yè)路徑可以提供同樣或者更高的薪資、聲譽(yù)和職業(yè)滿足感。

我們可以從另一個(gè)角度來深入了解編程如何影響個(gè)體情感。面對各種挑戰(zhàn),為什么人們還是堅(jiān)持下去?這些堅(jiān)持的原因通常是高度個(gè)人化和深刻的,但當(dāng)你與足夠多的人進(jìn)行交流后,你會(huì)發(fā)現(xiàn)一些反復(fù)出現(xiàn)的主題。

編程不僅是一種技術(shù)活動(dòng),更是一種高度創(chuàng)造性的過程,它常常觸及到思想和情感的深層。有時(shí)候,人們會(huì)以一種程序員完全沒法預(yù)見或者想象到的方式,來利用這些創(chuàng)新成果。也許,沒有什么比創(chuàng)造出別人能夠欣賞和使用的產(chǎn)品更能體現(xiàn)人類創(chuàng)造力的純粹性。

在這方面,1975年軟件工程經(jīng)典著作《人月神話》的作者弗雷德里克·布魯克斯是最有發(fā)言權(quán)的人。這些論文不僅歷久彌新,而且具有近乎神秘的相關(guān)性。以下是我最喜歡的一段文字,摘自名為 “工藝的樂趣” 的章節(jié)。

“在如此靈活的媒介中工作,確實(shí)帶來了一種獨(dú)特的愉悅。程序員,有點(diǎn)像詩人,工作的素材幾乎完全是思想。他們在虛空中構(gòu)建自己的‘城堡’,這些‘城堡’是由純粹的思想和想象力塑造的。很少有哪種創(chuàng)造性媒介能像編程語言那樣,容許你如此自由地打磨和重塑,如此方便地實(shí)現(xiàn)宏偉的構(gòu)想。”

布魯克斯還描述了編程的另一面,這一點(diǎn)體現(xiàn)在名為 “工藝的困擾” 的章節(jié)中。

“為了編程的有效性,人必須追求近乎完美的準(zhǔn)確性。在這一點(diǎn)上,計(jì)算機(jī)就像是傳說中的魔法。如果代碼中的一個(gè)字符、一個(gè)語法結(jié)構(gòu)沒有嚴(yán)格地按照規(guī)定來編寫,那么整個(gè)程序就可能無法運(yùn)行。人類并不特別擅長追求完美,而且很少有其他活動(dòng)會(huì)對人們?nèi)绱藝?yán)格地要求完美。我認(rèn)為,適應(yīng)這種對完美的高標(biāo)準(zhǔn),是學(xué)習(xí)編程過程中最具挑戰(zhàn)性的一部分。”

這篇文章寫于 1975 年。

延續(xù)布魯克斯的思想,我發(fā)現(xiàn)編程中的樂趣與困擾往往是交織在一起的。我最自豪的編程成就往往來自那些幾乎讓我精疲力盡的項(xiàng)目。解決了長期困擾我和我的團(tuán)隊(duì)的 bug 會(huì)帶來巨大的成就感。然而,這種成就感與陷入絕望時(shí)的沮喪是密不可分的。比如,花數(shù)小時(shí)去調(diào)試程序中一些令人困惑的行為,最后卻發(fā)現(xiàn)問題僅僅是因?yàn)槲覍懥?“initializer” 而非 “initialize”。這樣的經(jīng)歷對于我們中的大多數(shù)人來說,是一種無休止的循環(huán)。難怪在社交場合中,很少有人笑得出來。

數(shù)十年來,我們經(jīng)歷了計(jì)算能力的指數(shù)級增長、先進(jìn)開發(fā)工具的出現(xiàn),以及編程語言變得更加人性化。那么,為什么布魯克斯的觀點(diǎn)在今天仍然有強(qiáng)烈的共鳴呢?

概念壓縮與走向 AI 的路徑

在我 11 歲時(shí),我夢想著能制作一款屬于自己的游戲。

那一年,我在公共圖書館找到了一本名為《游戲編程大師的技巧》的書。書的封面設(shè)計(jì)得非常酷,仿佛是一款類似于 DOOM 的第一人稱射擊游戲的包裝。我心想,“這就是我要的。”我隨手翻開了書的某一頁,記得非常清晰,我看到了這樣一個(gè)圖表:

ChatGPT 能拯救程序員嗎?

其實(shí),當(dāng)時(shí)我認(rèn)識(shí)其中的一些單詞而已。

我仔細(xì)翻閱了整本書,試圖找到任何我能理解的、或者看起來稍微“像是游戲”的內(nèi)容。結(jié)果一無所獲。于是,我失望地合上了書,從此以后,我再也沒有告訴任何人我曾經(jīng)想成為一名游戲工程師。

然而,因?yàn)?ldquo;概念壓縮”的存在,下一代有志于游戲開發(fā)的年輕人會(huì)有全新的體驗(yàn)。

以 2015 年為例,一個(gè)名叫 Toby Fox 的 23 歲年輕人發(fā)布了一款名為 “傳說之下(Undertale)” 的游戲。這款游戲完全是在他個(gè)人的家用電腦上開發(fā)完成的。盡管這款游戲是自主發(fā)布的,但它成功賣出了數(shù)百萬份,并獲得了業(yè)界的一致好評。許多媒體甚至將其評為“年度最佳游戲”,擊敗了許多擁有巨額預(yù)算的 AAA 級游戲。

“傳說之下” 是在一個(gè)名為 Game Maker Studio 的可視化工具中開發(fā)的,這正是概念壓縮的體現(xiàn)。

概念壓縮 是由 David Heinemeier Hansson(DHH)首次提出的,他是 Ruby on Rails 的創(chuàng)始人。這個(gè) Web 開發(fā)框架不僅對我的整個(gè)科技職業(yè)生涯有著不可或缺的影響,也對我所在的 Kolide 公司非常重要。簡單來說,概念壓縮描述了編程從底層的二進(jìn)制語言,到更接近自然語言的 Ruby,再到如今的低代碼或無代碼工具,以及 LLM(Language-agnostic Low-code Model)的發(fā)展過程。

Hansson 創(chuàng)造這個(gè)詞組的博客文章 摘錄:

“在計(jì)算機(jī)科學(xué)領(lǐng)域,構(gòu)建應(yīng)用程序意味著在多層抽象的基礎(chǔ)上進(jìn)行開發(fā)。從 CPU、1 和 0,到匯編語言、C 編譯器、數(shù)據(jù)庫驅(qū)動(dòng)、內(nèi)存管理,以及其他無數(shù)關(guān)鍵概念,都是應(yīng)用程序運(yùn)行所依賴的基礎(chǔ)。然而,隨著這個(gè)行業(yè)的不斷發(fā)展,越來越少的開發(fā)者需要深入了解這些底層細(xì)節(jié)。

優(yōu)化‘概念壓縮’算法,以便減少開發(fā)者需要關(guān)注的底層復(fù)雜性,雖然是一項(xiàng)巨大的挑戰(zhàn),但絕對值得。我們越能有效地壓縮過去的復(fù)雜概念,進(jìn)入這個(gè)領(lǐng)域的門檻就越低。如果我們希望更多的人參與應(yīng)用開發(fā),降低入門門檻是必不可少的。”

“概念壓縮”不僅讓 Toby Fox 能夠開發(fā)出“傳說之下”,還極大地推動(dòng)了軟件工程領(lǐng)域新人的增長。然而,這些新入行者同樣需要面對這個(gè)行業(yè)帶來的各種挑戰(zhàn)和困擾。簡而言之,在降低編程的心理和情感負(fù)擔(dān)方面,讓編程“更易接近”并不意味著它也“更易操作”。

在開發(fā)“傳說之下”的續(xù)作過程中,Toby Fox 在多個(gè)進(jìn)度報(bào)告中分享了他的經(jīng)驗(yàn)。他談到了更換游戲引擎所導(dǎo)致的時(shí)間損失、與其他工程師合作的挑戰(zhàn)、由長時(shí)間編程引發(fā)的手腕疼痛,以及因項(xiàng)目周期過長(已達(dá) 8 年并仍在進(jìn)行)而導(dǎo)致的睡眠問題。

“雖然游戲尚未完全完成,但剩余的開發(fā)工作確實(shí)在逐漸減少。這是好事,因?yàn)樵谟螒蛲瓿芍埃颐客矶紩?huì)受到噩夢的困擾。”

那么,為什么即使“概念壓縮”增加了進(jìn)入這個(gè)領(lǐng)域的人數(shù),編程本身卻并沒有變得更簡單呢?尤其是對于那些在新型“概念壓縮”技術(shù)出現(xiàn)之前就已經(jīng)在這個(gè)行業(yè)工作的人來說。

事實(shí)上,這里的情況相當(dāng)復(fù)雜。雖然這些技術(shù)進(jìn)步讓編程變得更容易,但并沒有從根本上降低編程所需的勞動(dòng)強(qiáng)度。要理解這一點(diǎn),我們需要討論一個(gè)在軟件開發(fā)領(lǐng)域長期缺失的概念——那就是“銀彈”解決方案。

ChatGPT 對開發(fā)者來說是銀彈嗎?

Fred Brooks 在 1986 年的具有里程碑意義的論文《沒有銀彈——軟件工程的本質(zhì)與偶然》中開篇便提出了一個(gè)與本文討論密切相關(guān)的觀點(diǎn):

“在各種流行的神話和傳說中,狼人常常是最令人恐懼的存在,因?yàn)樗鼈兡茉谀阕畈活A(yù)料的時(shí)刻從一個(gè)熟悉的形態(tài)變?yōu)榭膳碌墓治铩榱讼麥邕@些威脅,人們常尋找能一擊致命的銀彈。

在非技術(shù)經(jīng)理的眼中,軟件項(xiàng)目往往也具有類似的特性:它們看似簡單、無害,但卻可能突然變成一個(gè)超出預(yù)算、延誤交付并且充滿缺陷的問題項(xiàng)目。因此,人們急切地尋找那個(gè)能像計(jì)算機(jī)硬件成本一樣迅速降低軟件成本的‘銀彈’。

然而,當(dāng)我們展望未來十年,我們并沒有看到這樣的銀彈解決方案。沒有任何單一的技術(shù)或管理方法能夠顯著提升生產(chǎn)力、可靠性或簡單性。”

盡管我建議你完整地閱讀這篇文章,但其中一個(gè)核心觀點(diǎn)是他對兩種不同類型復(fù)雜性的討論:偶然復(fù)雜性和本質(zhì)復(fù)雜性。Brooks 強(qiáng)調(diào),這些復(fù)雜性是編程工作中不可或缺的因素,因此沒有所謂的銀彈能完全解決這些問題。

偶然復(fù)雜性:工具導(dǎo)致的問題

在軟件工程領(lǐng)域,偶然復(fù)雜性是指由我們用于完成任務(wù)的工具和抽象層帶來的復(fù)雜性。這種復(fù)雜性也常被稱為附加復(fù)雜性,因?yàn)樗c工程師試圖解決的核心問題幾乎無關(guān),主要是因?yàn)槲覀兪褂玫墓ぞ呔窒扌詫?dǎo)致的不必要復(fù)雜性。例如,編程語言、庫、框架、測試方法、Web 服務(wù)器,以及用于數(shù)據(jù)庫查詢的語言都是偶然復(fù)雜性的來源。

需要明確的是,“偶然”并不等于“不重要”。實(shí)際上,許多開發(fā)者經(jīng)常遇到的問題往往與這種偶然復(fù)雜性有關(guān)。

編程中對人完美執(zhí)行的高要求就是一個(gè)偶然復(fù)雜性的例子。與大多數(shù)偶然復(fù)雜性一樣,這種復(fù)雜性可以通過改進(jìn)工具和流程來減輕,甚至有可能在未來完全消除。Brooks 也沒有否認(rèn)這一可能性。

本質(zhì)復(fù)雜性:問題固有的挑戰(zhàn)

在軟件工程領(lǐng)域,本質(zhì)復(fù)雜性是與你所要解決的具體問題緊密相關(guān)的復(fù)雜性。以主題公園(如迪士尼樂園的 FastPass)的游樂設(shè)施預(yù)約系統(tǒng)為例,無論你選擇何種編程語言來實(shí)現(xiàn)這個(gè)系統(tǒng),都需要解決一系列固有的復(fù)雜問題,以確保軟件的實(shí)用性。我們將在后文進(jìn)一步深入探討這個(gè)案例。

本質(zhì)復(fù)雜性也是導(dǎo)致開發(fā)難度增加的主要因素之一。你是否曾經(jīng)想過,為什么程序員需要掌握如此多看似無關(guān)緊要、但實(shí)則極其復(fù)雜的細(xì)節(jié)呢?這些都是他們在多年的職業(yè)生涯中不得不面對的本質(zhì)復(fù)雜性。

以斯坦威鋼琴工廠的員工為例,他們可能并不需要知道如何演奏鋼琴。然而,對于那些需要為數(shù)字音頻軟件開發(fā)一個(gè)模擬斯坦威鋼琴音效的插件的程序員來說,情況就不同了。為了精確地完成這項(xiàng)任務(wù),他們不僅需要了解鋼琴的基本工作原理,還需要對和聲學(xué)和共振有深入的認(rèn)識(shí)。甚至還需要掌握一些難以用語言描述的知識(shí)。這些知識(shí)更多地依賴于感覺和經(jīng)驗(yàn)。

那么,斯坦威鋼琴的音色為何如此引人入勝?它與其他如 Bösendorfer 或 Bechstein 鋼琴有何不同?想要在數(shù)字音樂領(lǐng)域做出有意義的貢獻(xiàn),程序員必須全面了解這些因素。這也是他們常感到壓力巨大的原因。在面對這些本質(zhì)復(fù)雜性時(shí),為了在這由“純粹思想”構(gòu)成的領(lǐng)域中脫穎而出,我們不僅需要對完美執(zhí)行有高要求,還需要精細(xì)地管理和掌控這些復(fù)雜性。

幾乎所有軟件工程的進(jìn)步都更多地減少了偶然復(fù)雜性而非本質(zhì)復(fù)雜性。這甚至包括像 ChatGPT 這樣的大型語言模型(LLMs)。

大型語言模型(LLMs)可以視為一種數(shù)字化的信息中心,能即時(shí)訪問各種重要數(shù)據(jù)。在最理想的情況下,這些模型能夠理解人類在書籍、互聯(lián)網(wǎng)以及其他計(jì)算機(jī)相關(guān)文檔中的所有有價(jià)值的信息。

經(jīng)過訓(xùn)練后,LLMs 能根據(jù)輸入的提示進(jìn)行概率性的回應(yīng)。對于每一個(gè)可能的回應(yīng)詞或“token”(可能是一個(gè)完整的詞或詞的一部分),模型會(huì)計(jì)算該詞作為下一個(gè)詞出現(xiàn)的概率,基于其在訓(xùn)練數(shù)據(jù)中觀察到的模式。這個(gè)過程就像是一個(gè)基于訓(xùn)練數(shù)據(jù)來猜測“下一個(gè) token 會(huì)是什么”的游戲。

令人驚訝的是,這種看似簡單的方法已經(jīng)是我們目前能夠?qū)崿F(xiàn)的最接近人類智能的技術(shù)。ChatGPT 的最新版本甚至能完成大多數(shù)高中、大學(xué)和研究生級別的任務(wù)。它們也能通過律師資格考試,盡管這更多地反映了我們的考試方式,而不是模型本身是否能成為優(yōu)秀的律師。盡管我不希望看到一個(gè)全由 LLMs 編寫的書籍世界,但我必須承認(rèn),不能忽視它們的能力和潛力。特別是,它們在減少軟件工程中偶然復(fù)雜性方面表現(xiàn)出色。

正因?yàn)?LLMs 的高度靈活性,它們可能是迄今最有效的工具,用于減少偶然復(fù)雜性對工程師時(shí)間的影響。LLMs 不僅能將你不熟悉的編程語言翻譯成你能理解的語言。它們還能教你如何高效地使用之前未接觸過的工程工具,并甚至能幫助你發(fā)現(xiàn)編譯器和 linting 工具難以識(shí)別的代碼錯(cuò)誤。

更重要的是,與以往任何工具不同,LLMs 是我第一次遇到的能夠減輕本質(zhì)復(fù)雜性負(fù)擔(dān)的工具以我們之前提到的迪士尼樂園“快速通行證”為例,如果我們想實(shí)施一個(gè)類似系統(tǒng)在自己的主題公園,應(yīng)從何開始?以下是我與 ChatGPT-4 在這個(gè)主題上的一次互動(dòng)。

ChatGPT 能拯救程序員嗎?

ChatGPT 提供了一個(gè)極其詳細(xì)的答案。然而,很難判斷它是否僅僅是用更多的冗余詞匯復(fù)述了我的問題。它解決了任何本質(zhì)復(fù)雜性嗎?讓我們來問問!

ChatGPT 能拯救程序員嗎?

對于對主題公園預(yù)約系統(tǒng)一無所知的人來說,ChatGPT 的答案無疑是極具參考價(jià)值的。它甚至涉及到了我未曾考慮過的緊急處理方面。當(dāng)然,專業(yè)的公園設(shè)計(jì)工程師可能會(huì)在這個(gè)答案中找出一些不足,但即便如此,這個(gè)答案為我提供了一個(gè)很好的出發(fā)點(diǎn)。

然而,這個(gè)答案更多地是對問題的描述,而并沒有給出具體的解決方案。那么,如果我們進(jìn)一步利用 ChatGPT 的能力,甚至讓它開始生成代碼,結(jié)果會(huì)如何呢?

ChatGPT 能拯救程序員嗎?

在代碼中,我們進(jìn)一步看到了在特定緊急情況下將預(yù)約重新分配給其他景點(diǎn)的考慮因素。如果沒有可用的游樂設(shè)施,它會(huì)向客戶道歉并提供賠償。這會(huì)是最終用于生產(chǎn)環(huán)境的代碼嗎?當(dāng)然不是。我將要花費(fèi)很多時(shí)間來處理緊急系統(tǒng)的編寫復(fù)雜性。這種復(fù)雜性有沒有得到實(shí)質(zhì)性的減少?答案是肯定的。

ChatGPT 的一個(gè)明顯短板是有輸入和輸出長度限制。以 ChatGPT-4 為例,其最大響應(yīng)長度限制為 8000 個(gè) token,大致等同于單詞數(shù)。這個(gè)數(shù)字聽起來似乎很大了,但在實(shí)際生成代碼的過程中,這一限制很快就會(huì)顯現(xiàn),尤其是當(dāng)你需要 ChatGPT 構(gòu)建一個(gè)完整系統(tǒng)時(shí)。即使嘗試通過多次交互來突破這一限制,你也會(huì)發(fā)現(xiàn) ChatGPT 開始忽略你最初提出的需求細(xì)節(jié)。因此,人類工程師仍需手動(dòng)管理 ChatGPT 的“狀態(tài)”,以生成一個(gè)完整且連貫的工作成果。然而,這個(gè)限制可能不會(huì)永久存在。

ChatGPT 還存在一個(gè)可能無法解決的問題,即它有時(shí)會(huì)產(chǎn)生被稱為“幻覺”的錯(cuò)誤。在這種情況下,ChatGPT 會(huì)編造信息,甚至可能扭曲基礎(chǔ)事實(shí),以便更方便地回應(yīng)你的問題。值得注意的是,當(dāng)你指出這些錯(cuò)誤時(shí),ChatGPT 通常會(huì)承認(rèn)并糾正它們。

人類在作為 Large Language Models (LLMs) 輸出的“質(zhì)量控制”方面發(fā)揮著關(guān)鍵作用。尤其對于經(jīng)驗(yàn)較少的工程師而言,LLMs 可能具有潛在危險(xiǎn)。這些工程師可能過去曾依賴于基于社交信號(如 StackOverflow 上的投票、Github 上的星標(biāo)、Reddit 上的贊同)或僅憑同事的信任來驗(yàn)證在線找到的不透明代碼。然而,當(dāng)涉及到 LLM 時(shí),這種方法并不可行。LLM 可能會(huì)用和給出好建議時(shí)相同的自信,提供不好的建議。

的確,和長度限制問題不一樣,這個(gè)限制可能是無法克服的。對于那些多年來一直使用 LLM 的人來說,它幾乎已經(jīng)融入了技術(shù)的基本原理。對 LLM 進(jìn)行專業(yè)級的人工監(jiān)督是必要的 —在評估 ChatGPT 針對現(xiàn)今軟件需求的性能時(shí),多數(shù)人關(guān)心以下幾個(gè)問題。作為一名資深軟件工程師、產(chǎn)品設(shè)計(jì)師、創(chuàng)業(yè)公司 CEO,以及 ChatGPT 的常規(guī)用戶,我將盡力給出這些問題的真實(shí)回答。

Q:ChatGPT 能否減少構(gòu)建和維護(hù)產(chǎn)品所需的軟件工程師人數(shù)?

A:確實(shí)如此,尤其適用于小型團(tuán)隊(duì)。ChatGPT 有效地降低了開發(fā)過程中的隨機(jī)復(fù)雜性,同時(shí)也在一定程度上減少了固有的復(fù)雜性,這樣你就可以在不需要大量專業(yè)人才的前提下,也能構(gòu)建完整的系統(tǒng)。

Q:ChatGPT 能否增加可供招聘的工程師數(shù)量?

A:是的,ChatGPT 使得編寫現(xiàn)代應(yīng)用程序?qū)τ诔鯇W(xué)者變得更為簡單。

Q:ChatGPT 能否減輕軟件工程的工作負(fù)擔(dān)?

A:是的,減輕程度顯著。

綜上所述,盡管 ChatGPT 存在局限性,但它實(shí)際上是現(xiàn)代軟件工程的一顆“銀彈”,這也是第一次證明布魯克斯的悲觀預(yù)測是錯(cuò)誤的。

這里有一個(gè)值得思考的問題:我說 ChatGPT 使現(xiàn)今軟件編寫更簡單,但是,誰能保證未來不需要新的軟件呢?

45 分鐘的困擾:一個(gè)個(gè)人經(jīng)驗(yàn)

在 COVID-19 疫情期間,許多人開始了遠(yuǎn)程工作模式。對于像我這樣初次體驗(yàn)遠(yuǎn)程工作的人,通勤時(shí)間從曾經(jīng)的漫長車程或地鐵行駛瞬間縮短為從床到電腦的幾秒鐘。我的通勤時(shí)間從 45 分鐘瞬間縮短到了 3 秒。

那么,我用這些額外的時(shí)間做了什么呢?多休息?或是在床上放松?并非如此,我反而找了各種瑣事和無聊任務(wù)來填補(bǔ)我的早晨。比如,我開始步行 45 分鐘來回,只為了買一個(gè)我認(rèn)為每天早晨必須吃的早餐三明治。當(dāng)我們搬家后,我和我的妻子不得不駕車穿越兩個(gè)城市,以便讓孩子繼續(xù)在原來的日托服務(wù)中心。猜猜我們每天的通勤時(shí)間是多少?沒錯(cuò),還是 45 分鐘。

Bruce Tognazzini 是一位領(lǐng)先的可用性設(shè)計(jì)專家和 Apple 人機(jī)界面指南(HIG)的創(chuàng)始人。他在 1998 年的一篇文章中曾探討了軟件工程與 UI 設(shè)計(jì)的復(fù)雜性問題。該文章題為“復(fù)雜性悖論”,其中提出了 Tog 的“通勤定律”:

“‘通勤時(shí)間是恒定的,只有距離是可變的。’這句話意味著什么?無論我們?nèi)绾闻p少復(fù)雜性,人們總會(huì)在生活中尋求相同或更高級別的復(fù)雜性。如果道路變得更暢通,人們會(huì)選擇更遠(yuǎn)的居住地。

結(jié)合 Tesler 的‘復(fù)雜性守恒定律’和 Tog 的‘通勤定律’,我們可以預(yù)見到未來可能出現(xiàn)的二階效應(yīng)。如果我們減少了人們在特定任務(wù)中感受到的復(fù)雜性,而人們?nèi)匀粌A向于維持相同級別的復(fù)雜性,那么他們會(huì)選擇更具挑戰(zhàn)性的任務(wù)。”

不論我對早餐三明治或遠(yuǎn)程日托服務(wù)的個(gè)人偏好如何,這種觀點(diǎn)同樣適用于我作為軟件用戶的經(jīng)驗(yàn)。

我第一次使用 Photoshop 是在 17 歲時(shí)。當(dāng)時(shí)我父親擁有一臺(tái)早期的 Sony Mavica 數(shù)碼相機(jī),該相機(jī)能將圖片直接燒錄到內(nèi)置的迷你可寫 CD 上。由于我?guī)缀蹩偸谴陔娔X旁,因此自然而然地成了負(fù)責(zé)“整理”這些照片的人。

我還記得第一張用于測試相機(jī)的照片,當(dāng)時(shí)是我編輯的。照片是我站在全身鏡前的特寫,無論是鏡子還是我自己,都顯得不太整潔。我的襯衫上沾滿了面包屑,臉上有不明物質(zhì),甚至牙齒里還有黑色的罌粟籽。我立即開始使用 Photoshop 中最新推出的修復(fù)畫筆工具,以改善我的形象。經(jīng)過一兩個(gè)小時(shí)的努力,雖然結(jié)果看起來有些不自然,但總體上比原來要好得多。接著,我開始編輯下一張照片,那是我妹妹坐在沙發(fā)上,兩側(cè)各有一只不太高興的暹羅貓。這張照片的問題更多:相機(jī)捕捉到了沙發(fā)和我妹妹黑色褲子上的所有淺灰色貓毛,背景的白墻因?yàn)檫^度曝光而變得過于明亮,以至于我妹妹的面部特征都模糊了。最終,我放棄了編輯,告訴家人不如保留原樣更好。“這樣看起來更自然,”我解釋說。我想他們接受了我的觀點(diǎn)。

如今,我大多會(huì)在手機(jī)上直接編輯為家人拍攝的照片。但說到“編輯”,其實(shí)我?guī)缀鯖]有做什么,因?yàn)楝F(xiàn)代 iphone 的照片質(zhì)量已經(jīng)相當(dāng)出色。雖然少花時(shí)間處理照片能多陪伴家人,聽起來不錯(cuò),但實(shí)際情況并非如此。

出于某種原因,我總是想進(jìn)一步優(yōu)化這些照片。我會(huì)將它們導(dǎo)入到最新版本的 Photoshop 中,進(jìn)行一些兩年前我還覺得不可思議的操作。例如,我會(huì)選擇一張照片,然后使用 Photoshop 的“Generative Outpainting(生成性圖像擴(kuò)展)”功能,讓 AI 根據(jù)周圍的像素預(yù)測并擴(kuò)展圖像。在另一張拍攝于城市中心、人群繁多的照片中,我會(huì)花費(fèi)時(shí)間逐一刪除其他人,讓我妻子看起來仿佛是地球上唯一的人。

ChatGPT 能拯救程序員嗎?

這是 Adobe Photoshop 當(dāng)前版本中“生成性擴(kuò)展”功能的一個(gè)示例。來源

然而,與近 20 年前使用修復(fù)畫筆的經(jīng)歷相似,我逐漸對這些高級工具和隨之而來的復(fù)雜性感到厭倦。這些工具運(yùn)行緩慢,容易出錯(cuò),通常需要多次嘗試才能達(dá)到滿意的效果。處理幾張照片后,我通常會(huì)覺得耐心已盡。然后,我就轉(zhuǎn)去做其他事情。

這正是 Tog 的“通勤定律”所揭示的一個(gè)簡單但令人沮喪的人性真相:我們生活中的許多復(fù)雜性和挫折不僅是自我造成的,還受到一種隱形但持久的平衡機(jī)制的影響。

在未來,程序的基礎(chǔ)復(fù)雜性可能會(huì)達(dá)到一個(gè)令人難以置信的程度。只有當(dāng)我們將人類的創(chuàng)造性與 LLM(大型語言模型)的生產(chǎn)力相結(jié)合,這種復(fù)雜性才可能變得可管理。與此同時(shí),由于大多數(shù)競爭市場的零和性質(zhì),我們?nèi)匀幻媾R著自計(jì)算機(jī)科學(xué)誕生以來一直存在的勞動(dòng)問題。即使我們解決了所有已知的問題,新的挑戰(zhàn)和問題也會(huì)不斷出現(xiàn),重新制造出相同的困境。總之,生活就像一場舞蹈,兩步向前,兩步向后。

在結(jié)束之前,我想說,盡管 ChatGPT 不能永久解決軟件工程的各種問題,但這并不意味著軟件開發(fā)的體驗(yàn)不能得到改善。這就是為什么我們所有人都需要從現(xiàn)在開始關(guān)注這些模型。特別是那些對大型語言模型(LLM)持負(fù)面態(tài)度的人,因?yàn)檫@些模型仍處于發(fā)展初期并具有可塑性。

大型語言模型(LLMs)勢不可擋,但我們可以影響它們

盡管像 ChatGPT 這樣的 LLMs 存在多種問題,從短期和長期角度來看,工程師接納這些模型仍符合我們的最佳利益。它們不僅簡化了當(dāng)前的軟件開發(fā)流程,而且可能是我們接近“無勞作”狀態(tài)的最佳途徑。更為重要的是,隨著用戶需求的不斷演變和 LLMs 帶來的生產(chǎn)力提升,這些模型將成為未來軟件開發(fā)的關(guān)鍵工具。

這并不意味著我們應(yīng)無條件接受 LLMs 所帶來的所有副作用。實(shí)際上,工程師而非高層管理人員將最終決定這些工具如何整合到我們的工作流程中,以及在哪些具體項(xiàng)目中應(yīng)用它們。此外,我們還需要明確哪些任務(wù)應(yīng)由人類完成,以保留人的獨(dú)特價(jià)值。

如果你是一名軟件工程師,現(xiàn)在正是時(shí)候與你的管理層合作,讓他們理解并接納 LLMs 在其擅長的領(lǐng)域(比如,輔助軟件開發(fā))的應(yīng)用,同時(shí)也要引導(dǎo)他們規(guī)避潛在的風(fēng)險(xiǎn)(例如,完全替代人類完成關(guān)鍵任務(wù))。

現(xiàn)在也是制定與 LLMs 交互的最佳實(shí)踐的好時(shí)機(jī),比如堅(jiān)持使用明確的提示和智能代碼補(bǔ)全,以及探索如何緩解它們的主要缺點(diǎn)(例如,通過添加社會(huì)信號來評估建議的質(zhì)量)。此外,我們還需要為新入行的工程師做好準(zhǔn)備,因?yàn)樗麄儚穆殬I(yè)生涯的第一天起可能就已經(jīng)會(huì)使用這些工具了。

對于工程管理層,現(xiàn)在是時(shí)候與工程師合作,制定詳實(shí)和務(wù)實(shí)的政策,這些政策不僅接受 LLMs 的不可避免性,還著重于教育員工關(guān)于它們可能帶來的知識(shí)產(chǎn)權(quán)風(fēng)險(xiǎn)、安全隱患以及對程序員長期能力的潛在影響。這一點(diǎn)尤為重要,因?yàn)槲覀兊囊豁?xiàng)調(diào)查顯示,雖然 89% 的員工定期使用 AI 工具,但只有少數(shù)人明確了這些工具的安全使用政策。

一旦你掌握了這些最佳實(shí)踐,與他人和公眾分享這些信息是至關(guān)重要的,這樣我們都能更好地適應(yīng)這個(gè)由 AI 輔助的工程工具主導(dǎo)的新時(shí)代。我們目前正在 Kolide 上制定 AI 的可接受使用政策,并計(jì)劃在有成果后盡快與大家分享。

LLMs 雖然不完美,可能永遠(yuǎn)也無法達(dá)到完美,但我們可以通過持續(xù)努力來改善這種情況。最終,LLMs 將成為每位軟件工程師工具箱中不可或缺的一部分。盡管如此,這個(gè)工具箱仍然會(huì)牢牢地依附于一個(gè)真實(shí)的人類,即使他的薪資很高,也可能并不總是面帶微笑。

你認(rèn)為 ChatGPT 能拯救程序員嗎?你認(rèn)為大語言模型對軟件開發(fā)將會(huì)有怎樣的影響?

參考鏈接

  1. Cobalt 最近發(fā)布的研究報(bào)告:https://www.cobalt.io/hubfs/State_of_Pentesting_2022.pdf
  2. 一名程序員因職業(yè)倦怠而崩潰:https://github.com/Docker/cli/issues/267#issuecomment-695149477
  3. 博客文章:https://m.signalvnoise.com/conceptual-compression-means-beginners-dont-need-to-know-sql-hallelujah/
  4. 進(jìn)度報(bào)告:https://undertale.com/deltarune-update-092020/
  5. 沒有銀彈——軟件工程的本質(zhì)與偶然:https://www.math.unipd.it/~tullio/IS-1/2004/Approfondimenti/BrooksNoSilverBullet.html
  6. LLMs 能根據(jù)輸入的提示進(jìn)行概率性的回應(yīng):https://writings.stephenwolfram.com/2023/02/what-is-chatgpt-doing-and-why-does-it-work/
  7. 我們的一項(xiàng)調(diào)查:https://www.kolide.com/blog/unmanaged-devices-run-rampant-in-47-of-companies

分享到:
標(biāo)簽:ChatGPT
用戶無頭像

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定