发布至今18年,为什么SQLite一定要用C语言来开发?
C語言是最好的
\\SQLite在2000年5月29日發布,并一直使用C語言實現。C語言一直是實現SQLite這類軟件庫的最佳語言,目前還沒有計劃使用其他編程語言重新開發SQLite。
\\C語言是實現SQLite的最佳語言,原因有四:性能、兼容性、低依賴性、穩定性。
\\性能
\\像SQLite這樣低級庫速度必須要快。確實,SQLite的速度很快,甚至比文件系統要快上35%。
\\C語言非常適合用來開發這種對速度有要求的代碼。C語言有時被稱為“可移植的匯編語言”。它讓開發人員能夠盡可能地靠近底層硬件,同時仍然可以保持跨平臺可移植性。
\\有些語言聲稱自己“與C語言一樣快”,但卻沒有一門語言敢聲稱在作為通用目的編程時比C語言快,因為真的沒有。
\\兼容性
\\幾乎所有系統都能夠調用用C語言編寫的庫,但不一定都能調用使用其他語言實現的庫。
\\例如,使用Java開發的Android應用程序也能調用SQLite(通過適配器)。如果使用Java開發SQLite,那么對Android來說可能會更加方便,因為接口會更簡單。但是,在iPhone上,應用程序是用Objective-C或Swift開發的,它們都不能調用使用Java編寫的庫。因此,如果使用Java開發,SQLite將無法在iPhone上使用。
\\低依賴性
\\使用C語言開發的庫沒有太多運行時依賴。SQLite的最低配置只依賴標準C庫的以下幾個例程:memcmp()、strcmp()、memcpy()、strlen()、memmove()、strncmp()、memset()。
\\對于更完整的版本,SQLite還使用了malloc()和free()之類的例程以及用于打開、讀取、寫入和關閉文件的操作系統接口。但即便如此,依賴項的數量仍然非常少。相比之下,其他“現代”語言通常需要加載數兆字節帶有成千上萬個接口的運行時。
\\穩定性
\\C語言陳舊乏味,是一門眾所周知且易于理解的語言。這正好契合了SQLite的要求。如果沒有C語言這樣的語言,開發一個小型、快速、可靠的數據庫引擎是很困難的。
\\為什么SQLite不使用面向對象語言來開發?
\\一些程序員無法想象怎么可以使用非“面向對象”的語言來開發像SQLite這樣的復雜系統。那么為什么SQLite沒有用C++或Java來開發?
\\為什么SQLite不使用“安全”的編程語言來開發?
\\最近人們對像Rust或Go這樣的“安全”編程語言很感興趣。在使用這些編程語言時,不太可能或至少很難犯下常見的編程錯誤,如內存泄漏或數組溢出。因此,經常會有人問為什么SQLite不使用“安全”的語言來開發。
\\SQLite可能有一天會使用Rust重新開發。由于Go語言討厭assert(),因此不太可能使用Go語言。但使用Rust也只是一種可能性。如果要使用Rust重新開發SQLite,需要滿足一些先決條件:
\\英文原文:https://sqlite.org/whyc.html
總結
以上是生活随笔為你收集整理的发布至今18年,为什么SQLite一定要用C语言来开发?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php调用以太坊geth API说明
- 下一篇: Java实体类对象修改日志记录