每隔一段時間我就會被家長問到:「老師有教C++嗎?」,「老師基礎班教Python,那進階班會教C++嗎?」,「學校教C++,這樣跟老師教Python會不會衝突?」,「孩子之前學過C++了,跟著老師重學Python,是不是浪費了?」
C++在程式語言界,具有經典的地位,有些人因此誤解為"學C++比較好"。其實不是這樣,C++被設計成接近電腦運作原理,而Python被設計成接近人類語言,後者學起來更快、成功率更高。統計上每年約10萬高中學生,考到APCS實作三級僅約1%。既然如此,初學選擇較難的C++,只是讓學生更容易陣亡。
愷哥設計教材時,目標是讓學生「半年內考過APCS實作三級,把時間省下來拚學測」。而目前上完愷哥進階班的同學,九成都可以考過APCS實作三級,每年也差不多有十名同學考上頂大電資。「節省學習時間、提高成功率」,是愷哥編撰整套教材的核心考量。所以我刻意選擇教Python,是為了讓學生盡快考過APCS,搞定學習歷程,然後想幹嘛去幹嘛。想做科展、想拚特殊選才、拚學測,都行。
一般人以為程式語言跟人類語言類似,學一種語言要背數千個詞彙,花個三年以上,整天在背單字。不是的,學一種程式語言大概只要熟悉數十個詞彙就夠了,程式是難在千變萬化的邏輯,而邏輯是跨語言共通的。也就是說,認真花半年學好Python,把邏輯打通後,要再上手其他語言,也只要花一周熟悉一下語法就可以了。多種程式語言間不是互相干擾,而是觸類旁通,先精熟一種就能很快學會另一種。曾有學生跟我說:「我以前學很久C++,有非常多看不懂的部分,但學完愷哥基礎班Python之後,很多C++卡住的地方都突然懂了」。愷哥的學生在校內的C++課程都是輕鬆拿第一。
我以學開車來舉例,Python就像自排車,C++就像手排車,前者只要會踩油門轉方向盤就好了,後者還需要理解離合器、排檔、扭力等機械運作。有人會說:「既然要學就學難的,比較懂底層原理,學會了也能駕馭簡單的」,這麼說其實是忽略了成功率跟時間成本。如果學習成功率在90%以上,直接學難的未嘗不可,但如果普遍成功率約在1%,還刻意學難的,是時間太多用不完,還是學失敗無所謂?
先學會簡單的自排,盡快上路解決問題,哪天打算買跑車了再去學手排,這樣才是最有利的。
其實來找我的學生,幾乎都是之前有學過程式,但是學很淺或APCS檢定考不過,在這種情況下,其實不用多慮,照著愷哥的安排就對了。如果學生之前學C++,也順利半年內考過APCS實作三級了,那很棒,確實不需要找愷哥學。
不然的話,其實不用多慮,照著愷哥的課程安排,盡快半年內考過APCS就對了。
歡迎加入高中生學程式FB社團、以及愷哥電腦科普頻道,跟我一起學程式、學人生。【愷哥APCS程式班】熱烈招生中喔!