覺得根基不穩?從 CS50 再次找到基礎的力量

更新 發佈閱讀 6 分鐘

寫 Python、跑模型、做後端、架 pipeline、分析數據,這些事對我來說都不算陌生。但越做越久,我越發現 — — 我會「用」,但有些更底層的東西,我其實沒有學過。

例如:程式寫好之後,compile 到底在做什麼?

Python 不需要 compile,我以前也不太在意;

但真正開始學 C 之後,才發現這背後有一整個世界:preprocessing、compiling、assembling、linking… 每一層都像在拆開機器外殼,讓你看見齒輪是怎麼咬合在一起的。

而我喜歡 CS50 的最大原因,就是:

它帶著你去理解「表象背後」,事情真正的運作方式

AI 時代,基礎更珍貴

現在是 AI (從 gpt 到最近的 Gemini 3 Pro) 迭代超快的時代。

就算不懂底層程式語法、不懂資料結構,也可以靠 AI 做出一個 prototype,只要下幾個 prompt 就好

  • 比如一個股票資產管理平台
  • 或一個日記 app
  • 甚至小型的工具服務或自動化流程

AI 讓「學習門檻」變低了,但也讓我更想知道:

如果我真的對這些技術有興趣,我是不是也想理解它們到底怎麼運作?

這就像是:

可以不用懂引擎,也能把車開得很順;但如果有一天你開始對機械感興趣,就會想知道引擎怎麼燃燒、齒輪怎麼轉動。

我覺得我現在就處在這個階段。

工作後再回來上 CS50 的感覺:紮實、穩定、甚至有點感動

以前還沒有足夠的工作經驗,很多東西聽得懂,但沒有「深度的懂」,大概只停留在會用,程式會動的階段。

隔了幾年、經歷了職場、寫過更多 code、踩過更多坑後再回來上 CS50,

那種感覺完全不一樣。

你會理解老師為什麼要講這些、

會知道某些觀念以後真的會用到、也會在某些瞬間突然體會「啊原來我以前一直都只懂表面」。

例如:

  • 不同資料型別為什麼需要不同的記憶體空間
  • ASCII 字母大小寫之所以能互換,是因為設計上剛好只差 32(而那背後其實藏著非常巧妙的位元邏輯)
  • 程式語言裡的「抽象化」為什麼那麼重要、為什麼它能讓程式設計變得乾淨

雖然 CS50 的課程是用 C 語言教學,但我主要的開發語言是 Python。

所以在學 C 的過程中,我常常會不自覺開始對照:「欸,Python 有沒有類似的語法?」

這種「跨語言反思」反而讓我學得更快、更立體。

例如:

  1. 在 loop 裡直接建立變數(Python 有嗎?)
    C 語言:
int n = strlen(s);

for (int i = 0; i < n; i++) {

Python 語言:

寫法一:

n = len(s)
for i in range(n):
if s[i] >= "A":
...

寫法二: 最 Pythonic 的寫法:用 enumerate

for i, ch in enumerate(s):
if ch >= "A":
...

寫法三:真的想「一行處理」 — — 海象運算子 :=(python 3.8)

for i in range((n := len(s))):
...

2. C 語言的 function prototype vs Python 的函式定義順序

在 C 語言:如果某個 function 的定義寫在 main() 後面,但你想在 main() 裡呼叫它,那就必須先宣告

void hello(void); // function prototype

int main(void) {
hello();
}

void hello(void) {
printf("hi!");
}

但是在 Python

Python 沒有 function prototype

因為 Python 是直譯式語言,它會從上往下執行。

因此 Python 的習慣是:

所有函式、類別都放在上面

主程式邏輯放在最下面:

def B():
print("hi")

def A():
B()

if __name__ == "__main__":
A()

這樣也能支援模組化:

當這個檔案被 import 時,底部的程式不會跑。

我目前學習進度

  • Week0 — Scratch
  • Week1 — C
  • Week2 — Arrays

每堂課大約 2.5 小時,並且在 Heptabase 做筆記,大概 4 小時能完成一週內容。我是在 edX 上學習,也有各個不同的平台可以選擇(例如: youtube) 而且 CS50 是 免費課程,完成課程後可以付費取得證書。

課程連結:https://www.edx.org/learn/computer-science/harvard-university-cs50-s-introduction-to-computer-science

vocus|新世代的創作平台

最後我覺得在任何時間點,都可以開始 CS50的課程

不管你是:

  • 轉職的人
  • 想補 CS 基礎
  • 工作很多年後突然覺得「底層好像不太懂」
  • 或單純想把「會用」提升成「會理解」

都可以再回來學 CS50。

有時候反而因為有經驗,更懂得這些知識的價值。

最後

附上在 Heptabase 白板整理的 snapshot (白板累積越來越多的卡片)

有需要的話~ 🎁 Heptabase 折扣碼:https://join.heptabase.com?invite-acc-id=889dbd70-632c-446d-b7f8-ffa41b27e716

有需要筆記的人可以透過 email (karen.kao.2023@gmail.com) 聯繫我~

vocus|新世代的創作平台
vocus|新世代的創作平台



留言
avatar-img
Karen的沙龍
37會員
60內容數
歡迎來到《桃花源記》專欄。這裡不僅是一個文字的集合,更是一個探索、夢想和自我發現的空間。在這個專欄中,我們將一同走進那些隱藏在日常生活中的"桃花源"——那些讓我們心動、讓我們反思、讓我們找到內心平靜的時刻和地方
Karen的沙龍的其他內容
2025/11/13
接手「寫到一半的專案」常讓人頭痛,需求、程式碼、版本、註解混亂不堪。本文分享一套實際可行的框架,讓你釐清現況、建立差異清單、制定修復計畫,並依照「跑通→驗證→測試」的策略逐步推進,最終穩定專案並成功上線。
Thumbnail
2025/11/13
接手「寫到一半的專案」常讓人頭痛,需求、程式碼、版本、註解混亂不堪。本文分享一套實際可行的框架,讓你釐清現況、建立差異清單、制定修復計畫,並依照「跑通→驗證→測試」的策略逐步推進,最終穩定專案並成功上線。
Thumbnail
2025/05/13
這篇討論資料科學家是否需要了解系統整合測試 (SIT) 與使用者驗收測試 (UAT)。文章指出,這取決於資料科學家的角色和工作類型。學術研究型或只做模型開發的資料科學家不太需要;企業內部資料產品導向的資料科學家需要理解但不需主導;全端資料科學家、MLOps 工程師或新創公司的資料科學家則非常需要。
Thumbnail
2025/05/13
這篇討論資料科學家是否需要了解系統整合測試 (SIT) 與使用者驗收測試 (UAT)。文章指出,這取決於資料科學家的角色和工作類型。學術研究型或只做模型開發的資料科學家不太需要;企業內部資料產品導向的資料科學家需要理解但不需主導;全端資料科學家、MLOps 工程師或新創公司的資料科學家則非常需要。
Thumbnail
2025/04/21
這篇文章分析了學習英文的動機,根據Instagram抽書活動的留言,利用文字雲技術,歸納出大眾學習英文的主要原因是提升職場競爭力,並拓展國際職場機會。學習英文已不再是選項,而是攸關職涯發展的關鍵,持續提升英文能力將為個人帶來更多職涯選擇。
Thumbnail
2025/04/21
這篇文章分析了學習英文的動機,根據Instagram抽書活動的留言,利用文字雲技術,歸納出大眾學習英文的主要原因是提升職場競爭力,並拓展國際職場機會。學習英文已不再是選項,而是攸關職涯發展的關鍵,持續提升英文能力將為個人帶來更多職涯選擇。
Thumbnail
看更多
你可能也想看
Thumbnail
學習Python核心語法,從變數、資料型態到物件導向程式設計,涵蓋15個重要技巧,並包含實例與說明,助你快速建立程式基礎。
Thumbnail
學習Python核心語法,從變數、資料型態到物件導向程式設計,涵蓋15個重要技巧,並包含實例與說明,助你快速建立程式基礎。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文章提供前端開發的完整知識地圖,涵蓋 JavaScript 基礎概念、進階概念、前端開發基礎、前端框架與工具、系統設計與架構,以及開發工具與實作等面向,並以 SEO 友善的方式撰寫,適合想學習前端開發或準備面試的讀者。
Thumbnail
本文章提供前端開發的完整知識地圖,涵蓋 JavaScript 基礎概念、進階概念、前端開發基礎、前端框架與工具、系統設計與架構,以及開發工具與實作等面向,並以 SEO 友善的方式撰寫,適合想學習前端開發或準備面試的讀者。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
從今天開始往後的的內容會有許多的「註解」,程式不會執行被註解的內容,註解只是方便開發者辨識。JS內的註解主要有兩種。單行註解是在程式碼前方加上//,可以透過快捷鍵cmd(ctrl) + / 完成。多行註解則是用/* 及 */前後包夾要註解的內容。 轉換環境 從上個單元的經驗,有些人可能會發現
Thumbnail
從今天開始往後的的內容會有許多的「註解」,程式不會執行被註解的內容,註解只是方便開發者辨識。JS內的註解主要有兩種。單行註解是在程式碼前方加上//,可以透過快捷鍵cmd(ctrl) + / 完成。多行註解則是用/* 及 */前後包夾要註解的內容。 轉換環境 從上個單元的經驗,有些人可能會發現
Thumbnail
在學習 Python 的初期,我們常常會從一些小小的專案開始練習。今天要帶你做的,就是其中一個經典的入門練習——簡單計算機。 這個練習的目標是:讓程式接收兩個數字和一個運算符(+、-、*、/),並回傳正確的計算結果。 可以在Visual Studio Code中執行 #!/usr/bin/
Thumbnail
在學習 Python 的初期,我們常常會從一些小小的專案開始練習。今天要帶你做的,就是其中一個經典的入門練習——簡單計算機。 這個練習的目標是:讓程式接收兩個數字和一個運算符(+、-、*、/),並回傳正確的計算結果。 可以在Visual Studio Code中執行 #!/usr/bin/
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
背景:從冷門配角到市場主線,算力與電力被重新定價   小P從2008進入股市,每一個時期的投資亮點都不同,記得2009蘋果手機剛上市,當時蘋果只要在媒體上提到哪一間供應鏈,隔天股價就有驚人的表現,當時光學鏡頭非常熱門,因為手機第一次搭上鏡頭可以拍照,也造就傳統相機廠的殞落,如今手機已經全面普及,題
Thumbnail
學習如何使用Python編寫一個數字猜謎遊戲,從中學習隨機數生成、使用者輸入、條件判斷和迴圈等程式設計基礎概念。
Thumbnail
學習如何使用Python編寫一個數字猜謎遊戲,從中學習隨機數生成、使用者輸入、條件判斷和迴圈等程式設計基礎概念。
Thumbnail
深入探討操作系統和中央處理單元 (CPU) 的基本概念,涵蓋 OS 的功能、CPU 的運作,以及程式與執行緒的管理。透過生動的比喻,讀者能夠更輕鬆地理解複雜的硬體運作機制,包括記憶體管理和行程間的通訊。本文為想了解計算機科學的讀者提供了一個清晰的入門指南,讓他們掌握多程式協調與虛擬化技術的基本知識。
Thumbnail
深入探討操作系統和中央處理單元 (CPU) 的基本概念,涵蓋 OS 的功能、CPU 的運作,以及程式與執行緒的管理。透過生動的比喻,讀者能夠更輕鬆地理解複雜的硬體運作機制,包括記憶體管理和行程間的通訊。本文為想了解計算機科學的讀者提供了一個清晰的入門指南,讓他們掌握多程式協調與虛擬化技術的基本知識。
Thumbnail
組合語言透過組譯程式轉換成機器碼,而轉換高階語言的方式有直譯與編譯。 本章節會讓讀者知道兩者的觀念與差異,在最後,我們會透過一張圖簡述程式碼的執行過程。
Thumbnail
組合語言透過組譯程式轉換成機器碼,而轉換高階語言的方式有直譯與編譯。 本章節會讓讀者知道兩者的觀念與差異,在最後,我們會透過一張圖簡述程式碼的執行過程。
Thumbnail
這是一個關於 Google Cloud 推出 Gemini Enterprise 平台的活動直播,影片內容主要由 Google 和 Alphabet 執行長 Sundar Pichai 以及 Google Cloud 執行長 Thomas Kurian 發表,並進行了產品演示。
Thumbnail
這是一個關於 Google Cloud 推出 Gemini Enterprise 平台的活動直播,影片內容主要由 Google 和 Alphabet 執行長 Sundar Pichai 以及 Google Cloud 執行長 Thomas Kurian 發表,並進行了產品演示。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News