為什麼 SQLite 用 C 編寫?

極光推送發表於2018-04-09

簡評:SQLite 官方出品。

C是最好的選擇

從 2000 年 5 月 29 日開始,SQLite 就選擇了 C 語言。直到今天,C 也是實現 SQLite 這樣軟體庫的最佳語言。

C語言是實現 SQLite 最好的語言的原因包括:

  • 效能。
  • 相容性。
  • 低依賴性。
  • 穩定性。

效能

像 SQLite 這樣被密集使用的基礎庫需要有很好的效能(SQLite 確實很快,可以看看 Internal Versus External BLOBs 和 35% Faster Than The Filesystem 兩篇文章)。

C語言很適合寫這樣有效能要求的程式。C 語言有時被稱為「行動式組合語言」,讓開發者能儘可能的接近底層硬體編碼,同時保證跨平臺的便攜性。

當然,也有其他的程式語言聲稱和 C 一樣快或者更快,但沒有一個能和 C 一樣通用。

相容性

目前幾乎所有的系統都可以呼叫由 C 語言編寫的庫。

比如,用 Java 編寫的 Android 應用能通過 adapter 來使用 SQLite。如果 SQLite 是用 Java 編寫的,這對於 Android 肯定會更方便。但在 iPhone 上應用是 Objective-C 或者 Swift 編寫的,這兩種語言都沒辦法呼叫 Java 庫。因此,如果 SQLite 選擇用 Java 編寫,那在 iPhone 上就沒辦法用了。

低依賴性

用 C 來編寫庫不會在執行時有太多的依賴。在最小的配置下,SQLite 只需要 C 標準庫裡的:

  • memcmp()
  • memcpy()
  • memmove()
  • memset()
  • strcmp()
  • strlen()
  • strncmp()

在更復雜的配置下,SQLite 可能還會用到 malloc(),free() 和一些作業系統介面來開啟、讀取、寫入和關閉檔案。但即使這樣,依賴的數量也非常小。

穩定性

這個穩定性是指語言的穩定性。C 語言可能是老舊又無聊,但卻正好很適合開發像 SQLite 這樣更注重長期穩定的模組。

原文:Why Is SQLite Coded In C

相關文章