数学和计算机编程语言的融合似乎正在发生强烈的运动,这可以从 lambda 演算对现代语言的影响中得到明显的证明。
大多数时候我不是用数学思考,而是用逻辑思考。在我看来,许多可以用数学建模的现象也可以用逻辑建模。
我认为我们永远不会看到纯粹的逻辑语言或纯粹的数学语言在通用编程中获得吸引力,但我想列出每种范式的好处。我想知道:
最佳答案
首先,我看不出逻辑和数学有多大区别;后者只是前者系统地应用于特定结构。
此外,我不相信以数学/逻辑为基础的编程语言的理论之美在通过编写高效、可维护的代码来完成工作方面真的很有值(value)。
至于你的具体问题。
What are the benefits of modeling programming languages or language features on mathematics? What are the benefits of modeling a language on the principles of formal logic?
正确性的证明变得容易得多——尽管我们是否能达到它们在现实生活系统中变得实用的程度是值得怀疑的。
Can a general purpose language forgo either logic or mathematics?
取决于你对“放弃”的意思。你可以拥有一种没有数学运算的语言(尽管你必须变得非常神秘;图灵机是我能想到的唯一一个甚至没有递增或递减的语言),你当然可以拥有一个不关心形式主义的语言(汇编程序,C)。但我认为没有逻辑的编程语言是不可能的(尽管它可能是一种变态的逻辑,参见 Malbolge )
What are some of languages that really show off the benefits of either approach?
好吧,如果您认为 Lambda 演算是一种逻辑形式,那么 Lisp 自 1958 年以来一直很好地展示了它的好处,因为它是其他语言渴望(但无法达到)表达能力的语言。
然后是 Prolog,这是我所知道的唯一一种试图明确地以形式逻辑为基础的“严肃”语言。而且 - 令人惊讶 - 它擅长逻辑方面的东西,其他的很少。
What hardware features make one approach more attractive than the other?
没有任何。 Lisp Machines的失败非常确凿地证明了 IMO 编译器+通用硬件比专用硬件更强大。然而,有人可能会说,当今系统的简单蛮力使完全忽略硬件约束的语言在以前不实用的地方变得实用。
关于math - 数学与编程语言的融合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1589020/