计算机c语言重要么?,整整18年,为什么其他计算机语言代替不了C语言的重要性?...

C 语言一直是实现 SQLite 这类软件库的最佳语言,目前还没有计划使用其他编程语言重新开发 SQLite。C 语言是实现 SQLite 的最佳语言,原因有四:性能、兼容性、低依赖性、稳定性。

20181115103224_2fe7804f1c9269a3bd4510637cb5e958_1.jpeg

私聊小编回复关键字【C语言】即可获得最全C语言资料1.稳定性

C语言很无聊,是一种众所周知且易于理解的语言。这符合SQLite的要求。如果你没有像C这样的语言,很难开发一个小的、快速、可靠的数据库引擎。

私聊小编回复关键字【C语言】即可获得最全C语言资料

20181115103224_2fe7804f1c9269a3bd4510637cb5e958_2.jpeg

私聊小编回复关键字【C语言】即可获得最全C语言资料2为什么SQLite不是使用面向对象语言开发的?

20181115103224_2fe7804f1c9269a3bd4510637cb5e958_3.jpeg

私聊小编回复关键字【C语言】即可获得最全C语言资料

一些程序员无法想象如何使用非“面向对象”的语言来开发像SQLite这样的复杂系统。那么为什么SQLite不是用C ++或Java开发的呢?私聊小编回复关键字【C语言】即可获得最全C语言资料

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

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

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

当我第一次开发SQLite时,Java只是一种年轻的,不成熟的语言。 C ++更成熟,但它正在经历痛苦的​​增长期,当时很难找到两个以相同方式工作的C ++编译器。所以,当时C语言绝对是一个更好的选择。现在情况并非如此,但重新开发SQLite几乎没有任何好处。3为什么SQLite不是用“安全”编程语言开发的?

20181115103224_2fe7804f1c9269a3bd4510637cb5e958_4.jpeg

最近,人们对Rust或Go等“安全”编程语言非常感兴趣。使用这些编程语言时,不太可能或至少很难发生常见的编程错误,例如内存泄漏或阵列溢出。因此,经常有人会问为什么SQLite不是用“安全”语言开发的。在SQLite出现后的前10年,所谓的安全编程语言并不存在。可以使用Go语言或Rust重新开发SQLite,但这样做可能会引入更多错误,也可能导致代码运行速度变慢。私聊小编回复关键字【C语言】即可获得最全C语言资料

安全编程语言解决了一个简单的问题:内存泄漏、释放后使用错误、数组溢出等。安全语言在解决SQL计算结果问题时没有提供比普通C语言代码更多的帮助。

安全语言通常声称有助于防止安全漏洞。这是对的,但SQLite不是一个对安全性特别敏感的库。如果应用程序运行不受信任且未经验证的SQL,则它已经存在更大的安全问题(SQL注入),并且没有“安全”语言可以解决问题。实际上,应用程序有时会从不受信任的来源导入SQLite二进制数据库文件,这可能构成潜在的威胁。但是,SQLite中的这段代码路径非常有限且经过了充分测试。 SQLite还为希望读取不受信任的数据库以帮助应用程序检测潜在威胁的应用程序提供预验证例程。

一些“安全”语言(例如Go语言)不喜欢使用assert()。但是使用assert()是维护SQLite可维护性的重要先决条件。

安全语言插入其他分支逻辑以执行其他操作,例如验证阵列访问是否超出范围。在正确的代码中,永远不会使用这些分支逻辑。这也意味着机器代码未经过100%测试,这是SQLite质量策略的重要组成部分。

安全语言通常希望在遇到内存不足(OOM)时终止。 SQLite旨在从OOM中恢复。目前还不知道如何以安全语言实现此功能。

所有安全的语言现在都是新生儿。 SQLite开发人员很欣赏计算机语言研究人员开发更安全的编程语言、的努力,我们鼓励他们继续努力。但是在实现SQLite时,我们对旧的和无聊的C语言更感兴趣。

SQLite有一天可能会使用Rust重新开发。由于Go语言讨厌assert(),因此不太可能使用Go语言。但使用Rust只是一种可能性。如果要使用Rust重新开发SQLite,则需要满足一些先决条件:

Rust需要变得更加成熟,减缓进化,变得更无聊。

Rust需要证明它可以用于构建可以在所有其他编程语言中调用的通用库。

Rust需要证明它可以为嵌入式设备生成代码,包括缺少操作系统的设备。

Rust需要提供可以对二进制文件执行100%分支覆盖测试的工具。

Rust需要提供一种可以从OOM错误中正常恢复的机制。

Rust需要证明它可以完成C语言在SQLite中所做的所有工作,而不会降低性能。

私聊小编回复关键字【C语言】即可获得最全C语言资料

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值