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

时间:2010-03-13 01:16:17

标签: math

  

可能重复:
  Is Programming == Math?

程序员似乎认为他们的工作非常数学化。

当你尝试优化性能,找到最有效的算法等时,我理解这一点。

但是,当您查看商店的计费应用程序或充满I / O呼叫的系统软件时,它显然是错误的。

那究竟是什么?计算和相关的编程真的是数学的吗?

在这里,我特别想到了哲学家叔本华的话:

  

算术是所有心理活动中最基础的证明   它是唯一可以通过以下方式实现的事实   机器。举个例子,就是这样的计算机   目前在英国常用,仅仅是为了这个目的   方便。但所有分析finitorum et infinitorum都是   从根本上基于计算。因此,我们可以衡量   Lichtenberg所做的“数学家的深刻感”   有趣的是,他说:“这些所谓的数学教授都有   利用其他人的天真,已经达到了   具有深刻意义的功劳,非常类似于   神学家对自己圣洁的深刻感觉。“

我从here解除了上述引用。似乎程序员正在做的是这位宏大的老人蔑视的机械化基础心理活动。

那究竟是什么交易?编程真的是“好的”数学类型,还是仅仅是基础类型,或者说其他只是为了企业而不是与纯粹的学科混淆的东西?

4 个答案:

答案 0 :(得分:1)

所有编程都需要逻辑,有些编程需要数学。

数学是处理程序的一小部分,逻辑是处理所有。

答案 1 :(得分:0)

post类似,但底线为是。即使是计费应用程序或重型IO也是数学绑定操作。从根本上讲,我们正在谈论所有这些事情发生的数学计算,但更高层次的数学正在决定我们在如何协调和管理所有这些操作方面做出的选择。

数学,不仅仅是操作。它也是理论和操作。

答案 2 :(得分:0)

数学不仅仅是关于计算。

实际上,每当我们编程以来,我们都会使用数学 编程语言使用类型,但(不幸的是)我们对待 它们通常作为 raw 数据容器。

<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
>

</CoolStuff>

答案 3 :(得分:0)

  

程序员似乎认为他们的工作非常数学化。

真的?他们都是?我见过很多程序员讨厌数学,并说他们与之无关。

  

程序员似乎正在做的正是这位老人蔑视的机械化基础心理活动。

好像你可能会混淆程序员和计算机。许多编程涉及更高级别的数学和计算机。而构建程序的心理过程并不那么简单。

恕我直言,事实是数学和编程是相似的,因为它们都处理解决问题(一般都是好的)。有时数学家认为他们的问题更难(或更纯粹,或更优雅,或其他)。但是当涉及到解决方案时,事实证明程序员更关心更好的解决方案。

让我举个例子:说你的问题是要证明费马的最后定理,现在说你是安德鲁·威尔斯,并且发表了长达100多页的关于数学年鉴的文章,其中充满了美丽的图表,引理,定理和关于半稳定椭圆曲线的命题。基本上只有少数几个人可以理解的材料,这需要几个星期才能完成。没有提到你花了7年时间才找出解决方案。因此,从程序员的角度来看,您的解决方案很糟糕,因为它难以理解,难以调试,难以维护且无法扩展。这就是编程和数学不同的地方。所以我会说编程是关于解决问题并尽可能以最佳方式完成。

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