事件驅動程式設計(英語:Event-driven programming)是一種電腦編程範型。這種模型的程式執行流程是由使用者的動作(如滑鼠的按鍵,鍵盤的按鍵動作)或者是由其他程式的訊息來決定的。相對於批次程式設計(batch programming)而言,程式執行的流程是由程式設計師來決定。批处理(batch)的程式設計在初級程式設計教學課程上是一種方式。然而,事件驅動程式設計這種設計模型是在互動程序(Interactive program)的情況下孕育而生的。

事件驅動程序可以由任何程式語言來實作,然而使用某些語言來撰寫會比其他的語言來的簡單。有些整合開發環境(簡稱IDE)也會影響實作事件驅動程式設計的難易程度。有的 IDE 會使的開發工作變的很簡單,有的則否。

概觀

编辑

取代傳統上一次等待一個完整的指令然後再做執行的方式,事件驅動程式模型下的系統,基本上的架構是預先設計一個事件迴圈所形成的程序,這個事件迴圈程序不斷地檢查目前要處理的資訊,根據要處理的資訊執行一個觸發函式進行必要的處理。其中這個外部資訊可能來自一個目錄夾中的檔案,可能來自鍵盤或滑鼠的動作,或者是一個時間事件。

對一個事件驅動(event driven)系統進行程式設計,因此可以視為改寫系統預設觸發函式的行為,來符合自己需要的一種動作。輸入的事件可以放進事件迴圈或者是經由已經註冊的中斷處理器來與硬體事件互動;而許多的軟體系統使用了混和這兩種技術的處理。預先設計好的演算法確定了一件事,那就是當他們被需要的時候,就會在適當的時機被觸發。也因此提供了一個模擬中斷驅動環境(interrupt driven environment)的軟體抽象架構。事件驅動程式設計基本上包含了許多小程式片段,這些小程式片段被稱為事件處理器英语event handler並且被用來回應外部的事件與分發事件。通常尚未被事件處理器處理的事件,都會被系統放在一個稱為事件佇列的資料結構中,等待被處理。

許多情況下,事件處理器可以自己觸發事件,因此也可能形成一個事件串英语event cascade。 事件驅動程式設計的著重於彈性以及非同步化上面,並且企圖盡可能的modeless图形用户界面這類程式就是典型的事件驅動設計方式。

計算機作業系統是事件驅動程式的典型範例。在作業系統的最底層,中斷處理器的動作就像是硬體事件的直接處理器,搭配著 CPU 執行分配事件規則動作。對軟體處理程序而言,基本上作業系統可視為一個事件分配器,傳送資料和軟體中斷給使用者自己寫的軟體處理程序。

相對應於批次程式設計

编辑

下面是兩個數相加的範例,分別用批次版本與事件驅動版本來撰寫

批次版本

编辑
read a number (from the keyboard) and store it in variable A[0]
read a number (from the keyboard) and store it in variable A[1]
print A[0]+A[1]

事件驅動版本

编辑
set counter K to 0
repeat {
   if a number has been entered (from the keyboard) {
       store in A[K] and increment K
       if K equals 2 print A[0]+A[1] and reset K to 0
   }
}

事件驅動程式框架與程式庫

编辑

📚 Artikel Terkait di Wikipedia

LISP

"2.4 Functional Programming: LISP";"6.9 List Types";"15.4 The First Functional Programming Language: LISP". Concepts of Programming Languages 10th. Boston

Scheme

like the variables in commonly-used algebraic programming languages such as Algol or PL/I. A local variable no longer has an associated atomic symbol; thus

Rust (编程语言)

Uniqueness Types in the Clean programming language, and ownership types and borrowed pointers in the Rust programming language.  Lattner, Chris. Chris

函数式编程

函数式编程,或称函数程序设计、泛函编程(英語:Functional programming),是一种编程范型,它将电脑运算视为函数运算,并且避免使用程式状态(英语:State (computer science))以及可變物件。 在函数式编程中,函数是头等对象即头等函数,这意味着一个函数,既可以作

C语言

C。 其后,C语言至今经历了几次标准更新,诞生了C99、C11、C18和目前最新的标准C23。C语言标准的下一次更新C2Y(英语:C_(programming_language)#C2Y)目前正在起草中。 C語言的语法相对简洁而直接。C语言的形式文法由国际标准化组织所制定。簡單來說,C語言包括如下文法:

Python

(computer programming))关键字,Python的对象方法沿袭自Modula-3,使用显式的第一个形式参数来访问实例特性,习惯上将其命名为self(英语:this (computer programming))。 Python支持一些名字以__开始和结束

B語言

printn(n, b) { extrn putchar; auto a; /* Wikipedia note: auto declares a variable with automatic storage (lifetime is function scope), not "automatic typing"

ISWIM

算机编程语言或编程语言家族,它由Peter J. Landin设计,并描述在他1966年于ACM通讯发表的文章《The Next 700 Programming Languages》之中。 尽管没有实现,它被证明为在编程语言开发中非常有影响力的语言,特别是对于函数式编程语言,比如SASL、ML、N