【EP-23】 文組自學 Vibe Coding/AI 編程,要先有什麼基本認識?
完全無基礎就開始 Vibe Coding ,雖然有可能,但很快就會遇到難關。那麼有沒有什麼先備知識呢?今天就來討論這個問題。
最近在群組裡,看到某位網友表示自己是文組,程度是零,在使用 AI 寫程式時有點挫折。他認為自己應該補一下程式語言的相關知識,但是又不想從計算機概論開始讀起。
身為文組,我是心有戚戚焉,一開始的時候,我也是摸不著頭緒。
首先程式設計的方向很大,從網頁、手機App、遊戲、Arduino等等,開發方式都略有不同。
不管是哪一種,都有各種的眉角需要掌握。
雖然說這些知識,在 AI 時代完全不是問題,直接問就好了。
可是我們也不能沒有先備知識,至少得有個大致上的概念,我們才知道應該問 AI 什麼問題,而且能夠問到點上。
問對問題
數年前我對於網頁設計有興趣,所以就在網路上找相關課程,台大資訊系統訓練班是我一開始選擇的機構。
講師在教 HTML、CSS 時,我還可以理解,到了講 JavaScript時,我是真的無法理解在說什麼。
可是實體課程進度很快啊,大班教學,老師也不可能等你,所以糊里糊塗地課程就結束了。當時我連最後一堂都沒去,因為最後一堂要教作業,我根本寫不出來。
我後來復盤自己的學習軌跡,我覺得就是單純跟不上實體課程進度而已,畢竟平常都還要上班。
而且如果發生問題,當時也沒有 AI 可以問。如果在網路上瞎問,別人也不一定會回答。
許多新手會陷入的困境,往往是問題過於模糊,不知道該怎麼問。例如直接問「我的程式為什麼不能跑?」這樣的問題其實很難精準得到答案。
在 AI 時代,可以大幅地解決問問題的難題,但是仍然需要我們有一些基本知識。
因此最好的辦法,就是找一個線上課程,讓我們按照自己的步調學習。學習的過程有任何問題,再向 AI 或者社群發問。
這個線上課程,最好包含以下的基礎概念:
什麼是變數(Variable)?:變數用於儲存資料,以便在程式中反覆使用。
什麼是資料型別(Data Type)?:例如整數、字串、布林值等等,有些語言會需要指定變數的資料型別,例如C語言。
什麼是函式(Function)?:函式是將程式碼組合成一個獨立單元的工具,可以被重複使用。
什麼是函式庫(Library)?:函式庫是一個包含許多函式的集合,網路上有許多別人寫好的函式庫可以免費用,你可以想像成是工具箱。
什麼是框架(Framework)?:框架提供了一個整體的結構與設計模式,跟函式庫的原理很像。
常見網路錯誤碼:例如 404(找不到資源)、500(伺服器內部錯誤)、403(禁止存取)等等。
什麼是演算法(Algorithm)?:演算法是解決特定問題的一系列步驟或方法。
基本的版本控制(Version Control):例如 Git,了解如何追蹤程式碼變動,避免資料遺失或多人協作衝突。如果要用 AI 協作編程,一定要學會。
搞懂架構
完全使用 AI 編寫程式是未來的主流,事實上,在某些公司,AI 編程已經是主流了。
Meta 執行長佐伯格(Mark Zuckerberg)就曾經說過,Meta 可能在 2025 年擁有中階工程師程度的人工智慧。所有程式碼都會由 AI 產製。
在這個 AI 輔助程式設計的時代,比起細緻到每個函數和語法的細節,更重要的是掌握整體系統的架構。
所以我們要先搞懂什麼是「低耦合、高內聚」的設計風格。
低耦合(Low Coupling):指的是模組之間盡可能降低相互依賴,使得每個模組都能獨立運作,這樣當某個模組需要更新或替換時,不會影響到整個系統的穩定性。
例如在設計一個遊戲時,控制遊戲角色移動的模組,應該和處理遊戲音效的模組,盡可能獨立,這樣修改一邊時不會干擾另一邊。
高內聚(High Cohesion):指的是每個模組內部的功能應該集中,一個模組只負責幾個任務,這樣程式才能更容易理解、測試,以及維護。
例如遊戲內的「得分系統」模組應該只專注於得分計算和儲存,不要混入遊戲角色控制或遊戲關卡設計等不相關的功能。
使用 AI 協作編程更需要把握這一點,當程式碼越來越長,AI 越容易出錯。
因此一定要學會把程式碼拆開的技巧。
找對方向
最後我想講的是,根據我自己的經驗,要能夠精通程式設計,跟我們的職涯發展很有關係。
因為不同的目的和動機,會對我們學習的方法、投入的時間和資源有很大的影響。
例如我目前是科學機構的系統工程師,老實說我目前的工作內容,不太需要寫程式。就算要寫也都是寫 Shell Scripts。
那我的程式設計技能會增進嗎?有點難吧?
所以如果我們想精通程式設計,最直接有效的方法就是直接到該產業工作,例如從事網頁設計、遊戲設計、手機App開發等等。
一定要透過實際工作中的專案需求,面對老闆與同事的無情/可能也無理的挑戰,才可以更快地讓我們掌握程式設計的實務技能,培養解決問題的能力。
問題是,並不是每個人都能夠進入程式設計相關產業,那怎辦呢?
另外一條路,也是我現在走的路,就是在業餘時間,將程式設計當作副業。
我可以選擇一個自己感興趣,也相對簡單的小專案,例如建立個人網站、設計簡單的手機App、開發小遊戲,或者用 n8n 自動化生活或工作的任務。
業餘路線應該以興趣為核心,再利用 AI 工具盡可能地去嘗試各種可能,探索不同領域與技術,找出自己真正感興趣的方向再進一步深入鑽研。
哈佛大學 CS50
那麼,有沒有一種線上課程,能夠包含上面所說的內容呢?
有,哈佛大學 CS50x,現在你在 edX 上就能看到此課程,全程免費(除非你要證書),影片還支援中文字幕。
根據官方簡介,我們可以學到的內容:
對電腦科學與程式設計的廣泛且紮實的理解
如何以演算法思維進行思考,並有效地解決程式設計問題
抽象化、演算法、資料結構、封裝、資源管理、資訊安全、軟體工程與網頁開發等概念
熟悉多種程式語言,包括 C、Python、SQL、JavaScript,以及 CSS 和 HTML
如何與來自各種經驗層級、志同道合的學習者社群互動
如何開發並向同儕展示你的最終程式設計專案
事實上,CS50有各種變體,CS50x 是基礎通識課程,建議優先學習。如果還有時間,則可以依照個人興趣,選擇以下的各種課程。
CS50P - Python 程式設計入門,10 週
CS50R - R 語言程式設計入門,7 週
CS50S - Scratch 程式設計入門,3 週
CS50 SQL - SQL 資料庫入門,7 週
CS50L - 法律人專用的電腦科學,10 週
CS50B - 商業人士專用的電腦科學,6 週
CS50 Cybersecurity - 網路資安入門,5 週
CS50T - 科技概論,6 週入門
CS50 AI - 使用 Python 的人工智慧入門,7 週
CS50W - 使用 JavaScript 的網頁程式設計,12 週
我有思考是不是結合 AI ,來出一個系列導讀,不知道各位有沒有興趣。如果你也有興趣,請讓我知道。
最近我與一些網友辦了一場 Vibe Coding 黑客松,已經可以開始交件了。
如果你對於活動有興趣,也想認識更多朋友,歡迎報名。網址如下:
https://lu.ma/pqm0mg1a?ref=hackathon.vibecoding.tw