簡評: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 這樣更注重長期穩定的模組。