似乎数学和计算机编程语言的融合有一种强烈的运动,这可以从lambda演算对现代语言的影响中得到证明。 大部分时间我都没有用数学思考,我认为有逻辑。在我看来,许多可以数学建模的现象也可以在逻辑上建模。
我认为我们不会看到纯逻辑语言或纯数学语言对通用编程有吸引力,但我想清点每种范例的好处。我想知道:
答案 0 :(得分:8)
首先,我没有看到逻辑和数学之间的区别;后者只是前者系统地应用于特定的结构。
此外,我不相信在编写高效,可维护的代码完成工作时,基于数学/逻辑的编程语言的理论之美非常值得。
至于你的具体问题。
建模有什么好处 编程语言或语言 数学的特点? 在形式逻辑原理上建立语言有什么好处?
正确性证明变得更加容易 - 尽管我们是否能够达到真实系统的实用性是值得怀疑的。
可以放弃通用语言 无论是逻辑还是数学?
取决于你对“forgo”的意思。你可以拥有一种没有数学运算的语言(虽然你必须得到相当的无效;图灵机是我能想到的唯一一种甚至没有增量或减量的机器),你当然可以拥有一种不关心形式主义的语言(汇编程序,C)。但我认为没有逻辑的编程语言是不可能的(虽然它可能是一个变态的逻辑,参见Malbolge)
哪些语言真正展示了这两种方法的好处?
好吧,如果你认为Lambda演算是一种逻辑形式,那么自从1958年以来,Lisp一直很好地展示了它的好处,这种语言是其他语言渴望(但不管理)的表达能力。
然后是Prolog,这是我所知道的另一种“严肃”语言,它试图明确地建立在形式逻辑之上。并且 - 令人惊讶的是 - 它擅长逻辑和其他任何东西。
哪些硬件功能使一种方法比另一种方法更具吸引力?
无。 Lisp Machines的失败证明IMO非常确定编译器+通用硬件比专用硬件更强大。然而,有人可能会说,今天系统的简单强大功能正在制造完全忽略硬件限制的语言,而以前它们并不存在。
答案 1 :(得分:2)
答案 2 :(得分:1)
嗯,说实话,很多这些所谓的“现代编程语言”只是使用各种编程语言超过50年的东西。
答案 3 :(得分:1)
在数学上建模编程语言或语言特征有什么好处? 在形式逻辑原理上建立语言有什么好处?
这些都是一回事:形式逻辑只是数学的一个分支。使用形式数学的两个主要好处是优化和安全。当算法没有副作用(即参考透明),并且仅使用纯数学表达时,编译器可以根据数学规则重构算法。这使编译器更容易优化代码并利用并行体系结构。另一个重要的好处是能够证明代码的某些属性。
可以放弃通用语言 无论是逻辑还是数学?
没有。如果没有逻辑或数学,你会怎么做布尔运算或算术运算?你可能在这里指的是我不明白的东西。
哪些语言真正展示了这两种方法的好处?
Haskell,ML,OCaML,Miranda,Alice,Oz,Erlang,Twelf,Coq,Prolog,都表现出更严格的数学应用于编程。
哪些硬件功能使一种方法比另一种方法更具吸引力?
我不相信硬件会因严格的数学编程方法的好处而改变很多东西。引用透明代码的好处主要在于编译器级别。