Facts to know before CS61A
最近開始看 CS1 入門經典 SICP,搭配 Teach Yourself CS 推薦 UC Berkeley Brian Harvey 開設的 CS61A (Spring, 2010) 課堂錄影。這裡記錄上了第一個小時踩到的坑 (! xD),以及這堂課有哪些特點、為什麼覺得自己有可能繼續上下去。
Scheme 是主要使用的語言
第一個小時,Harvey 快速介紹了 Scheme 這個語言。Scheme 是 LISP 家族的成員之一,它是一個容易學習、互動的語言,看看 Scheme 寫起來是什麼感覺:
1 | > 3 |
寫法和熟悉的語言不太一樣之外,我覺得滿好理解的 👍🏼
CS61A/SICP 使用 Scheme 做為主要使用的語言是希望大家把時間花在 “Computation” (計算) 的本質,而非語言細節,我有被說服 xD
但是,等等,等一下,那個 (,教授!) 為什麼我打 (first 'hello)
它一直跳 error 給我啦 😭
The 坑: simply
speaking, 少了一些東西
長姿勢欸。首先 Scheme 有超多實作 (implemetations),schemers.org 這個網站有列出來,開始安裝 Scheme 後,我至少遇到 4 種不同的實作:
- CS61A 推薦 STk
- 最常見的 mit-scheme
- Replit 使用的是 BiwaScheme
- exercism 建議裝 Chez Scheme
裝哪個都沒關係,因為 (first 'hello)
還是跑不出來啊啊啊 (捶電腦)。後來在 Brian Harvey (及其快樂夥伴) 寫的一本書 Simply Scheme: Introducing CS 的附錄 C 找到了一個這樣的東西,上面寫到:
Many of the procedures we talk about in this book aren’t part of standard Scheme; we wrote them ourselves. Here is a listing of the definitions of those procedures.
標題是 “Scheme Initialization File”。
終於出了名為 first 的 hell 坑。(到現在,fist 還硬硬的)
最後
即使看過各種軟硬兼施 、情緒勒索 、鼓吹學習 CS 底層的說法,至今仍說不上有很大的動力,原本以為原因就像以前學線代,不覺得以後用得上的那種消極感,但今天發現了第二個原因,原來使用的語言 a.k.a. 學習路上的關注點也是一個影響點,當門檻降低一點,accessibility 也就跟著提高了。
身為還沒入 SICP 教的 Type 2 工程師,還沒什麼成果或學習心得可以分享,只好貼一篇 Harvey 寫的文章,告訴你 Why SICP matters,或是看 Denny 的翻譯 #10 為什麼「SICP」仍然重要。
然後,加減說一下,學 SICP 前,真的可以多學一點英文唷,史上最棒的投資沒在誇張捏。
- 1.這一篇裡所有講到的 CS 都是 "Computer Science"。 ↩