我想分享一下我刻意逼自己在不使用 AI 的情況下完成開發時的興奮感。
我會說,自己大概已經斷斷續續學寫程式 3 年左右了。最近,我開始上一門叫做 Java 2 的課程。這門課是在前一門課學到的基礎概念上延伸。我覺得自己可能有點分心,一下子碰一點 Ruby,一下子摸一點 Python,然後週日下午再去 Java 裡晃晃。還好它們共享一些整體概念,不然真的會一團混亂。¯(°_o)/¯
當許多人都在大量依賴 AI,以閃電般的速度打造驚人的作品時,我有意識地決定,在我全力攻克這門課的第一個作業時,連一個 AI 工具都不打開。我對自己說:「不,我要吃點苦頭,因為我想真正理解。」而我可以告訴你,在一直使用 AI 之後,這次經驗讓我重新醒悟:當你不再依賴 AI 時,真正的回報其實是存在的。
我確實有用 Google 搜尋幾件事,但如果你問我,這是被允許的。畢竟,這可是網路啊。


<hr>
在我寫作業的某個時刻,事情又開始一點一點串起來了。那真是一個超棒的時刻。類別可以有方法,我們可以在 main 函式中呼叫它們,我可以用巢狀的 switch 陳述式來處理巢狀選單,而且我甚至能在資源很有限的情況下,像在現實生活中一樣除錯!我有兩次卡關,也有兩次帶著那種興奮的「**** 太好了,真的能跑!」的感覺走了出來——那種感覺我已經很久沒有體會到了。那種你努力撐過去、靠自己把看起來不可能的事情搞懂的感覺。
下面是我今天用巢狀 switch 陳述式做出來的子選單。
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
// 執行一個主控台程式,讓使用者新增並分析文字,
// 然後儲存並列印本次執行期間輸入的文字。
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
List<String> texts = new ArrayList<>();
boolean running = true;
System.out.println(" --------------------------------");
System.out.println("| Paragraph Parser |");
System.out.println(" --------------------------------");
System.out.println();
while (running) {
System.out.println("1. 一般文字分析");
System.out.println("2. 執行特定文字分析");
System.out.println("3. 顯示文字");
System.out.println("4. 離開");
int choice = readInt(scanner, "選擇一個選項:");
switch (choice) {
case 1:
Text analysisResult = displayText(scanner, "新增要分析的文字:\n");
System.out.println(analysisResult);
break;
case 2:
// 子選單文字分析工具的巢狀 switch
Scanner scannerNestedScanner = new Scanner(System.in);
boolean extraTestRunning = true;
while (extraTestRunning) {
System.out.println("1. 字詞頻率查找器");
System.out.println("2. 找出特定字元的出現頻率");
System.out.println("3. 找出不重複字詞數量");
System.out.println("4. 返回主選單");
int extraChoice = readInt(scannerNestedScanner, "選擇文字分析工具(輸入數字):");
switch (extraChoice) {
case 1:
WordFrequency wordFrequency = new WordFrequency(displayText(scannerNestedScanner, "輸入要搜尋的文字:\n").content.toLowerCase());
String wordToFind = displayText(scannerNestedScanner, "輸入要查找其頻率的字詞:\n").content;
wordToFind = wordToFind.replaceAll("\\p{Punct}+", "");
// 移除標點符號,避免影響字詞頻率計算
System.out.println("字詞頻率分析:" +wordToFind+ " -> " + wordFrequency.findWordFrequency(wordToFind));
break;
case 2:
CharacterFrequency charFrequency = new CharacterFrequency(displayText(scannerNestedScanner, "輸入要分析的文字:\n").content);
System.out.println("字元頻率分析:" + charFrequency.getCharacterFrequencyCount(displayText(scannerNestedScanner, "要找的是哪個字元?請輸入一個字元:\n").content.charAt(0)));
// 在這裡加入你的額外測試邏輯
break;
case 3:
UniqueWords uniqueWords = new UniqueWords(displayText(scannerNestedScanner, "新增要計算不重複字詞的文字:\n").content);
System.out.println("不重複字詞數量:" + uniqueWords.getUniqueWordCount());
break;
case 4:
extraTestRunning = false;
break;
default:
System.out.println("額外測試的選項無效。");
}
}
break; // 加上這個 break,避免 main switch 的 case 2 繼續落入 case 3。
case 3:
System.out.println();
displayTexts(texts);
break;
case 4:
running = false;
break;
// 必要時可繼續落入 default。
default:
System.out.println("選項無效。請再試一次。");
}
}
System.out.println("\n最終文字清單:");
displayTexts(texts);
scanner.close();
}
我發現巢狀 switch 陳述式不但做得到,而且很實用。我聽說這常常用在遊戲裡,能理解它要怎麼被整合進去,真的很不錯。
各位,我真心建議你們,先把 AI 放下幾個小時,去跟某件事硬碰硬吧。你原本的自己、那些你以為已經不見的感覺,會回來的!瞬間返老還童,幾乎保證有效。XD
告訴我,你最近挑戰自己在不使用 AI 的情況下做了什麼?
原文出處:https://dev.to/annavi11arrea1/remembering-why-we-code-dropping-ai-for-fundamental-learning-4868