事件驅動編程

... 呀噉。個程式會同每件事件指定一段特定嘅子程序,叫部電腦每當嗰件事件發生嗰時,就做掕住嗰件事件嘅程序;簡化講例如想像一個遊戲程式,教部電腦「一旦用家撳咗遊戲手掣上面嘅 B 掣(事件發生),就要玩家角色起跳(子程序)」、「一旦用家撳咗遊戲手掣上面嘅 A 掣(事件發生),就要玩家角色向前衝(子程序)」... 呀噉。
喺廿一世紀初,EDP 係圖像用家介面(GUI)上嘅標準做法,而且喺遊戲編程上都成日用到。有好多程式語言都支援用家攞 EDP 寫程式,例子有 Java 程式語言噉。
基本諗頭[編輯]
EDP 嘅根基係事件(event)嘅概念。電腦程式編寫上講嘅「事件」,係指由隻軟件留意到嘅一個行動或者一件事件,例如係「踎士左掣畀人撳咗」或者「鍵盤上邊個邊個掣畀人撳咗」... 呀噉。唔跟 EDP 嘅程式通常會係噉嘅[2][3]:p.5:
而跟 EDP 嘅程式望落會比較似以下噉嘅流程[3][4]:p.1:
- 開始、
- 進入事件迴圈(event loop)、
If
冇事件發生,繼續處於事件迴圈;If
有事件發生(trigger),睇吓件事件係乜事,按事先講定嘅法則,決定要做乜(事件處理器;event handler);例如想像一個遊戲程式-

實行[編輯]
用虛擬碼噉嘅形式表達嘅話,EDP 啲碼望落通常大致上會係噉嘅[5]:
OnKeyEnter("A") # 如果用家撳咗鍵盤上面 "A" 掣嘅話... { ... # ... 就要做呢個 { } 入面嘅嘢。(睇埋子程序嘅概念) } OnKeyEnter("B") # 如果用家撳咗鍵盤上面 "B" 掣嘅話... { ... # ... 就要做呢個 { } 入面嘅嘢。 } OnKeyEnter("C") # 如果用家撳咗鍵盤上面 "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.
攷[編輯]
- ↑ 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.
- ↑ Woodworth, P., & Dann, W. (1999). Integrating console and Event-Driven models in CS1. ACM SIGCSE Bulletin, 31(1), 132-135.
- ↑ 3.0 3.1 COMP6700/2140 GUI and Event Driven Programming (PDF).
- ↑ Dabek, F., Zeldovich, N., Kaashoek, F., Mazieres, D., & Morris, R. (2002, July). Event-driven programming for robust software (PDF). In Proceedings of the 10th workshop on ACM SIGOPS European workshop (pp. 186-189).
- ↑ Unity EventSystem - Part 1 EventSystem and Design Pattern. Medium.
拎[編輯]
- 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