讓 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
留言分享你的想法!
avatar-img
Err500
12會員
78內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
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
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
Thumbnail
常常被朋友問「哪裡買的?」嗎?透過蝦皮分潤計畫,把日常購物的分享多加一個步驟,就能轉換成現金回饋。門檻低、申請簡單,特別適合學生與上班族,讓零碎時間也能創造小確幸。
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能大幅提升工作效率。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News