我在大学里接受过正规系统的教育,但是我感到失望,他们似乎并没有被用在真正的词汇中。 我喜欢能够知道一些代码(对象,函数,任何)的工作原理,而不是通过testing,而是通过certificate 。 我相信我们都熟悉物理工程和软件工程之间不存在的相似之处(钢铁的performance可以预见,软件可以做任何事 – 谁知道!),我很想知道是否有任何语言可以用在真正的词(是要求一个Web框架太多问)? 我听说过有趣的function语言如scala的可testing性。 作为软件工程师 ,我们有什么select?
为什么计算机程序不能像math声明那样被certificate? mathcertificate是build立在其他certificate上的,这些certificate是由更多的certificate和公理构成的 – 那些真理我们认为是真实的真理。 计算机程序似乎没有这样的结构。 如果你写一个计算机程序,你怎么可以采取以前certificate的作品,并用它们来显示你的程序的真相? 你不能存在。 此外,编程的公理是什么? 该领域的primefaces真理? 上面我没有很好的答案。 但似乎软件不能被certificate,因为它是艺术而不是科学。 你如何certificate毕加索?
继续从下面的想法: 有没有任何可证实的现实世界的语言? 我不了解你,但是我厌倦了写我不能保证的代码。 在问上面的问题并得到一个惊人的回应(谢谢所有!)我已经决定缩小我的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,并阅读原始问题 🙂