为什么 SQLite 选用 C 语言实现
本文介绍了 SQLite 为啥用 C 语言而不用像 Rust / Go 这些更现代的语言,原因:性能,兼容,依赖,稳定。
- C 就是快。任何宣称跟 C 一样快的语言都是在耍流氓,没一个够格。
- 几乎任何系统都能调用 C 的库,不管是在安卓上,电脑上,还是在 gameboy 上。
- SQLite 的依赖压榨到了极致,在最小配置中,它只需要 memcmp memcpy memmove memset strcmp strlen strncmp 这几个东东。在全构建中也只多引入了 malloc/free 加文件读写。
- C 敲级稳定!
- 很多人误解了面向对象以为什么东西都要面向对象,事实上面向对象只是一个理解问题的好方法但不是解决问题的好方法。有时候过程式的代码就是更简单更容易维护,以及,运行更快。
- safe language 确实解决了像内存泄漏,指针,数组越界,但这些不是 SQLite 这个系统的痛点。
- 大部分 safe language 都还在幼儿时期,还不够成熟。
文章末尾列出了一些 SQLite 还有可能用 Rust 写,但除非满足了一些条件,例如特性稳定,通用,适用于各种系统,能hold住OOM等等。