好的,ChatGPT剛剛幫我除錯程式碼。真的。

1-debugging(1).png

那麼,程式設計。對於那些從事程式設計工作的人來說,這是一場持續不斷的心智拼圖遊戲:一行行程式碼彼此疊加,建構起一座你希望足夠堅固不會倒塌的程式碼之塔。

但它總是這樣的。程式碼在首次運行時從來不會成功。因此,任何程序員都需要具備的關鍵技能之一就是調試 - 即找出為什麼程式碼無法運行或執行出意外或不理想的原因的藝術和科學。

這有點像是成為一名偵探,找尋線索,然後弄清楚這些線索試圖告訴你什麼。這既令人沮喪,也非常令人滿足,有時候甚至同時發生。

我進行很多除錯工作。這並不只是因為程式碼在執行首次時往往不會正常運作。也是因為我使用除錯來告訴我程式碼如何運行,然後在過程中進行微調。

但是雖然良好的除錯確實需要一套特殊的技能,但最終還是編程。一旦你弄清楚某段代碼為何無法運行,你就必須找出如何寫出能正常運行的代碼。

實際 ChatGPT 測試

這週,我在處理三個與我負責的軟體相關的編碼任務。其中兩個是用戶報告的錯誤修復任務,另一個是新增功能的程式碼。這對我而言是一項例行公事的編程工作,是我日常工作計劃的一部分。

同時:ChatGPT 如何運作?

我告訴你這件事,是因為迄今為止我一直在用測試代碼測試ChatGPT。我編造了情境來測試ChatGPT的效能。這一次不同了,我試著完成實際工作,並決定看看ChatGPT是否可以成為一個有用的工具來完成這項任務。

這是一種不同的觀點來看待ChatGPT。測試場景通常有點人為且簡單化。實際世界的編碼實際上是從堆疊中取出另一個客戶支援票證,然後處理造成用戶體驗不佳的原因。

那麼,請讓我們來看一下ChatGPT是如何完成這些任務的。

重寫正則表達式代碼

在編碼中,我們必須在文本中找到許多模式。為了做到這一點,我們使用一種被稱為正規表達式的符號數學形式。我寫正規表達式已經幾十年了,但我仍然不喜歡這樣做。它很乏味、容易出錯,而且很神秘。

此外:我正在使用ChatGPT來幫助我更快修復程式碼,但代價是什麼?

因此,當一個錯誤報告告訴我說我的程式碼中有一部分只允許整數,而應該允許美元和分(換句話說,一些數字,可能後面跟著一個句號,然後如果有句號,再跟著兩個數字)時,我知道我需要使用正規表示式編碼。

因為我覺得這很繁瑣和討厭,所以我決定向ChatGPT尋求幫助。這是我的問題:

2-regex-q.jpg

以下是AI的非常精彩的回复(點擊小方塊放大):

3-regex-a.jpg

我將 ChatGPT 的程式碼放入我的函數中,它運作正常。相較於花費約 2-4 個小時的抓狂時間,只需要大約五分鐘便能設定提示並從 ChatGPT 獲得答案。

重新格式化一個陣列

接下來我要重新排列一個陣列。我喜歡處理陣列的程式碼,但也很繁瑣。所以我再次嘗試了ChatGPT。完全失敗。

此外:如何讓ChatGPT提供來源和引用

總之,當我完成時,我可能輸入了十個不同的提示。有些回答看起來很有希望,但當我試著運行代碼時,它報錯了。有些代碼崩潰了。有些代碼生成了錯誤碼。還有一些代碼運行了,但不如我所願。

在持續約一小時後,我放棄了,回到我常用的方法,也就是在Github和StackExchange上搜索是否有我所需要做的事情的範例,然後自己寫代碼。

迄今為止,ChatGPT 的體驗有一次勝利和一次失敗。但現在,我將提出更大的挑戰。

實際上尋找我的程式碼中的錯誤

好的,這個細節有點難以解釋。但是請想一下,如果對你(預設你是一個人,而不是那些僅僅複製和轉載我的作品到詐騙、垃圾網站的大約 50 個機器人之一)來說解釋起來困難,那麼對於 AI 來說就更具挑戰性了。

我正在寫新的程式碼。我有一個函數,接受兩個參數,以及一個呼叫語句,將兩個參數傳遞給我的程式碼。函數是一個小黑盒子,執行非常特定的功能,它們被從程式的其他地方運行的代碼行呼叫(要求它們發揮魔力)。

問題是,我一直收到一個錯誤訊息。

該訊息的重點是在某個地方顯示"1 passed",而在另一處則顯示"exactly 2 expected"。我檢查了呼叫語句和函數定義,兩個地方的參數都是兩個。

還有: 如何使用 ChatGPT 概述一本書、文章或研究論文

什麼-the-ever-loving-F?

大約經過十五分鐘的深深挫折後,我決定讓AI來幫助我。所以,我寫下了以下提示:

4-untitled.jpg

我展示了它所呼叫的程式碼行數、程式本身以及處理程序,這是一個在我的主程式中的鉤子中調度被呼叫函數的小段程式碼。

在幾秒內,ChatGPT回覆了以下內容(點擊小方塊可放大):

5-error-with-apply-filters-in-wordpress.jpg

正如建議的那樣,我將add_filter()函式的第四個參數更新為2,然後它生效了!

ChatGPT 取得程式碼的片段,分析這些片段,並提供我診斷結果。明確地說,為了做出建議,它需要理解 WordPress 如何處理 Hooks(也就是 add_filter 函數的功能),以及這個功能如何轉換為呼叫和執行程式碼的行為。

此外:我要求ChatGPT為我撰寫一個我需要的WordPress外掛程式。它在不到5分鐘內完成了

我不得不把它標記為令人難以置信、無可否認的「活在未來」的不可思議。

這一切意味著什麼?

就像我之前提到的,調試是一門藝術也是一門科學。大多數好的開發環境都包含強大的調試工具,讓你在程序執行時查看數據的流動,這確實有助於追蹤錯誤。

同時還有一些專家正在競相保護人工智慧免受駭客的攻擊。

但當你卡住時,往往很難得到幫助。這是因為即使是一位親密的同事,可能也不熟悉你正在進行除錯的程式碼的全部範圍。我正在處理的程式由153,259行代碼分佈在563個文件中 - 對於程式來說,這是很小的一部分。

所以,如果我想要向同事求助,我可能不得不幾乎與我發給 ChatGPT 的請求完全一樣複製地構建一個請求。

但是还有一些需要考虑的事情:即使我没有意识到错误就在那里,我还是记得包含了处理程序行。作为一个测试,我还尝试让ChatGPT在一个没有包含处理程序行的提示中来诊断我的问题,但它无法提供帮助。所以目前,ChatGPT在调试方面确实存在非常明确的限制,截止到2023年。

此外:嘗試的最佳AI聊天機器人

基本上,您必須知道如何以正確的方式提出正確的問題,而且這些問題需要足夠簡潔,讓 ChatGPT 可以在一個查詢中完成整個操作。這需要實際的程式編程知識和經驗。

我自己能修复這個錯誤嗎?當然可以。我從來沒有遇到過一個無法修復的錯誤。但是無論是花了兩個小時還是兩天(加上披薩、咒罵和大量咖啡因),同時還要忍受許多打擾,這我就不清楚了。我可以告訴你的是,ChatGPT 在幾分鐘內修復了它,為我節省了大量的時間和挫折感。

展望(可能是反烏托邦的)未來

我看到了一個非常有趣的未來,在那個未來,我們可以將 ChatGPT 提供的 153,000 行程式碼中,並請它告訴你該修正什麼。微軟(擁有 Github)已經在開發一個名為「copilot」的工具,用於幫助程式設計師建立程式碼。微軟還投資了 OpenAI,ChatGPT 的製造者,投資金額高達數十億美元。

雖然該服務可能只限於Microsoft自家的開發環境,但我可以看到未來AI將能夠訪問Github中的所有代碼,因此也能訪問您在Github上發布的任何項目中的代碼。

同時: 我向 ChatGPT 要求編寫了一集短小的《星艦迷航記》劇集。它竟然成功了

考慮到 ChatGPT 從我提供的程式碼中很好地識別到我的錯誤,我絕對能看到未來的情景,即程序員只需請求 ChatGPT(或一個微軟品牌的等效物)來查找和修復整個專案中的錯誤。

現在,讓我將這個對話帶入一個非常黑暗的地方。

想像一下,您可以要求 ChatGPT 檢查您的 Github 儲存庫中的特定專案,並修復錯誤。其中一種方式是,它可以將找到的每個錯誤呈現給您以便取得批准,這樣您就可以進行修復。

但是,如果您只是要求 ChatGPT 修復錯誤,而不打算自己檢查所有的程式碼,這種情況又該如何呢?它會在您的程式碼中嵌入一些不好的東西嗎?

此外: Bard與ChatGPT的比較:Bard能幫助你編程嗎?

那麼,如果一個非常能幹的 AI 可以獲取幾乎所有在 Github 存儲庫中的世界各地的程式碼,那將會是怎樣的情況呢?它在所有這些程式碼中可能隱藏著什麼?如果它可以獲取我們所有的程式碼,這個 AI 對世界的基礎設施可能會造成什麼邪惡行為呢?

讓我們來玩一個簡單的思考遊戲。假設AI被賦予阿西莫夫的第一法則作為關鍵指示。也就是「機器人不得傷害人類,或以不作為的方式讓人類受到傷害。」它是否可能決定我們所有的基礎設施都在對我們造成傷害呢?通過擁有我們所有的程式碼,它可能會簡單地決定透過插入後門來拯救我們,例如關閉電力網絡、使飛機停飛和使高速公路發生擁堵。

我充分了解上述情景是夸张和危言耸听的。但这也是有可能的。毕竟,尽管程序员确实会在Github上查看他们的代码,但不可能有人能够查看他们所有代码中的所有行。

還有: 如何使用ChatGPT來編寫Excel公式

對於我來說,我打算不太多考慮這個問題。我不想在未來的十年中蜷縮在地板上前後搖晃。相反,我會偶爾使用ChatGPT來幫助我編寫和調試一些小程式,低調行事,並希望未來的人工智慧不會為了「不讓人類受傷」而殺死我們所有人。

你是否認為ChatGPT能夠進行除錯對你有幫助,還是感到可怕?你覺得人工智慧會在我們睡覺時殺死我們,還是你認為我們會用張大眼睛目睹我們的厄運?還是,像我一樣,你會盡量不去想它,因為這讓你的腦袋痛?在下方的留言區中與我交流吧。只要你還能。

相關文章

查看更多 >>

透過 HIX.AI 釋放 AI 的力量!