编程和数学之间有什么关系?

3
可能重复:
编程是否等同于数学? 程序员似乎认为他们的工作非常数学化。
当你尝试优化性能、找到最有效的算法等时,我能理解这一点。
但是当你看着一个商店的计费应用程序或充满I/O调用的系统软件时,它显然是错误的。
那么它到底是什么?计算和相关的编程真的是数学吗?
在这里,我特别想起了哲学家叔本华的话:
“算术是所有心智活动中最低级的,这一事实可以通过它是唯一一种可以用机器完成的活动来证明。例如,目前在英国广泛使用的计算机。但是,所有有限和无限分析都基于计算。因此,我们可以衡量数学家的“深刻感”,正如利希滕贝格所嘲笑的那样:“这些所谓的数学教授利用了其他人的纯真,获得了拥有深刻感的信誉,这与神学家对自己的圣洁的深刻感非常相似。”
上述引用摘自这里。看来程序员正在进行老人家所鄙视的机械化基础智力活动。
那么到底是什么呢?编程真的是“好”的数学,还是更低级的类型,或者完全是商业用途而不与纯粹的学科混淆的其他东西?

2
复制 https://dev59.com/r3VC5IYBdhLWcg3w9GA9 - N 1.1
这有点挑衅性。但我真的很想听听人们的看法。此外,这不是重复的问题。这实际上更多是哲学性的。 - Math Grad
似乎程序员正在进行老年人所鄙视的机械化基础智力活动。不,程序员正在将非基础的“智力活动”转化为机械术语,以便可以“通过机器完成”。这些机器不是从虚无中产生的:它们必须被构建。这些机器被称为程序,而程序员就是构建它们的人。另一方面,我同意程序员在执行这个构建任务时并没有使用太多花哨的数学:逻辑和业务知识扮演了更重要的角色。 - itowlson
1
这个问题似乎没有一个具体的正确答案,因此最好将其作为社区维基。 - itowlson
4个回答

1
所有的编程都需要逻辑,有些编程需要数学。
数学是处理程序的一小部分,而逻辑则是处理全部。

0

数学不仅仅是计算。

实际上,我们在编程时使用数学,因为编程语言使用“类型”,但(不幸的是)我们经常将它们视为“原始”数据容器。

<CoolStuff>Y combinator

#lang scheme

;(define Y
;  (λ(p)
;    ( (λ(f)(f f)) (λ(f)(p (λ(x)((f f) x)))) )))

(define Y
  (λ(X)
    ((λ(f)
       (X (λ(arg) ((f f) arg))))
     (λ(f)
       (X (λ(arg) ((f f) arg)))))))

> ((Y (λ (n!)(λ (n)  (if (< n 2) 1 (* n (n! (- n 1))))))) 5)
120
>

</酷炫的东西>


0

这个帖子很相似,但底线是肯定的。即使是计费应用程序或重量级IO也是数学绑定操作。在其根本上,我们谈论的是所有这些事情发生的数学计算,但更高层次的数学正在管理我们在如何将所有这些操作编排在一起并进行管理方面做出的选择。

数学不仅仅是运算,还包括理论和操作。


0
程序员似乎认为他们的工作与数学有很大关系。
真的吗?他们中的所有人都这样认为吗?我见过很多程序员讨厌数学并且说他们与数学无关。
看起来你可能混淆了程序员和计算机。很多编程涉及到高级数学和计算机。而构建程序的思维过程也并不简单。
在我看来,事实是数学和编程相似,因为它们都涉及解决问题(通常是明确的问题)。有时数学家认为他们的问题更难(或更纯粹、更优雅等)。但当涉及到解决方案时,程序员更关心更好的解决方案。
让我给你举个例子:假设你的问题是要证明费马大定理,现在假设你是安德鲁·怀尔斯(Andrew Wiles),并发表了一篇100多页长的论文《数学年刊》上充满了美丽的图表、引理、定理和关于半稳定椭圆曲线的命题。这些材料只有少数几个人能够理解,他们需要花费数周的时间去理解它。更不用提你花了7年时间才想出了解决方案。因此,从程序员的角度来看,你的解决方案是糟糕的,因为它难以理解、难以调试、难以维护,并且不具备可扩展性。而这就是编程和数学之间的区别。因此,我认为编程是关于解决问题并以最佳方式完成它。

现在,如果你想知道编程是否是数学的一部分,我认为答案是肯定的,当然前提是你也认为物理学是数学的一部分。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接