阅读this question之后,我想知道在关键任务行业中使用Haskell(或其他函数式编程语言)是否是一个好主意。
除了Erlang之外,大多数语言遵循命令式/合同设计范式(Ada,Eiffel,C ++)。
但功能性呢?
生成的代码很容易维护,稳定,并且在编译时它们的严格类型系统可以消除许多潜在的错误。 或懒惰的评价比帮助更危险?还有其他安全缺陷吗?
答案 0 :(得分:10)
我想你可以。这种语言似乎非常适合这种情况,假设您信任编译器足以在关键任务情况下使用它。
请记住,在关键任务情况下,不仅是您的代码受到审查,而且所有其他组件也是如此。这包括编译器(Haskell编译器不是代码审查最简单的编译器),运行软件的适当认证硬件,编译代码的适当硬件,引导编译代码的编译器的硬件,地狱 - 甚至连线将所有这些连接到电网和插座中电压变化的频率。
如果您对查看关键任务软件质量感兴趣,建议您查看NASA software quality procedures。它们是非常严格和正式的,但是这些家伙在太空中投入了数百万美元,希望它能够在相当恶劣的条件下存活下来并将它带到火星或其他任何地方然后自动操作并将一些漂亮的火星人照片发回地球。
所以,你去了:Haskell对于关键任务情况很有用,但是在那里引导它的使用是一个昂贵的过程。