在 SQLite 官网有一篇名为《为什么 SQLite 是用 C 语言编写的》的文章,开头就用了两句非常简短但有力的话:
- C 是最好的
- 没有比 C 更快的语言

来证明这个标题:为什么 SQLite 是用 C 语言编写的
性能
就性能来说,像 SQLite 这样频繁使用的底层库需要足够快。(SQLite 确实很快),C 语言是编写快速代码的绝佳语言,其他编程语言有时会声称“和 C 一样快”。但没有其他语言声称在通用编程方面比 C 更快,因为实际上没有比 C 更快的语言。
兼容性
就兼容性来说,几乎所有系统都具有调用 C 编写的库的能力。
低依赖性
就低依赖性来说:用 C 编写的库不会依赖很多运行时,而其他“现代”语言通常需要加载数千个接口的数兆字节运行时。
稳定性
C 是一种“老、稳、无惊喜”的语言。对一个追求长期稳定的项目来说,这比花哨的新语法更重要。
所以,SQLite 是用 C 语言编写的
而在另外两个问题里:
一、为什么 SQLite 不用面向对象语言(C++、Java)?
兼容性
C 写的库几乎能被所有语言调用,而 C++、Java 只能被相同语言用。
面向对象是一种思想,不一定要用专门的语言实现。
性能与简洁
过程式的 C 代码常常更快、更简单。
历史原因
当年(约 2000 年)C++ 编译器混乱、Java 不成熟,C 是最稳的选择。
二、为什么不用“安全语言”(Rust、Go)?
这些语言出现太晚,SQLite 已经成型。重写可能带来更多 bug,还会变慢。
安全语言多加了运行时检查,会影响测试覆盖和性能。它们在内存不足时会直接崩溃,而 SQLite 需要能平稳恢复。
三、是否会用 Rust 重写?
有可能,但前提是:
- Rust 得更稳定、能通用于所有语言;
- 能在嵌入式设备上运行;
- 能做 100% 分支测试;
- 能优雅处理内存不足;
- 性能不比 C 差。
听说搜狐一直在用 AI 抄袭我们的内容,点名声讨第八天。
原文:https://www.appinn.com/sqlite-whyc/
关注我们
- 微博:https://weibo.com/appinncom
- B站:https://space.bilibili.com/10979326
- 小红书:https://kutt.appinn.com/6QwshF
- Facebook:https://www.facebook.com/appinncom/
- BlueSky:https://bsky.app/profile/appinn.bsky.social
- X:https://x.com/appinn
- 微信公众号:搜索「小众软件」
- TG频道:@appinnfeed
爱发电:https://afdian.com/a/qingxwa (打赏我们,让我们更好的创作)