哪些编程语言是高完整性系统的理想选择?
糟糕选择的一个例子是Java,因为程序员无法访问相当数量的代码。我正在寻找强类型块结构语言的例子,其中程序员负责100%的代码,并且尽可能少地受到JVM之类的干扰。
编译器显然是个问题。语言必须有完整而明确的定义。
编辑: 高完整性系统是安全关键系统等,安全系统等的总称。
编辑编辑: 我想要不受平台影响的语言示例,无论编译器如何,都会产生相同的结果,并且是完全定义的。
答案 0 :(得分:4)
我认为ADA常用于此。
答案 1 :(得分:4)
Ada的SPARK子集将是一个非常好的起点。 SPARK继承了Ada的所有优点(强类型,易于阅读,......),并且没有未定义的功能,这意味着无论使用哪种Ada编译器,所有SPARK程序都会做同样的事情。编译它。
SPARK可以在没有运行时使用。类似于Ada语言(参见编译指示No_Runtime)。
当然,对于SPARK等语言,您可以灵活地进行安全(或安全)交易。
答案 2 :(得分:4)
您正在寻找多高的整合度?
答案 3 :(得分:3)
您可能想要考虑Eiffel,其中前后条件的强制执行使高完整性系统更容易。
答案 4 :(得分:1)
这是一个矛盾。强类型的块结构语言几乎总是由编译器编译,产生程序员不负责的机器代码。如果您想对代码负全部责任,则需要使用汇编语言。
答案 5 :(得分:1)
我不完全明白它是什么“高完整性系统”。假设你的意思是“一个不容忽视错误的系统”,我建议你看看ML,它是OOP衍生物,O'CaML。 ML旨在最大限度地减少类型错误。 ML中没有转换错误或空指针 - 您根本无法对它们进行编码。它也缺乏动态功能 - 这使它不那么酷但更安全。
话虽如此,ML远非黑客的喜悦;这是一种有点麻烦的语言。但是如果你更喜欢工作一个小时并减少一个例外,这是一个相关的选择。
答案 6 :(得分:-2)
你可能会寻找你想要的东西,但你不会得到它。
您的要求彼此不兼容。他们基本上完全排除了任何类型的库。你可以说你可以使用C / C ++ - 但没有任何包含文件和标准库(程序员显然不负责)。
这使你几乎处于旱地 - 这种要求是不切实际的。即使有一个庞大的团队,人们也不想重新编程大多数图书馆。
如果你有适当的编程方法,Java实际上是非常好的 - 而且你的需求(高完整性系统)更有趣的是编程方法的问题(单元测试,大量内部测试,并行比较多个实例)结果 - 就像航天飞机控制计算机 - 万一发生故障)而不是语言决定的东西。