人工智能在編程和開發中的 7 個用例(以及 4 個人工智能失敗的地方)
已發表: 2023-09-13橡樹嶺國家實驗室的四位研究人員五年前發表了一篇論文,思考 2040 年人類是否還會編寫代碼。這個問題現在在大多數普通程序員的腦海中找到了答案。 對於這個問題的答案意味著什麼,人們存在憂慮和期望。
研究人員對這些問題的回答是否定的:機器將生成大部分代碼,而人類如果真的參與其中,將主要局限於改進機器生成的代碼。
人工智能領域的快速進步使這一預測更快地實現。 現在存在各種人工智能係統,可以根據簡單的描述甚至草圖生成功能代碼。 這帶來了希望,也帶來了陷阱。 人工智能可以通過接管瑣碎乏味的任務來提高生產力,釋放人類的潛力和創造力,從而開闢新的機會。 然而,它也可能會消除人為監督,從而使偏見長期存在,減少責任,並增加發生災難性錯誤的風險。
因此,在這裡,我們考慮了人工智能在編程和軟件開發中的七個用例,並評估了它出現問題的情況。
人工智能在編程中的常見用例
人工智能已經影響了工作的各個方面,實際上尤其包括編程和軟件開發。 一項調查顯示,31% 的組織使用人工智能來編寫代碼。 現在提出的問題不是人工智能是否會影響軟件開發,而是如何影響以及影響程度如何。
編程是人工智能對提高生產力和效率做出巨大貢獻的領域之一。 LinkedIn 的一份關於未來工作的報告預測,96% 的軟件開發任務可以通過人工智能來增強。 人工智能驅動的工具已被用於從基本到中等複雜的一系列任務。
生成代碼片段
人工智能工具經過來自 GitHub 和 StackOverflow 等公開存儲庫的數百萬行代碼的訓練,可以生成代碼片段,所需時間僅為人類編寫代碼片段的一小部分。 他們精通多種語言,可以用自然語言生成代碼。
這不僅對初學者有幫助,對熟練的程序員也很有幫助,他們可以讓人工智能編寫他們需要的簡單代碼。 然後他們可以調整或完善它,並在他們的程序中實現它。
人工智能尤其擅長生成代碼模板。 您可以向 AI 工具(例如 GitHub Copilot)提供一組參數,AI 將生成代碼模板。 這對於創建樣板文件或重複的代碼行非常有用。 人工智能還可以通過建議最有可能遵循的內容來幫助完成代碼,這與文本自動完成不同。 您還可以將不完整的代碼粘貼到AI編碼助手中,讓它完成代碼。
調試代碼
Bug 是每個程序員的禍根。 它們可能會浪費時間(例如,花幾個小時弄清楚為什麼代碼無法運行,卻發現這是因為缺少分號),但它們也會帶來嚴重的安全風險並損害用戶體驗。 人工智能可以緩解其中一些問題。 不僅如此:人工智能可以更準確、更快速地識別錯誤。
人工智能可以分析代碼,通過識別通常導致錯誤的不一致和模式來檢測錯誤。 它可以識別經常導致錯誤的代碼結構,並提醒開發人員潛在的問題。 人工智能還可以幫助進行回歸測試,並確保新的更改不會在代碼庫中引入錯誤。
然而,這並不意味著調試可以完全委託給人工智能。 這意味著人類可以將一些瑣碎而乏味的調試任務委託給人工智能,這將使他們能夠在可避免的工作上節省大量時間,並將更多時間投入到更有生產力的任務上。
翻譯代碼
假設您想要從一個平台或環境遷移到另一個平台或環境,或者在新的上下文中重用代碼的現有邏輯和功能。 在這兩種情況下,您都可以使用人工智能來幫助您翻譯代碼,而無需從頭開始重寫代碼。
然而,用於翻譯代碼的人工智能工具並不完全可靠。 他們可能無法注意到語言的細微差別或無法掌握代碼的邏輯; 但人類也是如此。 即使翻譯並不完全準確,它也會使任務比從頭開始手動翻譯源代碼容易得多。 這也就像與人工翻譯一起工作一樣; 如果有錯誤,翻譯後的代碼將被審查並更正。
用自然語言解釋代碼
人工智能可以用簡單的英語(或任何與此相關的語言)解釋代碼。 如果您正在學習一門新語言或者遇到隨機的代碼行但您不知道它的作用,這會很有幫助。
同樣,人工智能可以解碼正則表達式並用自然語言解釋它們的作用。
它不僅可以解釋晦澀難懂的代碼行,還可以幫助解釋它們。 人工智能可以創建全面的代碼文檔,準確描述代碼的目的、功能和用法。 人工智能還可以幫助審查和記錄代碼提交,並生成對拉取請求或提交中所做更改的解釋。
測試用例生成
徹底的代碼測試對於確保程序按預期工作至關重要。 但編寫測試用例和測試代碼是一個乏味且耗時的過程,因此經常被忽視。 值得慶幸的是,人工智能可以幫助完成這項任務。
人工智能可以通過分析代碼庫並識別潛在的測試場景來編寫測試用例。 它可以識別代碼中的不同路徑、分支和條件,並創建測試用例來覆蓋這些場景。
Tabnine 等人工智能助手可以自動生成單元測試,並以最少的人工干預自行執行測試。 然後,他們標記並報告任何失敗的測試用例,並提供測試摘要。 這有助於提高測試效率並減輕人類的負擔。
[來源-https://www.tabnine.com/blog/wp-content/uploads/2023/02/unittestgen.gif]
代碼重構
重構代碼是人工智能可以幫助完成的另一項耗時且乏味的任務。 人工智能可以幫助將調試和重構所花費的時間減少大約一半。
人工智能可以自動執行重構任務,例如重命名變量或方法、將代碼提取為函數、重新組織代碼結構,或者降低代碼的複雜性並增強代碼的可擴展性。
使用人工智能進行代碼重構不僅可以減少時間和精力,還有助於識別代碼異味並有助於在開發過程的早期修復潛在問題。 這降低了錯誤和技術債務的風險。
生成綜合數據
當真實數據不可用或因包含敏感信息而無法使用時,合成數據會派上用場。 合成數據消除了與使用受監管或機密數據相關的限制,因為它不包含個人信息。
人工智能可用於生成與現實世界示例非常相似的各種合成數據。 人工智能還可以為難以用真實數據重現的罕見或極端場景創建合成數據。 這可用於測試軟件在異常條件下的恢復能力。
人工智能還可以幫助生成合成數據,這些數據可用於增強真實數據集、平衡類別分佈並引入變化。
然而,人工智能並不是一劑靈丹妙藥
人工智能在編碼能力方面取得了顯著進步,尤其是在過去幾年中。 人工智能助手已經擅長自動化日常和瑣碎的任務,但他們在需要批判性思維的任務上卻遇到了困難。 他們無法理解軟件的底層原理和概念; 他們難以跟上新的框架和範式; 他們無法完全掌握現實生活中的場景。
以下是人工智能助手不可靠的四種情況,以及為什麼您需要為您的項目僱用應用程序開發人員。
構建複雜的軟件系統
人工智能係統缺乏設計和實施複雜流程所需的理解水平。 儘管他們可以單獨創建足夠複雜的函數,但當他們必須集成這些函數並考慮其他代碼的依賴關係時,他們就會猶豫不決。
了解直觀的用戶需求
理解和概念化用戶的需求和偏好需要同理心、背景以及對人類行為和情感的認識,而這些品質是人工智能工具所缺乏的。 人工智能係統在理解情感背景、主觀性和直觀用戶需求的細微差別方面的局限性使得它們與人類專家相比能力較差。
處理遺留代碼庫
人工智能工具很難完全解決遺留代碼庫的問題,這些代碼庫已經過時且經常過時。 此類代碼庫通常缺乏足夠的測試覆蓋率和文檔,這阻礙了人工智能工具的有效性。
使用新的框架和範例
數據是人工智能模型的基礎。 對於相對較新的框架和範例,沒有足夠的數據來訓練人工智能係統。 這使得它們不可靠,甚至存在風險; 因為他們不會承認自己無知,而是會非常自信地給出錯誤的答案。 即使是最謹慎的人,這種幻覺傾向也很容易誤導。
相關文章:為什麼使用 AI 和 ML 來增強您的日期輸入流程
最後的收穫
過去幾年,人工智能在編程和軟件開發領域取得了巨大進步。 人工智能係統使編程變得更加高效和簡化。 它們也影響了軟件開發的各個其他方面。 但它們仍然只是:工具! 人工智能需要人類來指導和監督其運作並判斷其結果的質量。
即使他們擅長完成任務,他們也需要人工監督。 而對於其他人來說,他們只是一敗塗地。 人力投入和專業知識在軟件開發中仍然不可或缺,這就是網絡應用程序開發公司繼續發揮重要作用的原因。