除了C语言外,我还可以用什么语言编写C库?

除了C语言外,我还可以用什么语言编写C库?,c,dll,C,Dll,我想写一个可以从C代码中动态加载和调用的库,但我真的不想用C编写它-代码是安全关键的,所以我想要一种更容易让人相信我的代码是正确的语言。我有什么选择 更具体地说,我希望C程序员能够#包括这个和-l那个,并开始使用我的库,就像我用C编写的一样。我希望其他语言的程序员能够使用他们最喜欢的工具链接到C库来链接到它。理想情况下,我希望在每一个支持C的平台上都能做到这一点,但我会选择Linux、Windows和MacOS。任何编译成本机代码的东西。所以你可以在谷歌上搜索“编译成本机代码的语言” C++通常

我想写一个可以从C代码中动态加载和调用的库,但我真的不想用C编写它-代码是安全关键的,所以我想要一种更容易让人相信我的代码是正确的语言。我有什么选择


更具体地说,我希望C程序员能够
#包括
这个和
-l
那个,并开始使用我的库,就像我用C编写的一样。我希望其他语言的程序员能够使用他们最喜欢的工具链接到C库来链接到它。理想情况下,我希望在每一个支持C的平台上都能做到这一点,但我会选择Linux、Windows和MacOS。

任何编译成本机代码的东西。所以你可以在谷歌上搜索“编译成本机代码的语言”

C++通常是这方面的选择。编译为本机代码,并提供简单、易于编写适配器层的接口


目标C和Fortran也是可能的。

您可以在中编写它-向Lua库提供C API相对来说是简单的。C++也是一种选择,当然,你必须编写C包装器,并且确保没有例外可以逃脱你的功能。但老实说,如果是安全性关键的话,C语言的一些小麻烦应该不会有什么大不了的。您真正应该做的是在可行的地方证明程序的正确性,并在不可行的地方进行广泛的测试。

您可以用Java编写一个库。JNI通常用于从Java调用C,但也可以反过来使用。

我所知道的几乎所有安全关键应用程序都是用C编写的。我不相信还有其他语言在生成安全应用程序方面具有更高的实际地位

不懂C语言的人说C语言是一种糟糕的安全语言

如果你想让C程序员使用你的程序库,那么就使用C。做任何其他事情都是在试图在平衡木(体操器材)上行走时将一只手绑在背后。当然,有几十种其他语言可以与C接口,但它通常涉及使用C层,然后将C数据类型填充到特定于语言的数据类型(Java对象、Python对象等),调用完成后,使用相同的转换返回到C数据类型。这只会让工作变得更困难,如果你没有正确地做出所有的设计决策,那么可能会变得更慢。人们不会理解源代码,所以不会喜欢使用它(请参阅下面的更多信息)

如果您想要安全性,那么就编写非常好的代码,始终戴上“安全方面”的帽子,找到一个安全邮件列表或网站,并将其张贴在那里进行审查,将审查意见放在黑板上,理解评论,并修复任何有意义的评论。将源代码分发给用户,这样人们就可以看到您的代码的作用。那些了解安全的人会知道该找什么,并且知道你做得很好(或者很差,无论哪种情况适用)——而那些不了解安全的人则希望相信正确的人。如果它是好的,人们会使用它。如果它是“隐藏的”,并且不容易访问,那么无论您使用何种语言,您都不会获得很多客户

别担心,你们不会从发布源代码中透露更多信息。如果代码中有一个缺陷,并且它足够流行(或重要),那么即使您只发布二进制文件,也会有人发现该缺陷。对于那些精通逆向工程的人来说,没有源代码只是一个小小的障碍

安全性不是源于使用特定的语言或工具,而是源于良好的设计和对安全性问题的良好基本理解


请记住,模糊的安全性(无论是指“隐藏的源代码”还是“不寻常的语言”或其他模糊的东西)是错误的安全性

听起来您正在寻找一种兼容的语言,或者可以描述为生成代码的语言。只要它可以编译成链接器接受的有效对象文件(通常是.obj或.o文件),这应该是主要标准。然后,您还希望编写一个头文件,以方便使用C(或与其密切相关的语言/变体)编写的任何客户机代码


正如其他人提到的,选择C以外的语言需要一个很好的理由,因为它是低级/系统软件的法语。汇编程序是一种选择,尽管在平台之间移植比较困难。是一种更具可移植性但不太普及的替代方案,旨在以最少的麻烦产生安全、高效的本机代码。还有很多。你可能对ATS感兴趣。ATS通过C进行编译,可以与C一样高效,并且可以以ABI与C兼容的方式使用。从项目网站:

ATS是一种静态类型的编程语言,它将实现与形式规范统一起来。它配备了一个高度表达的类型系统,该系统植根于框架应用类型系统,从而为该语言命名。特别是,ATS中有从属类型和线性类型。ATS(ATS/Anairiats)的当前实施是用ATS本身编写的。它可以和C/C++一样高效(具体证据请参见计算机语言基准测试游戏),并支持多种编程模式

ATS的依赖和线性类型系统有助于生成代码的静态保证,包括资源管理安全的各个方面

Chris Double一直在撰写一系列文章,探讨ATS类型系统在系统编程中的作用。特别值得注意的是这篇文章:

本文件涵盖了ATS和C代码之间来回调用的各个方面:

主要的缺点是依赖类型的编程仍然是一个令人望而生畏的前景,即使是