--- title: 計算機結構學習地圖 image: https://imgur.com/gallery/z9wh39H description: 關於 Apple ][ 的資料整理, 參考臉書社團 "台灣 Apple II 同學會" https://www.facebook.com/groups/taiwanappleii --- 計算機結構學習地圖 --- 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/記憶體/網路虛擬化技術, 並行多工最佳化, 且各種網路應用及安全考量也推升軟體的技術持續推陳出新. 考慮本文的目的在於提供初學者的學習地圖, 因此只會提及跟硬體相關的計算機結構的基礎及入門. ::: info |分類|軟體(Software SW)|韌體(Firmware FW)|硬體(Hardware HW)| |:----|:----|:----|:----| |入門|SW-1: Micro:bit<br />SW-1: Arduino 入門<br />==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 單晶片應用<br />HW-6: 類比線路入門| |專業|FW-7: 驅動程式|FW-7: 16/32/64位元系統軟體 Linux|HW-7: 16位元 8086 CPU 應用<br />HW-7: ARM M 系列應用| |專業|||HW-8: ARM R/A 系列應用| ::: 以下蒐集網路上可以取得的學習地圖資源, 本 hackmd 文會專注於 ==Apple II 相關的資料==準備. 網路資源(記得滑鼠往右滑) --- 尚待完成 :::success |內容|分類|適合水準|說明|遇到困難時|可能進階| |:----|:----|:----|:----|:----|:----| |Arduino 做燈光控制裝置藝術 |SW-1|初學者, 無電子學經驗可|網路上除[官網](https://www.arduino.cc/)外,有許多入門的資料,推薦[傑森創工](https://blog.jmaker.com.tw/arduino-tutorials-1/)或英文版的[Arduino Course for Beginners - FreeCodeCamp.org](https://youtu.be/zJ-LqeX_fLU?t=2342) |發文詢問臉書粉絲團 [Arduino Taipei](https://www.facebook.com/groups/arduinotaipei) 或 [Arduino Taiwan](https://www.facebook.com/groups/Arduino.Taiwan)|絕大多數對 Arduino 有興趣, 只是拿 Arduino 當應用, 就停留在這階段<br /><br />對學生而言, 可以選擇的下一步有<br />* 對硬體有興趣,可以挑 HW-3 電子電路, 再到 HW-4 的 Arduino 進階<br />* 可以往軟體應用的 SW-2 Python 發展<br />* (不推薦)如果立志往電子專業發展的, 可以 FW-3 的 Assembly, 會對於 SW-3 的 C 語言有幫助| |==用 Apple II BASIC 寫遊戲程式==|==SW-1==|==初學者, 無軟體經驗可, 透過 BASIC 簡單的語法 (尤其是顯示處理較為簡單),可以引起同學對軟體的興趣==|==待整理==|==待整理==|==從 BASIC 的語法, 進階到 SW-2 Python. 如果有 BASIC 與 Python 語法的差異比較表,有機會順利轉換==| |Python 入門|SW-2|初學者, 無電子學經驗可,進入門檻較高, 學習曲線較久。<br />不同應用的 Python domain knowhow 也不同, 只學習 Python 基礎, 而缺乏應用面, 較不易提起學習興趣|網路有許多教學及粉絲團, 只是初學者可能還不知道如何問問題, 有環境架設、版本、library 安裝等, 可以考慮 [CodeCombat](https://codecombat.com) 之類的手把手教學網站|臉書、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 資源及內容 --- 待完成