Try   HackMD

計算機結構學習地圖

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 TaipeiArduino 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

Apple II 資源及內容

待完成