math - 数学与编程语言的融合

标签 math language-features logic language-design lambda-calculus

数学和计算机编程语言的融合似乎正在发生强烈的运动,这可以从 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/

    相关文章:

    c# - "this"用作方法参数的前缀时是什么意思?

    python - 如果在 Ruby 和 Python 中都允许猴子修补,为什么在 Ruby 中争议更大?

    image - Typo3 如何处理我上传的图片?

    javascript - 无法重新启动逻辑井字游戏 (JavaScript)

    python - 在 matplotlib 中对齐 TeX 方程

    c++ - 这个用于计算 a^n 的算法是如何被重写为在 O(log n) 时间内运行的?

    Clojure 中的 Java 等效开关?

    c++ - 算法的正确性和逻辑 : minimum steps to one

    algorithm - 为什么给定的算法是 O(n^2)?

    c - 作为变量和值传递的参数,都返回不同的答案