事件驅動編程

係一種編程範式，個程式嘅流動由事件控制。一個用 EDP 寫嘅程式會有個主迴圈：當個程式處於主迴圈嗰陣，部電腦會進入「等事件發生」噉嘅狀態，而事件可以包括－
「用家撳咗踎士上面左掣」、
「用家撳咗鍵盤上面嘅 W 掣」或者
「用家撳咗鍵盤上面嘅 A 掣」
... 呀噉。個程式會同每件事件指定一段特定嘅子程序，叫部電腦每當嗰件事件發生嗰時，就做掕住嗰件事件嘅程序；簡化講例如想像一個遊戲程式，教部電腦「一旦用家撳咗遊戲手掣上面嘅 B 掣，就要玩家角色起跳」、「一旦用家撳咗遊戲手掣上面嘅 A 掣，就要玩家角色向前衝」... 呀噉。

喺廿一世紀初，EDP 係圖像用家介面上嘅標準做法，而且喺遊戲編程上都成日用到。有好多程式語言都支援用家攞 EDP 寫程式，例子有 Java 程式語言噉。

基本諗頭

EDP 嘅根基係事件嘅概念。電腦程式編寫上講嘅「事件」，係指由隻軟件留意到嘅一個行動或者一件事件，例如係「踎士左掣畀人撳咗」或者「鍵盤上邊個邊個掣畀人撳咗」... 呀噉。唔跟 EDP 嘅程式通常會係噉嘅：
開始 → 讀取 input → 運算 → 寫出 output → 結束
而跟 EDP 嘅程式望落會比較似以下噉嘅流程：
開始、
進入事件迴圈、
If 冇事件發生，繼續處於事件迴圈；
If 有事件發生，睇吓件事件係乜事，按事先講定嘅法則，決定要做乜；例如想像一個遊戲程式－
假想個程式設定咗「如果玩家撳咗 A 掣，玩家角色就起跳，然後程式返去事件迴圈」；
假想個程式設定咗「如果玩家撳咗 esc，就結束程式」；

實行

用虛擬碼噉嘅形式表達嘅話，EDP 啲碼望落通常大致上會係噉嘅：

OnKeyEnter("A")  
  }

OnKeyEnter("B")  
  }

OnKeyEnter("C")  
  }

例子可以睇吓遊戲引擎 Unity 入面嘅 C♯ 手稿語言。

圖像用家介面
物件導向編程
控制流程
例外處理
遊戲編程

文獻
Lukkarinen, A., Malmi, L., & Haaranen, L. (2021). Event-driven programming in programming education: a mapping review (PDF). ACM Transactions on Computing Education (TOCE), 21(1), 1-31.

攷

拎
Explain Event-Driven Programming in Node.js. GeeksForGeeks.
Concurrency patterns presentation given at scaleconf
Event-Driven Programming: Introduction, Tutorial, History, tutorial by Stephen Ferg
Event-Driven Programming, tutorial by Alan Gauld
Event Collaboration, article by Martin Fowler
Rethinking Swing Threading, article by Jonathan Simon
The event-driven programming style 

編程範式