继续从下面的想法: 有没有任何可证实的现实世界的语言? 我不了解你,但是我厌倦了写我不能保证的代码。 在问上面的问题并得到一个惊人的回应(谢谢所有!)我已经决定缩小我的search一个可certificate的,实用的方法, 哈斯克尔 。 我select了Haskell是因为它确实有用(有很多为它编写的Web 框架 ,这似乎是一个很好的基准) ,我认为它在function上是足够严格的,它可能是可certificate的,或者至less允许testing不variables。 这是我想要的 (而且一直无法find) 我想要一个框架,可以看看一个Haskell函数,添加,写在psudocode: add(a, b): return a + b – 并检查某些invarients是否保留每个执行状态。 我更喜欢一些正式的证据,但我会解决像模型检查。 在这个例子中,不variables是给定值a和b ,返回值总是和a + b 。 这是一个简单的例子,但我不认为这样的框架是不可能存在的。 一个函数的复杂性肯定会有一个上限,可以被testing(一个函数的10个stringinput肯定需要很长时间!),但是这会鼓励更仔细的函数devise,并且与使用其他forms方法。 想象一下,使用Z或B,当你定义variables/设置时,你要确保你给variables尽可能小的范围。 如果你的INT永远不会超过100,那么确保你初始化它! 像这样的技术和适当的问题分解应该 – 我认为 – 允许对像Haskell这样的纯函数语言进行满意的检查。 我还没有很正式的方法或Haskell经验。 让我知道,如果我的想法是一个健全的,或者你认为哈斯克尔不适合? 如果您build议使用不同的语言,请确保它通过“has-a-web-framework”testing,并阅读原始问题 🙂
在我的编程生涯中,我遇到了库里 – 霍华德同构(Curry-Howard Isomorphism)的相对较晚的时期,也许这有助于我完全着迷于它。 这意味着对于每个编程概念,在forms逻辑中都存在精确的模拟,反之亦然。 这是一个类似的“基本”清单,从我的头顶开始: program/definition | proof type/declaration | proposition inhabited type | theorem/lemma function | implication function argument | hypothesis/antecedent function result | conclusion/consequent function application | modus ponens recursion | induction identity function | tautology non-terminating function | absurdity/contradiction tuple | conjunction (and) disjoint union | disjunction (or) — corrected by […]