zoukankan      html  css  js  c++  java
  • 编程语言这么多,为什么就只有C 语言能一直得到 SQLite 的青睐?

    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 来开发?

    使用 C++ 或 Java 编写的库通常只能由以相同语言开发的应用程序使用。使用 Haskell 或 Java 开发的应用程序很难调用 C++ 库。反过来,用 C 语言编写的库可以在其他编程语言中调用。

    面向对象是一种设计模式,而不是一种编程语言。你可以使用任何语言(包括汇编语言)实现面向对象编程,只是某些语言(例如 C++ 或 Java)让面向对象变成变得更容易而已。但你仍然可以用像 C 这样的语言进行面向对象编程。


     

    面向对象并不是唯一有效的设计模式。很多程序员被教导使用纯粹的面向对象方式进行思考。对象通常是分解问题的好方法,但对象不是唯一的方法,而且不一定是分解问题的最佳方法。有时候,过程式的代码更容易编写,更易于维护和理解,并且比面向对象的代码运行地更快。

    最初在开发 SQLite 时,Java 还只是一门年轻而不成熟的语言。C++ 比较成熟一些,但正在经历成长的痛苦时期,当时很难找到两种能够以相同方式工作的 C++ 编译器。所以,在当时 C 语言绝对是一个更好的选择。现在这种情况没有那么明显,但现在重新开发 SQLite 几乎没有任何好处。

    看到这里,你是不是对“C语言”又有了一点新的认知呢~如果你喜欢这篇文章的话,动动小指,加个关注哦~


     

    最后,如果你也想成为程序员,想要快速掌握编程,这里为你分享一个学习企鹅圈子!

    里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”

    资料包含:编程入门、游戏编程、课程设计、黑客等。

    编程学习书籍:


     

    编程学习视频:


     
  • 相关阅读:
    chrome浏览器中安装以及使用Elasticsearch head 插件
    windows10 升级并安装配置 jmeter5.3
    linux下部署Elasticsearch6.8.1版本的集群
    【Rollo的Python之路】Python 爬虫系统学习 (八) logging模块的使用
    【Rollo的Python之路】Python 爬虫系统学习 (七) Scrapy初识
    【Rollo的Python之路】Python 爬虫系统学习 (六) Selenium 模拟登录
    【Rollo的Python之路】Python 爬虫系统学习 (五) Selenium
    【Rollo的Python之路】Python 爬虫系统学习 (四) XPath学习
    【Rollo的Python之路】Python 爬虫系统学习 (三)
    【Rollo的Python之路】Python sys argv[] 函数用法笔记
  • 原文地址:https://www.cnblogs.com/mu-ge/p/13936547.html
Copyright © 2011-2022 走看看