Vgil是一种非常安全的编程语言,也是2013年1月PLT运动会比赛的参赛者。
许多编程语言声称认真对待测试、合同和安全,但只有Vigil真正警惕不允许不通过编程规范的代码。
Vgil非常类似于Python,但有一个较小的条件,即您必须提供一个main()函数,该函数将自动为您调用。
比单纯的句法和语义更重要的是它增加了最高的道德警戒。这类似于合同,但不那么合法,更具中世纪色彩。
通常,函数将要求参数具有某些所需的属性。Vigil中的函数可以通过使用implore来说明它需要什么:
如果调用者没有提供有效的参数,那就是错误的,必须受到惩罚。
如果一个好的呼叫者履行了它的义务,那么你就有责任履行你的承诺。你可以说出你承诺遵守的誓言:
Def fib(N):if n<;2:Result=n Else:Result=fib(n-1)+fib(n-2)#fib()从不返回负数。发誓结果>;=0返回结果。
如果一个功能没有坚持它发誓要做的事情,那就是错误的,必须受到惩罚。
不用说,任何抛出未被捕获的异常的函数都是错误的,必须受到惩罚。
这就是维吉尔有别于缺乏信念勇气的弱小语言的地方。当一个Vigil程序被执行时,Vigil本身将监控所有已经做出的誓言(内爆和咒骂)。如果违反誓言,违规的函数(在恳求的情况下是调用者,在咒骂的情况下是被调用者)将受到适当的惩罚。
确保您的程序满足其要求的唯一方法是绝对禁止不能满足要求的代码。使用Vigil,这将自动为您完成。在足够多的运行之后,Vigil承诺所有剩余的代码都符合它的誓言。
不,想要根据自己的规范保留明显有缺陷的代码是疯狂的。这能有什么好处呢?它已损坏,必须从您的代码库中清除。
这些功能似乎也被破坏了。再运行一次Vigil,它会帮你解决这个问题。可能需要多次调用才能完全清除代码中的所有错误。