SQLite:为什么 SQLite 是用 C 语言编写的?C 是最好的,没有比 C 更快的语言 

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

  1. C 是最好的
  2. 没有比 C 更快的语言
SQLite:为什么 SQLite 是用 C 语言编写的?C 是最好的,没有比 C 更快的语言  1

来证明这个标题:为什么 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://afdian.com/a/qingxwa (打赏我们,让我们更好的创作)

写留言

Enable Notifications OK No thanks