由來
- dennis ritchie於1972年於貝爾實驗室為了發展unix而發明
- C 語言不只是快,還具有指標,容易與組合語言連結,具有巨集、條件式編譯、inline
函數、結構化、可以使用記憶體映射輸出入,因此可以用高階語言撰寫低階輸出入驅動程式,還有撰寫作業系統。這些特性,讓 C
語言特別適合撰寫嵌入式系統,在某些 deeply embedded 的資源受限型嵌入式系統中,只有很小的記憶體、很慢的
CPU、而且通常沒有硬碟。這種環境有點像相當於當年 Dennis Ritchie
所面對的環境,因為他們必須在很克難的資源中,發展出夠強大的作業系統。也正是因為這種環境的淬鍊、讓 C
語言在《嵌入式系統》和《作業系統》領域都有非常優異的表現。
優缺點
- C 語言的標準函式庫沒有基本的資料結構,像是陣列、串列、堆疊、字典等相關結構的函式庫。
- 字串很原始,使用起來非常不方便。
- 條件式編譯讓程式看起來很冗長,使用標頭檔 *.h 讓你必需重複撰寫函數表頭,浪費許多時間。更糟的是,由於 C
語言的標準函式庫很小,因此在不同的平台上,每個廠商都實作出完全不同的函式庫,這導致 C
語言的程式難以跨越平台執行,您必須位每個平台打造一份程式,而不像 Java 那樣可以 Write Once,Run Anywhere。
- 容易有 bug,特別是在記憶體分配與回收這部份,C 語言沒有自動記憶体回收機制,沒有垃圾收集功能,因此常常導致忘記釋放記憶體,或者將同一個記憶體釋放數次,因而造成錯誤。