我在這周開始了 Alpha Camp 學期一的程式課程。上週我從工作三年多的媒體代理商離職,掂量存款後,可以讓自己暫時放個長假,所以打算在休息期間學點一些程式技能。
接下來會不定時的以文章記錄自己在 Alpha Camp所學,可能是每周、每天或任何值得寫文章紀錄的時候。
Alpha Camp授課方式
Alpha Camp的課程形式是以周為進度,每周開放固定章節給學員學習、練習。以一個沒怎麼碰過程式的新手角度而言,完備的教材讓我的第一周感到很安心且不慌張。
像是在W1 (第一周)正式上課以前,替學員準備了W0 (學前準備) 的說明教材,
說明了:
- 程式常見FAQ
- 本堂課程學習指南
- 學寫程式的心態準備讓程式新手們(對,就是我)知道遇到問題時如何自救、求救。
入門磚的W1
在W1 的課程,算是手把手的帶著學員了解程式基礎:
程式語言是什麼、語法說明、環境設定……
在課程設計環節上,有三個功能我覺得特別受用:
- 助教批改作業
每個段落都有指派作業,驗收學員是否真的吸收內容。寫完的作業會有助教批改給予回饋,指出寫得好及可以改善之處
- 作業區共享
所有學員繳交的作業,都會在一個共同作業區。有兩個好處:
(1. 教完作業後,可以看看其他人是怎麼完成,說不定有自己沒想到的解法
(2. 作業真的卡關時,可以參考別人的思路 (當然不是照抄),有時就是需要這個臨門一腳
- 線上工作坊線
工作坊每兩周舉辦一次,可想成線上多人會議,所有同一梯次的學員都可以自由參加。
內容主要是:Alpha Camp引領大家導讀課程;並實際帶著大家解題、解惑。
參與工作坊時會感受到自己並不孤單,線上有很多戰友跟自己一起奮鬥的!
很大補足了線上課程常常只能一個人對著螢幕孤苦。
其中一項任務:與你的親友分享!
「與你的親友分享!」是在W1的最後一個章節指派給學員的任務,要與親友分享:程式語言是什麼?
而我是找了在餐廳工作的朋友分享,在他給了我一些回饋之後,才發現某些地方理解的不夠徹底,找到盲點。
所以非常推薦大家將新學習的東西,試著清楚地闡述給你的朋友(最好是非該領域專業)。若你的說明,連沒有背景知識的朋友也能理解,就代表自己真的完整吸收了!
以下是我現階段對「程式語言是什麼?」的回答:
程式的目的
程式,是人跟機器溝通的語言,最終的目的是幫人類節省時間或力氣 (重複、計算的事情)。
有了「程式是替人類時間或省力氣」的概念後,更重要的是,將程式與某個領域結合,解決該領域的問題。像是:
- Uber Eat是將 飲食與程式結合、解決外送人力/送餐需求的問題
- Wemo、Go Share則是將 交通與程式結合,解決需要短程用機車的需求
而且不同的語言有各自的強項,JavaSpcrit就是負責網頁畫面的呈現、Python則是利於爬蟲、資料分析…會依照目的、現有資源使用相對適合的程式。
學程式的門檻
寫程式一開始的門檻會是:
- 了解基本的語法
如同做菜時,需要了解各個食材的基本特性,才能依照不同食材的特性加以組合成一道料理。
- 寫程式時會需要設定環境 ( 就像煮菜前需要前置備,先備好料、鍋具擺好)
通常要在自己的 電腦上設定,但因為這對全新手來說有一些門檻於是有了 Repl跟CodePen 這樣的服務,讓新手可以先免於繁瑣的設定可以直接上手寫程式,所見及所得的開始。
開始寫程式時,很看重
1. 拆解問題的能力
2. 了解問題的解決順序 (邏輯)
3. 要幫電腦將所有情況都先設想好,否則電腦會跳出意想不到的結果
舉例:我們要寫一支-骰子比大小的程式,我們需要將所有條件都列好,如:
1. 有A、B 兩位選手
2. A、B 兩位選手分擲出骰子
3. 判斷勝利結果:
(1. A > B ,則A勝利;
(2. A < B,則B勝利;
(3. A = B,則平手
4. 結束
但假如 今天忘記寫上平手的判斷結果,變成:
3. 判斷勝利結果:
(1. A > B ,則A勝利;
(2. A < B,則B勝利。
那麼一旦真的出現平手的狀況時,程式可能就會當機、或是完全跑不出東西
小節:程式是什麼
1. 程式是人跟機器溝通的語言,目的幫人類節省時間或力氣
2. 學程式的基本門檻:了解語法、設定環境
3. 寫程式需要 拆解問題、解決順序以及預想所有情況
Keep Going!
Alpha Camp 學期一 W1的課程收益良多! 學習心得至此。
除了紀錄自己學習程式的過程,也是磨練自己的筆鋒、敘事思路!
繼續閱讀: