Arduino 相當容易入門, 但是, 從入門到進階多會卡關, 多是卡在沒有電子電路的基礎, 只能依樣畫葫蘆, 一遇到問題, 不管是卡在軟體或硬體或是 Arduino 底層(韌體或驅動程式)的問題, 就跟數學一樣, 不會(動)就是不會(動).
過了進階關, 算厲害了, 但距離專業還是有段距離, 會發現現代電腦進步的太快了, 專業分工的精緻化, 硬體除了 intel/AMD CPU, 還有 ARM, RISC-V 等競爭對手加入, NVidia GPU 也結合 ARM CPU 搶食 AI/ML 及 HPC (High Performance Computing) 的 CPU 市場, 更有 NPU (Neuron Processing Unit) 及 FPGA 搶食 GPU 盤據的 AI/ML 市場. 同時高速網路直通 CPU, 光纖化, 虛擬化. 除有線網路外, 無限網路的普及化, 高速化, 多樣化, 有 5G, WiFi 6, LoRa, 藍芽, 提供消費者更便利的操作及使用.
在軟體方面, OS (Operating System) 以 Linux 為 server 的主流, 個人電腦以 Windows 為主流外, 中間層的 CPU/記憶體/網路虛擬化技術, 並行多工最佳化, 且各種網路應用及安全考量也推升軟體的技術持續推陳出新.
考慮本文的目的在於提供初學者的學習地圖, 因此只會提及跟硬體相關的計算機結構的基礎及入門.
分類 | 軟體(Software SW) | 韌體(Firmware FW) | 硬體(Hardware HW) |
---|---|---|---|
入門 | SW-1: Micro:bit SW-1: Arduino 入門 SW-1: 8位元程式 BASIC |
||
入門 | SW-2: 16/32/64位元程式 Python 入門 | ||
進階 | SW-3: 8/16/32/64位元程式 C/C++ 語言 | FW-3: 8位元韌體 Assembly | HW-3: 電子電路入門 |
進階 | FW-4: Linux shell 應用 | HW-4: Arduino 進階 | |
專業 | HW-5: 8位元 6502 CPU及電腦硬體設計 | ||
專業 | FW-6: 8/16位元系統軟體 Embedded OS/RTOS | HW-6: 8位元 CPU 80C51 單晶片應用 HW-6: 類比線路入門 |
|
專業 | FW-7: 驅動程式 | FW-7: 16/32/64位元系統軟體 Linux | HW-7: 16位元 8086 CPU 應用 HW-7: ARM M 系列應用 |
專業 | HW-8: ARM R/A 系列應用 |
以下蒐集網路上可以取得的學習地圖資源, 本 hackmd 文會專注於 Apple II 相關的資料準備.
尚待完成
內容 | 分類 | 適合水準 | 說明 | 遇到困難時 | 可能進階 |
---|---|---|---|---|---|
Arduino 做燈光控制裝置藝術 | SW-1 | 初學者, 無電子學經驗可 | 網路上除官網外,有許多入門的資料,推薦傑森創工或英文版的Arduino Course for Beginners - FreeCodeCamp.org | 發文詢問臉書粉絲團 Arduino Taipei 或 Arduino Taiwan | 絕大多數對 Arduino 有興趣, 只是拿 Arduino 當應用, 就停留在這階段 對學生而言, 可以選擇的下一步有 * 對硬體有興趣,可以挑 HW-3 電子電路, 再到 HW-4 的 Arduino 進階 * 可以往軟體應用的 SW-2 Python 發展 * (不推薦)如果立志往電子專業發展的, 可以 FW-3 的 Assembly, 會對於 SW-3 的 C 語言有幫助 |
用 Apple II BASIC 寫遊戲程式 | SW-1 | 初學者, 無軟體經驗可, 透過 BASIC 簡單的語法 (尤其是顯示處理較為簡單),可以引起同學對軟體的興趣 | 待整理 | 待整理 | 從 BASIC 的語法, 進階到 SW-2 Python. 如果有 BASIC 與 Python 語法的差異比較表,有機會順利轉換 |
Python 入門 | SW-2 | 初學者, 無電子學經驗可,進入門檻較高, 學習曲線較久。 不同應用的 Python domain knowhow 也不同, 只學習 Python 基礎, 而缺乏應用面, 較不易提起學習興趣 |
網路有許多教學及粉絲團, 只是初學者可能還不知道如何問問題, 有環境架設、版本、library 安裝等, 可以考慮 CodeCombat 之類的手把手教學網站 | 臉書、Line 都有開團, 如果可以找到 mentor 會是理想的作法. | 一旦熟悉 Python 後, 可以考慮往軟體產業發展, 往網頁開發 (在專精 Python 後, 或可增加學習其它軟體語言, 如 Javascript 等), 或人工智慧/機器學習/深度學習, 及資料科學方面發展 |
C/C++ 語言入門 | SW-3 | 雖然 Arduino 用的是 C++ 的語言, 但如果因為喜歡 Arduino 就希望專精在 C/C++ 語言上, 還是讓有電機或資工背景的學生來吧, 要不然會很有挫折感. | 建議先有電機/資工的電子學基礎 | 學習 C/C++ 的目標應該就是準備走向專業軟體工程師, 所以得養成自行找答案的習慣, 從找 spec, 看 spec, 或是 github, stackoverflow | 學習 C/C++ 的下一步一般就是專業的軟體工程師 |
8位元韌體 Assembly | FW-3 | 學習 Assembly 跟 C/C++ 比較起來更是稀少, 條件跟 C/C++ 是類似的 | |||
電子電路入門 | HW-3 | 極力推薦對 Arduino 或電子應用有興趣所有人花點時間在這主題 | |||
Arduino 進階專業 | HW-4 | ||||
8位元 6502 CPU及電腦硬體設計 | HW-5 |
待完成