---
# System prepended metadata

title: Untitled

---

學習分界
- 事實，Domain knowledge, 物理
- 方法，經驗，算法，SOP, 程序


資工導論或計概：講一堆資訊的概論可以聽聽看看無聊看看這方面的PPT
C語言：是一門資工最基礎的程式語言，可以學，因為他會控制到memory
JAVA：物件導向特性很齊全的語言
密碼學：精髓在數學，但我們只要知道特性和拿來用就好
網路：protocol, switch, router, IP, TCP, UDP, packet, DNS…一堆通訊
Reference:
[從傳紙條輕鬆學習基本網路概念](https://medium.com/@hulitw/learning-tcp-ip-http-via-sending-letter-5d3299203660)

資料庫系統：SQL，關連式資料庫，非關聯，特性是什麼，這是後端的一門大學問
演算法：腦袋聰明的人這門課最簡單
資料結構：
軟體工程：這我們現在都在用
OS：了解現在我們用的電腦是如何在管控我們的程式，通訊，顯示，運算，這是一門很好學習系統性思考的課
Compiler：可以了解一點我們程式語言怎麼被轉譯成程式


我們經營一家餐廳，賣各式各樣的餐點，客人進門後都會跟櫃台小姐點餐點，點完就必須在旁邊等待，拿取後就走人
- 客人->user
- 餐廳->backend
- Menu->web UI
- 櫃檯小姐-> UI logic
- 表單請求-> API

User -> client app -> API -> backend app -> API -> database
簡單說

User -> program -> API -> program -> program -> program
只有人是真的

What is program, process, protocol？
Program -> compile -> run -> process -> exist -> done

All you want the machine to do, presented as words
你老闆跟你說幫我做出DTS，講了一堆話就是要你做把它想成是 (命令 或是跟你溝通的文字)[program]而已
這些文字妳把他裝進你的腦袋，在你(腦袋中有這件事情的全貌) [process]
用你(腦袋經過你的經驗)[algorithm]知道什麼東西要定案
要先跟UIUX討論等一下又要跟前端(討論)[API]最後，再找Backend講一下，運用時間去做，做完時，你跟老闆說做好了
程式結束

這邊有幾個需要注意，Program一個程式，可以用很多不同種語言寫，就像因為人也會講f不同種語言，語言特性差異，跟用途最有關係，特性不一樣
Process，是在腦袋中這件事情的如何進行的全貌，腦袋中的全貌意思是，就像語言被compile(轉換成)你腦中的所有指令所有該做的事情，做事情的順序放到腦袋中就像程式放到Memory中逐一執行它

API就像是溝通的方式，我跟你講什麼 你回我什麼，但你有想過這是建構在什麼之上嗎？
Protocol協定，web API 指的是建構在HTTP protocol 上的API
不同種Protocol(協定)有不同種特性，例如更快，或是更方便存取
常見Protocol HTTP, TCP/IP, UDP, MQTT, 巴拉巴拉


User 用手點擊 -> 等待 -> 看到摸到想到反饋
等待是因為什麼？
- 通訊慢，資訊傳很遠(物理上)
- 程式慢，處理東西太多或是 演算法慢
- 就是寫錯，要嘛他沒做，要嘛他不回應，要嘛沒接到丟掉
- 你沒考慮到，系統行錯誤，你只是站在巨人系統上的小屁

你看不到的東西遠比你想像還多...




tcp: congestion control