首先,对于诸如加密性能之类的事情。
这是能够为数百名用户或一次只能为 10 名用户提供服务的区别。这确实具有一定的安全相关性:如果您的服务器正在挣扎,那么它们很容易被 DOS 攻击摧毁。
如果您曾经对纯 Python 代码与本机代码进行基准测试,您会惊讶于差异之大。
其次,没有 C 就没有 Python/Java。无论您看到哪种“现代”语言,它都使用了大量的库。你猜怎么着,其中大部分是 C 库。
现在,如果您用这种语言编写“安全关键”库,您必须担心 1. 您自己的代码中的问题 2. 您使用的 Java/Python 代码中的问题 3. 底层 C 代码中的问题(经常出现安全问题) Java 的更新!)和 4. 下面的 C 库中的问题可能会在您不知情的情况下发生变化(例如操作系统更新)。如果您想要与安全相关的代码,请尽量减少依赖关系。
下面的 C 量是增加,而不是减少。这似乎并不明显。但是numpy、tensorflow、JavaFX……这些都在底层使用了大量的C代码,因为性能原因。
许多问题可以通过仔细的工程和冗长的编程来避免。例如,OSX“goto fail”错误是由程序员不遵守始终使用括号的最佳实践引起的......
if (a)
goto fail;
goto fail;
somethingelse
在大多数语言中是一个容易错过的错误(Python 除外,对于同一个问题,您需要少两个空格),可以简单地通过冗长来避免:
if (a) {
goto fail;
goto fail;
}
somethingelse
似乎 python 在避免此类问题方面并不是很有帮助(事实上,Java 编译器会警告您有关无法访问的代码 - Python 不会,如果用户启用,C 编译器可以)......最终,开发人员纪律仍然是关键因素。
C 代码通常需要更加谨慎的编写;这对质量来说并不是一件坏事。主要缺点是开发速度较慢。