在AI時代,我們還需要學寫程式嗎?

一直想討論這個話題很久了,趁最近稍微比較有空來分享我的看法。

常常在網路社群看到大家在爭論類似的問題,像是有了coding agent我們還需要學寫程式嗎?工程師面試是不是不該考演算法了?既然大家都能vibe coding,Computer Science還值得讀嗎?

在討論這些問題之前,我想講講我覺得傳統寫程式中最重要的兩個核心能力:

(1) 程式語言的知識的掌握,包含像是程式語法、關鍵字、內建function、以及更深層程式語言特性(記憶體管理是傳值or傳址)等。

(2) 將抽象的”目標問題“轉化為”機器可執行的流程“的能力,我通常稱為程式邏輯。小的例子像是從判斷何時該用迴圈、何時該用遞迴、或是如何選擇最適合的資料結構,大的例子像是如何有效率地結合各個function、class、甚至是module和module之間的溝通架構。

能力(1)比較是程式語言綁定的,每個程式語言有自己的知識體系。在coding agent出現之後,我的確認為能力(1)的權重下降了。AI就像是一個強大的全語言知識庫,我們不再需要死背API或是語法細節,只要能用人類語言定義好規格,AI就能自動從海量知識中精準轉譯出正確的程式碼。

但能力(2)就稍微不一樣了,能力(2)跟程式語言是獨立的,比較像是特定的抽象邏輯思考能力,也正是我認為CS學生經過訓練後跟其他專業學生最不一樣的地方。人的思考方式和機器執行的方式有很大的不同,能力(2)正是那座橋樑,讓我們能夠用”機器視角”去拆解問題,進而能夠設計出更有效率的系統。

舉個例子,對多數人來說,學第一個程式語言通常比較困難,但當學會了一個程式語言,要學其他的程式語言就簡單多了,儘管語法架構不同,但寫程式的”邏輯”是一樣的,而這個”程式邏輯”正是能力(2)。

在CS的訓練中,資料結構和演算法無疑是重要的,它們讓學生學會如何從現有的基礎工具中,創造出更強大的工具。在掌握了陣列、迴圈、遞迴這些基本元素後,怎麼結合他們得到更有效率的結構,怎麼設計更好的運算流程得到更有效率的方法。軟體工程也同樣重要,讓學生學會怎麼設計出好的系統框架方便程式開發以及維護。這些訓練中,重要的不只是知識本身(資料結構、演算法、設計模式等),而是隱藏在這些工具背後的設計思維與問題解決邏輯。所以面試考資料結構演算法,其實本意是測驗思維邏輯,而不只是單純背方法。

我們正處於一個類似程式語言世代更迭的轉折點,像是從底層的組合語言到C語言,再演進至Java、Python等高階語言。在迭代中,一些對於底層語言很複雜的功會慢慢變成高階語言的基礎工具。現在AI正在定義一種更接近人類自然語言的”超高階語言”,雖然這降低了對傳統語法知識的依賴,但若要駕馭這種新語言,依然需要專業人士的程式思維與抽象邏輯去建構出更精巧的模組與結構,以解決更複雜的問題。

所以回到一開始的問題,在AI時代,我們還需要學習寫程式嗎?CS還值得讀嗎?如果你的目標是成為專家,我的答案是,是。要能夠打造出好用且有效率的系統和應用,真正核心往往不是程式碼本身,而是那些建構的邏輯和思維,而這些邏輯思維依然需要經過紮實且大量的訓練才能培養成型。我也相信CS不會因為AI的進步就變得過時,因為我們永遠到需要新的專業知識去應對這新的”AI程式語言”。

最後談談vibe coding,我認為這其實是一件好事。Vibe coding降低了進入程式設計的門檻,讓更多人能夠透過跟AI互動打造自己的小工具或是應用程式,可能因此對程式設計會有興趣。但如果你的目標是打造專業、高效、容易維護、具備可維護性、安全且不易被攻擊、甚至可以商用的軟體,我相信專業知識仍是必要的。