在大学期间,我碰巧和一位朋友讨论过,高级数学是否对任何资深程序员来说都是必要的。他曾经强烈反对这一点。他说,程序员只需要高中或大学一年级数学的基本数学知识,不多也不少,几乎所有的编程任务都可以完成,甚至不需要高级数学。然而,他认为,算法是程序员的基础和必备资产。
我的立场是,所有计算机科学的进步几乎完全依赖于数学进步,因此,当程序员处理现实世界中具有挑战性的问题时,透彻的数学知识将对他们有很大的帮助。
我仍然不能确定争论的哪一方是正确的。你能根据你自己的经验告诉我们你的立场吗?
发布于 2008-10-05 05:28:16
要回答你提出的问题,我不得不说,“不,编程不需要数学”。然而,正如其他人在这篇文章中所建议的那样,我相信理解数学和能够“用算法思考”之间存在关联。也就是说,能够抽象地思考数量、过程、关系和证明。
我在大约9岁的时候就开始编程了,要说到那个阶段我已经学到了很多数学知识,那就有点牵强了。然而,通过一些努力,我能够理解变量,循环,goto语句(请原谅,我是Vic 20 BASIC,我还没有读过任何Dijkstra )和基本的坐标几何将图形放到屏幕上。
我最终完成了纯数学的荣誉学位,辅修了计算机科学。虽然我主要专注于分析,但我也学习了相当多的离散数学,数论,逻辑和可计算性理论。除了能够将统计学、概率论、向量分析和线性代数中的一些想法应用于编程之外,我在本科期间学习的数学很少直接适用于我的编程,以及后来我所做的商业和研究编程。
然而,我坚信数学需要的正式思维方法-仔细推理,寻找反例,建立公理基础,找出概念之间的联系-在我处理大型和复杂的编程项目时有很大的帮助。
想想运动员为他们的运动训练的方式。例如,足球运动员无疑会把大量的训练时间花在基本的足球技能上。然而,为了提高他们的整体体能,他们可能还会花时间在健身房里骑自行车或划船,做举重等。
学习数学可以比作举重训练或交叉训练,以提高你的脑力和编程耐力。练习你的基本编程技能是绝对必要的,但学习数学是一种难以置信的脑力锻炼,可以提高你的核心分析能力。
发布于 2008-10-01 12:40:01
虽然高级数学可能不是编程所必需的(除非您正在编程高级数学能力),但是编程和数学的思维过程非常相似。你从一个已知的东西(公理,以前证明过的理论)的基础开始,并试图到达某个新的地方。您不能跳过步骤。如果您确实跳过步骤,则需要填写空白处。这是一个批判性的思维过程,使两者非常相似。
此外,数学家和程序员都以抽象的方式进行批判性思考。现实世界的事物是由对象和变量来表示的。从具体到抽象的转换能力也将这两个领域联系在一起。
如果你擅长其中一个,你很可能也会擅长另一个。
发布于 2008-10-01 12:37:59
计算机科学!=编程
好吧,说真的,我认识的程序员有好有坏,他们都是英语和心理学专业的,还有一些是计算机科学专业的。作为开发人员,我很欣赏一些非常有名的人,他们没有CS背景。例如,Larry Wall(Perl)就是一位语言学家。另一方面,了解您正在处理的领域的一些信息会有所帮助,因为这样您至少可以了解您的数据是否有意义,并帮助您的客户/用户深入了解他们真正想要的内容。是的,还有计算复杂性、有效的数据结构和程序正确性的问题。这是你在计算机科学中学到的东西,在几乎任何领域都很有用,但这既不必要,也不充分。
https://stackoverflow.com/questions/157354
复制相似问题