讓 AI 幫你寫程式:Vibe Coding 與技術人的新挑戰

更新 發佈閱讀 11 分鐘

前言

幾個月前在Discord上看到有人直播分享螢幕,縮圖是vscode,不免好奇點進去看看在做些什麼有趣的事。

只見他輸入描述到對話框中,等待幾十秒檢視專案後,畫面跳出更新專案的對話確認框,詢問是否採用此版本。採用後,程式依然有問題,於是他又直接輸入對話,表示程式有bug,要求重新檢視並進行修復,就這樣重複了3輪一樣的動作。

眼看他一直鬼打牆,忍不住提醒了一句:下方的log有告訴你在第幾行第幾列出現錯誤哦!然後,他停頓了半秒,平淡的回覆我:我不會寫程式,我只是在讓AI幫我做事。

幾個禮拜後,陸陸續續在國外各討論區看到Vibe coding一詞,才知道原來是這麼一回事。

AI工具協作

作為軟體開發,現階段工作上的使用,AI對我來說是一個更高階的搜索工具,也許以前要爬好爬滿stackoverflow、CSDN、GeeksforGeeks、reddit等討論區或技術文章,拼拼湊湊才能完成預想的功能實作,現在只要下好問題描述,很快就能得到一版可以動的雛形。

案例

使用copilot做為測試,要求提供一個程式,讀取資料庫拿到資料後轉成csv格式的檔案,實際描述我會傾向給予較明確的關鍵詞,例如:

給我一個java撰寫的程式,把oracle內資料表透過JDBC讀取後,輸出成csv檔案
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;

public class OracleToCSV {
public static void main(String[] args) {
String jdbcUrl = "jdbc:oracle:thin:@your_host:1521:your_db";
String username = "your_username";
String password = "your_password";
String query = "SELECT * FROM your_table";
String csvFile = "output.csv";

try (Connection conn = DriverManager.getConnection(jdbcUrl, username, password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
FileWriter writer = new FileWriter(csvFile)) {

ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();

// 寫入 CSV 標頭
for (int i = 1; i <= columnCount; i++) {
writer.append(metaData.getColumnName(i));
if (i < columnCount) writer.append(",");
}
writer.append("\n");

// 寫入 CSV 資料
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
writer.append(rs.getString(i));
if (i < columnCount) writer.append(",");
}
writer.append("\n");
}

System.out.println("CSV 檔案已成功產生:" + csvFile);

} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
}

優化

如果要進行優化,你會如何重構
要優化這段程式碼,我會考慮以下幾個方面:

1. 使用參數化 SQL 來防止 SQL 注入,並提高查詢的安全性。
2. 使用 try-with-resources 來確保資源正確釋放,這樣程式碼會更簡潔且降低潛在的記憶體洩漏風險。
3. 利用 StringBuilder 來提高字串處理效率,特別是在寫入 CSV 檔案時。
4. 允許動態指定輸出檔案,讓程式更加靈活。
5. 考慮使用 OpenCSV 或 Apache Commons CSV 來簡化 CSV 生成流程
import java.io.FileWriter;
import java.io.IOException;
import java.sql.*;

public class OracleToCSV {
private static final String JDBC_URL = "jdbc:oracle:thin:@your_host:1521:your_db";
private static final String USERNAME = "your_username";
private static final String PASSWORD = "your_password";
private static final String QUERY = "SELECT * FROM your_table";

public static void main(String[] args) {
String outputFile = args.length > 0 ? args[0] : "output.csv";
exportToCSV(outputFile);
}

public static void exportToCSV(String csvFile) {
try (Connection conn = DriverManager.getConnection(JDBC_URL, USERNAME, PASSWORD);
PreparedStatement stmt = conn.prepareStatement(QUERY);
ResultSet rs = stmt.executeQuery();
FileWriter writer = new FileWriter(csvFile)) {

ResultSetMetaData metaData = rs.getMetaData();
int columnCount = metaData.getColumnCount();
StringBuilder sb = new StringBuilder();

// 寫入 CSV 標頭
for (int i = 1; i <= columnCount; i++) {
sb.append(metaData.getColumnName(i));
if (i < columnCount) sb.append(",");
}
sb.append("\n");
writer.write(sb.toString());

// 清空 StringBuilder 用於寫入資料
sb.setLength(0);

// 寫入 CSV 資料
while (rs.next()) {
for (int i = 1; i <= columnCount; i++) {
sb.append(rs.getString(i));
if (i < columnCount) sb.append(",");
}
sb.append("\n");
}
writer.write(sb.toString());

System.out.println("CSV 檔案已成功產生:" + csvFile);

} catch (SQLException | IOException e) {
e.printStackTrace();
}
}
}

結語

姑且不論產業影響或人力取代,可以確定的是熟悉使用AI工具的人肯定更有優勢,技術學習成本也會越來越低,整體市場也更加競爭,因此訓練洞察力,能夠精準定位問題,會是凸顯能力的一大方向。


留言
avatar-img
Err500
14會員
83內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
Err500的其他內容
2025/04/03
這篇文章記錄了作者使用 Go 語言和 Ebitengine 遊戲引擎開發 2D 遊戲的心得,從專案初始化、安裝套件、實作遊戲介面到處理鍵盤輸入和邊界等,並分享了遊戲開發中學習到的經驗與知識。
Thumbnail
2025/04/03
這篇文章記錄了作者使用 Go 語言和 Ebitengine 遊戲引擎開發 2D 遊戲的心得,從專案初始化、安裝套件、實作遊戲介面到處理鍵盤輸入和邊界等,並分享了遊戲開發中學習到的經驗與知識。
Thumbnail
2025/03/28
本文章提供Neovim在Windows環境下的安裝教學與入門設定,從基本安裝、環境變數設定到使用kickstart.nvim套件快速配置IDE環境,降低新手入門門檻。文章也提及了進階設定與客製化的方向。
Thumbnail
2025/03/28
本文章提供Neovim在Windows環境下的安裝教學與入門設定,從基本安裝、環境變數設定到使用kickstart.nvim套件快速配置IDE環境,降低新手入門門檻。文章也提及了進階設定與客製化的方向。
Thumbnail
2025/03/16
這篇文章說明如何使用Spring JDBC Template從資料庫取得資料,並將其輸出為CSV檔案。文中詳細介紹了系統架構、程式實作,以及測試結果,並討論了未來可能的擴展。
Thumbnail
2025/03/16
這篇文章說明如何使用Spring JDBC Template從資料庫取得資料,並將其輸出為CSV檔案。文中詳細介紹了系統架構、程式實作,以及測試結果,並討論了未來可能的擴展。
Thumbnail
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
程式設計與技術能力 在現代社會中的重要性越來越明顯,尤其是在人工智能(AI)和自動化技術迅速發展的背景下。理解編程語言,如Python、R等,以及熟悉相關技術架構和工具,能夠幫助個人在這樣的環境中更好地工作。這種能力不僅對技術專業人士至關重要,也對非技術領域的人士日益重要,因為基礎的程式設計知識已
Thumbnail
程式設計與技術能力 在現代社會中的重要性越來越明顯,尤其是在人工智能(AI)和自動化技術迅速發展的背景下。理解編程語言,如Python、R等,以及熟悉相關技術架構和工具,能夠幫助個人在這樣的環境中更好地工作。這種能力不僅對技術專業人士至關重要,也對非技術領域的人士日益重要,因為基礎的程式設計知識已
Thumbnail
這篇整理了我這個月讀到關於「設計創作」和「AI」相關的內容,並且幫大家附上了來源,如果你想了解我這個月發現了什麼不錯的內容都可以在這裡找到,而且我還會加上我的一點個人回饋。 另外每月資訊量不同,造成每一類的內容不一,有的內容會比較多,如果你只想看精選,我會在每一類中都挑出 3 篇我最推的。
Thumbnail
這篇整理了我這個月讀到關於「設計創作」和「AI」相關的內容,並且幫大家附上了來源,如果你想了解我這個月發現了什麼不錯的內容都可以在這裡找到,而且我還會加上我的一點個人回饋。 另外每月資訊量不同,造成每一類的內容不一,有的內容會比較多,如果你只想看精選,我會在每一類中都挑出 3 篇我最推的。
Thumbnail
這篇文章探討了使用 AI 撰寫文章的挑戰和解決方法。指令過於精準會讓 AI 的文章缺乏變化和個人風格。建議將 AI 當作導師,利用其提問能力來引導思考,而非直接撰寫內容。這種方法不僅能加速思考過程,還能提升文章品質。經過一年的嘗試,作者體會到 AI 從助手逐漸成為思考夥伴的重要性。
Thumbnail
這篇文章探討了使用 AI 撰寫文章的挑戰和解決方法。指令過於精準會讓 AI 的文章缺乏變化和個人風格。建議將 AI 當作導師,利用其提問能力來引導思考,而非直接撰寫內容。這種方法不僅能加速思考過程,還能提升文章品質。經過一年的嘗試,作者體會到 AI 從助手逐漸成為思考夥伴的重要性。
Thumbnail
AI 工具雖能在短時間生成內容,但它不瞭解你的客戶,也無法取代你做現場互動交流。在合適的時機選擇使用適合的 AI 工具,幫助我們專注於最重要的人事物上。
Thumbnail
AI 工具雖能在短時間生成內容,但它不瞭解你的客戶,也無法取代你做現場互動交流。在合適的時機選擇使用適合的 AI 工具,幫助我們專注於最重要的人事物上。
Thumbnail
最新的AI趨勢讓人眼花撩亂,不知要如何開始學習?本文介紹了作者對AI的使用和體驗,以及各類AI工具以及推薦的選擇。最後強調了AI是一個很好用的工具,可以幫助人們節省時間並提高效率。鼓勵人們保持好奇心,不停止學習,並提出了對健康生活和開心生活的祝福。
Thumbnail
最新的AI趨勢讓人眼花撩亂,不知要如何開始學習?本文介紹了作者對AI的使用和體驗,以及各類AI工具以及推薦的選擇。最後強調了AI是一個很好用的工具,可以幫助人們節省時間並提高效率。鼓勵人們保持好奇心,不停止學習,並提出了對健康生活和開心生活的祝福。
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。
Thumbnail
這篇文章介紹瞭如何利用生成式AI(GenAI)來提高學習效率,包括文章重點整理、完善知識體系、客製化學習回饋、提供多元觀點等方法。同時提醒使用者應注意內容的信效度,保持學術誠信,適當運用GenAI能大幅提升工作效率。
Thumbnail
數位化時代中,人工智能(AI)已成為推動創新和進步的關鍵力量。本文探討AI的現狀、挑戰以及未來可能性,並提出負責任地發展和使用AI的思考。
Thumbnail
數位化時代中,人工智能(AI)已成為推動創新和進步的關鍵力量。本文探討AI的現狀、挑戰以及未來可能性,並提出負責任地發展和使用AI的思考。
Thumbnail
瞭解讓AI寫文章的好處,包括提高效率、快速獲取答案和資料整理
Thumbnail
瞭解讓AI寫文章的好處,包括提高效率、快速獲取答案和資料整理
Thumbnail
AI幫助創作者進行內容分析,提供發布設定的最佳建議,包括標題設定、文章分類、本文摘要、瀏覽縮圖和關鍵字設定。
Thumbnail
AI幫助創作者進行內容分析,提供發布設定的最佳建議,包括標題設定、文章分類、本文摘要、瀏覽縮圖和關鍵字設定。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News