白帶 · 程式思維
第 01 章

程式是什麼 —
給電腦的一份食譜

這章結束,你會用一句話說出「程式是什麼」,會知道電腦其實又快又笨, 也會親手排出一串指令、看著一個機器人照著走 —— 包括看它撞牆。這就是你人生第一個 bug。

開場 · 一個反直覺的事實

大家都以為電腦很聰明。其實剛好相反:電腦笨到只會照字面做事,一個字都不會自己補。 它厲害的地方只有一個 —— 快。你叫它做一件蠢事,它會用每秒幾十億次的速度,把那件蠢事做得完美無缺。 所以「寫程式」不是把電腦教聰明,而是把你腦中理所當然的每一步,拆到笨電腦也不會誤會。 這章我們就從一份食譜開始練這件事。

一、你整天都在被程式服務

你今天大概還沒寫過半行 code,但已經被幾十個程式伺候過了。早上叫醒你的鬧鐘,是一段 「到 07:00 就響」的指令;你嗶悠遊卡進站,背後是「扣款 → 開閘門 → 記錄時間」三步驟; 你點外送,App 把「找店家 → 送單 → 派騎手 → 通知你」串成一條流水線。

這些東西共同點是什麼?它們都是一步一步、講清楚的指令。沒有一個是靠「猜你想幹嘛」運作的。 鬧鐘不會「感覺你今天很累就多睡一下」,悠遊卡不會「看你趕時間就不扣款」。 它們忠實、死板、可預測 —— 這正是它們可靠的原因。

這就是我們這門課要交給你的第一個定義 —— 而且它會跟著你到第 20 章:

記住這句話

程式(program)= 一步一步、明確到不會誤會的指令。 就這樣。不玄,也沒有魔法。之後你看 AI 生出來的一大坨 code,本質也只是這個 —— 一串指令, 可以被你一步步讀懂、檢查。

二、電腦「快但笨」:泡麵災難實驗

想像你請了一個實習生(intern),他有兩個特性:動作快到看不清、但完全照你字面說的做,一個字都不會自己想。 這其實就是電腦的性格 —— 我們這門課會一直用「AI 是超強但會照字面做事的實習生」這個比喻,先在這裡認識它的原型。

你對他說:「幫我泡個麵。」聰明的人會自己補上一堆常識。這個實習生不會。他可能:把整包麵含塑膠袋丟進鍋、 因為你沒說「加水」所以乾煮、因為你沒說「開火」所以站在冷鍋前等一小時。他沒有惡意,也不笨到不會動作 —— 他是笨在「不會自己補你沒講的步驟」

你以為講清楚了 · 其實漏了一堆
// 你給的指令
(麵)

// 電腦真正需要的(每一步都不能少)
拿鍋子
加水(500, "毫升")
開火()
等水滾()
拆包裝()          // ← 少了這行,塑膠袋會一起煮
放入(麵)
等(3, "分鐘")
關火()

看懂重點沒有?災難不是因為電腦壞掉,是因為我們把「常識」當成理所當然。寫程式,很大一部分就是練習 「把腦內自動略過的步驟,逐一講出來」。這個習慣,之後你在跟 AI 下需求時會救你無數次。

三、程式語言:把人話翻成電腦話

電腦骨子裡只懂 0 和 1,直接跟它講 0101 沒人受得了。所以人類發明了 程式語言(programming language) —— 一種介於人話和電腦話之間的中介語言。你寫比較像人話的東西, 再由翻譯機(compiler/interpreter)轉成電腦看得懂的訊號。

這門課用 JavaScript(JS),因為它就活在你每天用的瀏覽器裡,不用裝任何東西(我們全程零安裝)。 但你先不用背語法。現在只要接受一件事:程式語言就是「講給笨實習生聽的、格式很嚴格的人話」。 嚴格到什麼程度?連少一個引號、少一個括號,它都會整個罷工 —— 這不是刁難你,是它真的沒有「猜」的能力。

你可能會問:那為什麼不乾脆用中文跟電腦講話就好?因為人話太模糊了。「幫我把數字加大一點」—— 加大多少?哪個數字?這種句子人類靠猜就能溝通,電腦一猜就錯。程式語言用嚴格的格式,換來一件事: 寫下來的每一句話,只有一種解讀。這其實對你是好事 —— 因為之後你讀 AI 寫的 code, 它也遵守同一套格式,不會有「這句話到底什麼意思」的模糊空間,你只要一行一行看下去就行。

為什麼標點這麼龜毛

你跟朋友說話漏個字,他照樣懂。電腦不行。console.log("你好") 少一個引號, 它不會體諒你「大概是想印字」,它會直接停下來報錯。精確,是程式語言的地板,不是加分項。

四、順序就是一切:換個順序就壞了

同樣的步驟,換個順序,結果可能天差地遠。這是程式最容易被忽略、卻最常出包的地方。

正確順序 · 出門

1 穿襪子
2 穿鞋子
3 出門

合理。走得出門。

同樣三步 · 換順序

1 穿鞋子
2 穿襪子 ←?
3 出門

襪子套在鞋子外面。電腦不會提醒你怪,它照做。

電腦是從上往下、一行一行執行的(我們叫它循序執行)。它不會回頭替你檢查順序合不合理。 這也是為什麼等一下的機器人實驗裡,你「前進、左轉」和「左轉、前進」會走到完全不同的格子 —— 指令的順序,本身就是資訊。

這個觀念到後面會一直回來找你。當你請 AI 寫一段流程,它偶爾會把兩步的順序放反 —— 例如「先送出訂單, 才檢查庫存夠不夠」。程式跑起來不會報錯,畫面看起來也正常,但邏輯已經壞了。 會注意順序的人,一眼就看出哪裡怪;只看「有沒有跑起來」的人,等出事才發現。 現在先把「順序=資訊」這件事刻進腦子,這是白帶最值錢的一課。

五、其實你早就會「演算法」了

演算法(algorithm)這個詞聽起來很嚇人,其實它只是「解決一個問題的明確步驟」。你每天都在用:

所以你不是「零基礎」。你腦中裝滿了演算法,只是從來不用把它們講到「笨實習生也不會做錯」的精細度。 寫程式的核心技能,就是把腦中的直覺,翻譯成一步一步、順序正確、精確到位的指令。 下面這個機器人,就是你第一次動手做這件事。

招牌互動 · robot-grid

指揮機器人走到旗子

關 1 關 2 關 3

用下面的按鈕把「前進 / 左轉 / 右轉」排成一串指令,按「播放」讓機器人逐步執行。 走到旗子過關;撞牆或出界,它會停下來 —— 那就是你的第一個 bug。

指令佇列 · 由左到右執行
還沒有指令。點上面的按鈕加進來。
準備好了。這是關 1:機器人在左下,旗子就在正上方三格。
✓ 三關全破 你剛剛做的,就是寫程式:把想法拆成順序正確的明確指令。+30 XP 入袋。

純 vibe coder 把 AI 當魔法箱:許個願、拿到一坨東西、能動就好、不能動就再許一次。 他心裡覺得裡面裝的是「魔法」,所以壞了也不知道從哪看起。

你從第一天就知道:AI 生出來的,跟你剛剛排的機器人指令是同一種東西 —— 一串一步一步、有順序、看得懂的指令。它撞牆,是因為某一步錯了,不是因為「魔法失效」。

具體差在哪個動作?當 AI 的 code 出錯,純 vibe coder 只會整段重 roll; 你會去看是「哪一步」錯了、順序對不對 —— 就像你會回頭看機器人是在第幾個指令撞牆的。 這個「能定位到某一步」的能力,就是這門課要幫你長出來的東西。

隨堂測驗 · 5 題

檢查一下這章

下一章預告

機器人要記住「自己面朝哪、走到第幾步」—— 電腦是怎麼「記住」東西的? 下一章 ch02 有名字的盒子,我們來認識變數(variable):程式用來裝資料的、貼了標籤的盒子。