编程需要数学吗?[关闭]


117

在大学期间,我偶然与一位朋友辩论,高级数学对于任何资深程序员来说都是必要的。他过去经常对此进行激烈争论。他说,程序员只需要高中或大学一年级的数学基础知识就可以了,几乎所有的编程任务都可以完成,甚至不需要高级数学。但是,他认为算法是程序员的基本和必不可少的资产。

我的立场是,所有计算机科学的进步几乎都完全取决于数学的进步,因此,当程序员在处理现实世界中的难题时,透彻的数学知识将对他们有很大的帮助。

我仍然不能确定论点的哪一边是正确的。您能根据您的经验告诉我们您的立场吗?


7
十年后,我打电话给我的数学老师,只是告诉他我一生中从未使用过高级数学。迪克的举动,我知道,但是很好的问题!加一。
克里斯·麦考尔


请查看对该问题的最高投票答案。
鲍里斯·史提尼克

而不是。关闭,这应该迁移到程序员。
克里斯·库德莫

Answers:


111

要回答您提出的问题,我必须说:“不,数学不是编程所必需的”。但是,正如其他人在该主题中所建议的那样,我相信理解数学与能够“从算法上思考”之间存在关联。也就是说,能够抽象地思考数量,过程,关系和证明。

我大约9岁时就开始编程,可以说我在那个阶段学到了很多数学。但是,通过一点点的努力,我就能够理解变量,循环,goto语句(原谅我是Vic 20 BASIC,但我还没有读过Dijkstra)和基本的坐标几何图形以将图形显示在屏幕上。

我最终与一名计算机科学辅修了纯粹数学的荣誉学位。尽管我主要专注于分析,但我还研究了很多离散数学,数论,逻辑和可计算性理论。除了能够将统计学,概率论,向量分析和线性代数中的一些思想应用到编程中之外,我所学的数学很少,可以直接用于我的本科学位课程以及之后进行的商业和研究编程。

但是,我坚信数学需要的形式化思维方法-认真的推理,寻找反例,建立公理基础,发现概念之间的联系-当我处理大型复杂的编程项目时,这是极大的帮助。

考虑运动员进行体育锻炼的方式。例如,足球运动员无疑将大部分训练时间花费在基本足球技能上。但是,为了提高他们的总体健康水平,他们可能还会在健身房里骑自行车或划船机,做举重等。

学习数学可以比作重量训练或交叉训练,以提高您的智力和编程耐力。练习基本的编程技能是绝对必要的,但是学习数学是一项令人难以置信的心理锻炼,可以提高您的核心分析能力。


6
我想补充一点,数学不仅为了增强您的智力而进行的重量训练,而且还为新问题和解决方案打开了大门。例如,在图像处理实习期间,如果没有对PDE的透彻了解,就无法实现我们的噪声消除算法。生成的代码很简单,但是非常精确。数学就是使我们到达那里的原因。这些配方的美丽之处更是令人惊叹。一个小的PDE表达式可以翻译成几页代码。没有初始公式,很难知道最终的结果。

编程不需要数学,因为编程数学。它可能是好的数学,也可能是不好的数学(例如,当猩猩的长话被翻译成Ook语言时),但是每当程序员设计某种东西的对象模型时,ze(通常在不知不觉中)都会执行数学动作。因此,同样,人们不需要阅读数学书籍即可编程,但是就编程是数学这一事实(如欧几里得所说)而言,这没有任何改变。
鲍里斯·史提尼克

56

尽管编程可能不需要高级数学(除非您正在编程高级数学能力),但编程和数学的思维过程却非常相似。您首先需要了解一些已知的事物(公理,先前被证明的理论),然后尝试着找到新的事物。您不能跳过步骤。如果您确实跳过了步骤,则必须填写空白。这是一个至关重要的思考过程,使两者极为相似。

此外,数学家和程序员都对抽象进行批判性思考。现实世界中的事物由对象和变量表示。从具体到抽象的翻译能力也将这两个领域联系在一起。

如果您擅长一个,很有可能会擅长另一个。


因此,您可以说做填字游戏或玩拼字游戏的人比不做填字游戏的人更擅长编程。这种关系似乎是关于可能性的,而不是严格的依赖性。
利亚姆

解决数学问题的严谨和纪律转化为编程。您需要具备解构问题并从明显的方向开始解决问题的能力,然后再从两个学科的更具创造性的方向解决问题。
Bramha Ghosh,

4
我非常佩服的两位出色的程序员没有学习计算机科学,而是接受过数学家的培训,只是改变了职业道路:Miguel de Icaza和Alexander Stepanov。顺便说一句,Stepanov曾经说过,在从事数学工作时,“您不会从公理开始:最终会被公理”。:D
乔·派

@Liam-关于短期内模式匹配和处理内存中的事物。两项活动都需要这些技能。
jcolebrand

+1表示“如果您擅长于一个,那么您很有可能会擅长于另一个。”
托尔比约恩Ravn的安徒生

39

计算机科学!=编程

好吧,说真的,我知道好坏的程序员都是英语和心理学专业,有些是计算机科学专业的。作为开发人员,我非常欣赏一些非常有名的家伙,他们没有CS的背景。例如,拉里·沃尔(Perl)是一名语言学家。另一方面,这有助于您了解正在使用的域的知识,因为这样您至少可以查看您的数据是否有意义,并帮助您的客户/用户深入了解他们真正想要的。是的,这里存在计算复杂性,有效的数据结构和程序正确性的问题。那是您在计算机科学领域学到的东西,对于几乎所有领域的知识都是有用的,但这既不是必需的也不是足够的。


12
我认为我听到的最好的报价是“计算机科学与计算机无关,天文学与望远镜
无关

5
我认为stackoverflow.com的创建基本上是为了克服这种单线型的答案,但是有15位志同道合的人将这个无用的答案提升到了顶部。我与您没有私人关系,但是我已将您的回答标记为“令人反感”。至少对我来说是如此。
08年

2
@simsim:我觉得冒犯性是因为人们认为CS学位与编程有关。
2008年

3
@simsim:Joel和Jeff创建此网站时的想法并不重要。所有这些都是关于创建一个程序员相互帮助的社区的。我认为戴维的简短答案是正确的。+1
Scottie T

@ Scottie:如果仅仅是“创建一个程序员相互帮助的社区”,那么论坛和邮件列表就足够了。也许我的回答有些苛刻,但是令人惊讶的是,在编辑之前,有15位用户投票赞成完全毫无头绪的“答案”。:-)
simsim

29

我想我会是第一个人说你需要数学。正如其他人所说,数学对于开发的某些方面并不是那么重要,但是批判性思维和结构化分析的基础非常重要。

更重要的是,数学对于理解调度程序,优化,排序,协议管理以及计算机的许多其他方面所涉及的许多基础知识非常重要。尽管从计算级别涉及的数学并不复杂(主要是高中代数),但理论和应用可能会非常复杂,因为通过微积分对数学的扎实理解将大有裨益。

如果没有它,您能不能完全摆脱困境,并且您不应该让那么少的透彻的数学知识使您退缩,但是如果有机会,或者有这样的倾向,我将尽可能多地学习数学,微积分,数值理论,线性代数,组合数学,实际应用,它们在广泛的计算机科学中都具有实际和理论应用。

我认识过在围栏两边都非常成功的人(那些不十分注重数学的人,以及那些去物理或数学学校就读的人),但是在这两个小组中,他们都喜欢数值问题,并且学习算法和数学理论。


我同意那个。尽管没有它也可以解决-会后悔他/她的决定吗?如果您期望获得一份中等程度的刺激/挑战性工作,那么您所获得的那些数学技能肯定会对您有所帮助。
安德拉斯·瓦斯

很公平!GrayWizardx和其他人:作为自学者,您在阅读材料方面有何建议?当我小的时候,我被教给我数学的那种致命的糟糕方式,使我大为震惊。我不想在其他地方怪罪,但是数学的介绍是恶意的。现在该兑换了。自己学习这里概述的数学(微积分,线性代数,离散数学等)有多容易?有没有推荐使用这种方法的特定教科书?大学学位已不再是一种选择!
Emmel'3

1
@Emmel,我实际上在那里看到了Barnes and Noble的“数学数学指南”和“微积分数学指南”,而且我知道我前几天看过“线性代数的完整白痴指南”。至于实际资源,过去曾经有一些很棒的数学网站(面向学生等),但我不确定其中仍有多少个数学网站。我不时做的一件事是去社区大学,“审核”数学课(通过/不及格),然后再继续学习。Havent在5到6年内就做到了,但最后一次非常有用。
GrayWizardx

26

我拥有数学学位,但是我不记得在我的职业生涯中一次要求数学。这对于训练我的逻辑思维能力很有用,但是我还没有使用流体动力学,量子理论或马尔可夫链来编写任何代码。(我怀疑最后一个是最有可能出现的。)

大多数业务线开发人员在大多数时候都不需要高级数学。有时知道三角学会有所帮助,当然能够理解足够的数学以实现以数学方式描述的算法可能很重要-除此之外呢?没事

不要忘记,大多数程序员都没有推进计算机科学-他们正在构建应用程序。我不需要了解先进的技术来驾驶现代汽车,即使该汽车几乎可以肯定通过先进的工程进行了改进。


我同意您的大部分意见,但是,难道不能说通过理解通用数学原理可以使编程的许多方面变得明显容易吗?有时某个公式比实现相同值的算法更容易编程……只要您知道该公式
BenAlabaster

@balabaster:有时-但是我不会经常发生这种情况。同样,您真的不需要事先知道公式即可使用它。作为主管在数学好,所以你能理解公式,当你看到他们,但你几乎不需要学位级数学本身IMO。
乔恩·斯基特

11
数学学位?然后您知道不仅仅是数字。我有两个数学学位,并且经常使用以下内容:布尔代数以分析/简化逻辑,用于DSL构造的自动机/语言理论,用于big-O性能分析的代数等
。– joel.neely

14

我认为拥有高级逻辑(离散)数学确实可以有所帮助。与集合论一起。在处理常见的计算机程序时,这些学科会有所帮助。但是,我在大学里学习的其他许多数学都是微积分,据我所知,它的用法非常有限。由于90%(或类似的程度)的编程人员正在使用非常简单的数学方法来开发业务应用程序,我想说的是,在大多数情况下,您对数学知识的了解很少。但是,对布尔代数,逻辑,离散数学和集合论有很好的了解,确实可以将您带入更高的层次。


14

我在这里反对谷物,说“是”

我从土木工程切换到编程(具体糟透了!)。我的数学背景包括通常的一年级课程,第二年和第三年微积分(Diff EQ,体积积分,系列,傅里叶和拉普拉斯变换)和数值分析课程。

我发现我的数学非常难以进行计算机编程。我缺少离散数学和逻辑的所有领域,而我只能靠大量的教科书,维基百科和Wolfram生存。大多数高级算法都是基于高级数学的,如果不进行大量研究,我将无法开发高级算法(本质上相当于半课程的工作。)我当然无法提出新算法,因为我只是这样做没有作为站在巨人肩膀上的数学基础。


一个普通的程序员实际写多少个基本算法?我猜想80%的编程工作都不涉及基本代数以外的数学。
dbkk

@dbkk:普通程序员最常见的任务是对象模型的设计,即某些领域的“业务逻辑”。尽管数学不是执行任务的人通常反映的过程,但它只不过是数学而已。
鲍里斯·史提尼克

14

这取决于您在做什么。如果您进行大量3D编程,那么一定要具备3D几何知识,您是否同意?;-)如果您要创建新的图像格式(如JPG)或新的音频格式(如MP3),那么如果您无法理解余弦或傅立叶变换,您也会很迷失,因为这些是大多数有损压缩的基础。如果您对数学非常了解,则可以更好地解决许多其他问题。

您还会发现许多其他编程任务不需要太多数学。



9

是的,如果您要进行商业编程,则不需要现成的软件即可使用高级数学。

但是,在处理诸如以下的硬核内容时:

  • 计算轨迹以控制机器人
  • 创建类似AI的应用程序以支持不确定性和自动推理
  • 播放3D运动和图形

一些高级数学知识可能会派上用场。并不是说它们是“世界之外”的问题。

我必须创建一个软件来尝试“预测”办公室所需的纸张量(而仅仅为了找出近似值的最佳方法真是太难了)。

但是,您必须小心,因为使用高级功能时很容易迷路-我的一个朋友求助于使用Turing存储动态菜单的状态只是为了正确显示它-哼...他的想像力太深了。


您可以添加诸如压缩文件或编辑MP3文件之类的内容,或者需要实际了解计算机功能的任何内容,而不仅仅是将网站放在一起。
2008年

4
他是如何使用图灵来做到这一点的?阿伊亚板或集会?
Jared Updike

8

什么类型的编程?

根据我的商业经验,我不需要高级数学,但这在很大程度上取决于您所在的领域。

计算机图形学需要大量的高级数学。许多学术计算机编程都需要高级数学。

所以说,擅长数学的人和擅长编程的人之间往往存在关联。

我希望这个一厢情愿的答案会有所帮助。


6

在某些领域,开发人员需要数学,而在其他领域,数学几乎没有用。

如果您是游戏开发人员并且必须大量从事物理工作,那么对数学的理解至关重要。如果您使用高级视觉控件-没有几何图形就无法做很多事情。如果您打算进行一些财务计算-扎实的统计知识确实有帮助。

另一方面,在过去的5年中,我只有2个或3个项目,这些项目根本不需要任何数学运算。其中只有1次发生在Google搜索没有帮助的情况下。

归根结底,即使是财务计算,也是客户经常为您做的事情,并为您提供实现的公式。

因此,如果您从事“应用软件”业务,则可能永远不会使用数学学位。如果您正在学习学术软件,那么数学至关重要。


我要向“游戏开发人员”添加“模拟开发人员”。我记得在93年的时候,到处都是开车,试图找到一本足够高级的数学书来解释四元数如何对我起作用,以便我可以正确地编写无效的重新定位算法。感谢上帝今天的互联网!
TED

6

我同意克里斯。我也会说“是”。但这取决于您如上所述的市场。如果您只是创建一些基本的“现成”应用程序或编写工具来帮助您的日常工作……那么数学就不那么重要了。

工程定制软件解决方案需要大量问题解决和批判性思维。具备数学背景后,技能肯定会得到增强。我以计算机工程学士学位攻读数学,并且将自己所有的数学背景归功于我为什么会成为今天的我。

从上面的阅读中可以看出,这是我的2美分,很多人不会同意。我鼓励所有人考虑,我并不是说您没有数学背景就不会拥有这些技能,我只是在说这些技能是拥有这种背景的副作用,并且可以对软件产生积极影响。


6

以我的经验,编程需要数学,您无法摆脱它。整个编程都基于数学。

问题不是黑白的,而是更加丰富多彩的。问题不是您是否需要数学,而是多少。更高的数学水平将为您提供更多的工具,并为您打开不同的道路。

例如,如果您只知道加法和减法,则可以编程。当需要乘法时,您将不得不执行许多加法。乘法简化了重复加法。代数允许在将其实施到程序中之前简化数学。线性代数提供用于转换图像的工具。布尔代数提供了用于简化所有这些if语句的机制。

并且不要忘记数学,逻辑学和哲学的同胞。逻辑将帮助您有效利用caseswitch语句。哲学将帮助您理解编写您正在修改的代码的人的想法。

是的,您不需要太多数学来编写程序。有些程序可能比其他程序需要更多的数学。与不那么了解的人相比,更多的数学知识将为您带来优势。在这些时期,人们需要获得他们所能获得的所有优势。


6

我从事专业编程已有8年,从12岁起就是我的业余爱好。

数学不是必须的,逻辑是必须的。虽然数学是非常有用的,但是说数学没有必要,就像说杀了一个人,没有枪是必要的,您可以使用小刀。好吧,的确如此,但是那把枪使它变得容易得多。

有一些最低要求,您应该已经达到最低要求。您需要了解基本的代数表达式和表示法,以及常见的计算机等效项。例如,您需要知道什么是指数(3到3的指数是27),并且通用计算机表达式是3 ^ 3。代数的常用符号确实会在语言之间发生变化,但是其中许多都使用了某种统一的方法。其他人(看着您LISP)则不会。您还需要知道操作顺序。

您需要了解算法思想。首先是这个,然后是这个,产生这个用于计算中。是您了解还是不了解,如果您不了解,则很难跨越。我发现这是您“获得”的东西,并不是真正可以学习的东西。相反,有些人不会“获得”艺术。他们不应该成为画家。另外,有些CS课程的学生无法弄清楚为什么它不起作用:x = z + w; z = 3; y = 5;这并不是说他们不了解加法,不是因为他们没有把握明确表达的要求。如果他们理解,计算机也应该正确,对吗?如果您看不到以上三行代码有什么问题,请不要成为程序员。

最后,您需要了解编程领域内的数学知识。会计软件可以从基本代数停止。如果您正在编程物理学,则需要了解物理(宽松)和3维几何(欧几里得)的数学。如果您正在编写体系结构软件,则需要了解三角函数。

但是,这要比数学更重要。无论您要编程的领域是什么,都需要深刻理解基础知识。如果您正在编写语言分析软件,则需要了解概率,统计数据,语法理论(多种语言)等。

通常,某些领域需要或可以从您认为与之无关的知识中受益。例如,如果您正在编程音频软件,则实际上需要了解三角函数才能处理波形。

幅度也会改变事物。如果您要排序包含1000个项目的财务数据集,那没什么大不了的。但是,如果记录为1000万条,那么您将可以从实际上了解矢量数学以及对二进制级别的排序有深刻理解的系统中受益(系统如何按字母顺序排序?如何知道'a'小于'b '?)

您会发现,作为一名程序员,您的一般知识基础将会激增,因为每个项目都需要在编程的直接领域之外进行更多的学习。如果您对自学感到迷茫或懒惰,并且不喜欢每周花10个小时以上的时间做“家庭作业”的想法,请不要成为程序员。

如果您喜欢思考练习,喜欢学习,可以不用计算器就可以思考数学之类的抽象事物,也可以不用画板就能进行设计,如果您的生活和爱好有广泛的品味,并且自我批评并且可以抛弃“喜欢的想法,如果您喜欢完善事物,那么请成为程序员。不要以数学为基础,而是以逻辑思维和学习为基础。这些才是重要的。数学只是副产品。


5

当然,这取决于您想成为什么样的程序员,或者更好地取决于您的雇主希望您成为什么样的程序员。我认为微积分和代数是必不可少的,统计和线性编程确实是您公文包中的一个好工具,也许分析(导数,积分,函数...)可以不做。但是,如果您想深入了解事物的工作原理(例如,电子学或一些非平凡的算法),那么“高级”数学就是最好的选择。


5

我完成的大多数编程工作都涉及物理模拟研究,包括电磁学,量子力学和结构力学。由于问题领域具有与之相关的高级数学,如果不使用高级数学,将很难解决它们。

因此,您问题的答案是-这取决于您要执行的操作。


5

如果您要编写新的编程语言,那么高级数学知识至关重要。或者您需要编写自己的算法。

然而,对于大多数的一天到一天的节目-从网站到保险处理应用程序-只有基本的数学是必需的


5

具有扎实的数学(不仅是算术)或逻辑背景的人将很好地应对算法,变量使用,条件推理和数据结构。

  • 并非每个人都可以设计UI。
  • 并非每个人都可以编写高效的代码。
  • 并非所有人都能清楚地发表评论和记录。
  • 不是每个人都可以做一个好的算法

数学将帮助您达到一个目标,但只能达到目标。


5

我认为高级数学知识不是优秀程序员所必需的,但是基于个人经验,我认为对高级数学有更好理解的程序员也可以成为更好的程序员。这可能仅仅是由于他们的逻辑思维更为逻辑,或者是由于他们解决数学问题的经验而更加逻辑的观点。


5

数学的基本概念是算法的遵循,设计,理解,实现和使用。如果你不能做数学,那是因为你不能做这些事,如果你不能做这些事,那你就不能成为一个有效的程序员。

常见的编程任务可能不需要任何特定的数学知识(例如,除非您要执行3D图形或物理模拟之类的任务,否则您可能不需要向量代数和微积分),但是基本技能是相同的,并且缺乏能力一个领域中的能力将因另一领域中相应能力的缺乏而匹配。


5

数学是用于创建程序的工具箱。我推荐Cormen的算法简介。它涉及更多“数学”的东西。

- Greatest lowest limit (managing resources) 
- Random variables (game programming)
- Topological sort (adjusting spreadsheets)
- Matrix operations (3d graphics)
- Number theory (encryption)
- Fast fourier transforms (networks)

4

我不认为要成为一名优秀的程序员就必须要有较高的数学水平,因为它总是取决于您所编写的内容。

当然,如果您使用3D图形编程,则需要矩阵和其他东西。作为商业软件的作者,您可能需要统计数学。

但是,作为专业程序员将近10年(以及另外10年业余),“高等数学”并不是我经常需要的。在所有情况下,大约99.8%都是智能组合中的正,负,除和乘-在大多数情况下,它与算法有关,而与数学无关。


4

对于大多数程序员来说,学习高等数学很重要,因为它使您的大脑弯曲以逐步思考的方式从一件事转到另一件事。

但是,很少有编程工作需要高中数学以上的要求。我曾经使用线性代数。我从未使用过微积分。我每天都使用代数。


4

数学知识通常对程序员有用,例如图形设计技能,解决难题的能力,职业道德以及许多其他技能和特质。很少有程序员擅长于程序员可能擅长的一切。我不会同意“您不是真正的程序员,除非您可以{ 在此处插入喜欢的编程能力 }”。

但是我会警告不能做数学的程序员。超过了一个不会画画的人。


4

我认为这确实取决于您要执行的操作,但是恕我直言,CS和OS理论在这里比数学更重要,并且您实际上只需要它们所涉及的数学即可。

例如,在现代OS中,有很多CS理论的调度理论和优化背景支持许多调度程序。这是一个需要一些数学知识的例子,尽管不是超级复杂的事情。

但老实说,对于大多数东西,您不需要数学。您需要的是学习在2和16基础上思考的能力,例如在心理上进行OR / AND的能力。例如,如果您有一个字节,并且在该字节中有两个3位字段和2个浪费的位,那么当字节值约为11时,知道哪些位在哪个字段中处于活动状态将使事情比必须使用的要快一些笔和纸。


您学习过排队理论吗?您是否曾经研究过内存管理器和统计模型,这些统计模型使开发人员可以选择一个?我不一定不同意您的回答首当其冲,但您过于简化了。
圣哈辛托

@San:我敢肯定,我简化了,但是我认为大多数系统开发人员都不需要在此级别上了解这些内容。我在最初的两个学位中对基础知识进行了研究,在博士学位期间则进行了更深入的研究,但这从来不是我的专长,我更愿意将其交给专家。我认识的OS人员具有数学技能,这些知识让我大吃一惊。
乌里(Uri)

我认为这是非常有效的。我认为有必要将系统编程与OS编程区分开来。紧密编织的概念,但仍然有所不同。
圣哈辛托

4

我大约在进入代数课前的同一时间开始编程。因此,我不会说数学那么重要,尽管数学可以对某些类型的编程(尤其是函数式编程)有所帮助。

我还没有学习过离散数学,但是我看到了很多用数学符号编写的编程理论知识,这些知识在本课程中进行讲授。

另外,请确保您知道如何计算任何底数,尤其是底数2、8和16。

另外,这门预编程课确实为我带来了一些概念。我们教了联合,交叉点以及所有这些快乐的东西,并且它几乎完全与按位数学相似。而且我们非常详尽地介绍了布尔逻辑。我认为最有用的是当我们学习了如何减少复杂的布尔语句时。这非常方便:

(x|y) & (x|z) & (x|foo)

可以简化为

x | (y & z & foo)

我以前不太了解。


4

好吧,您产生了许多答复,没有,我没有全部阅读。我在这方面处于中间位置,不,您当然不需要数学就可以成为一名程序员。Linux中的汇编程序与设备驱动程序彼此之间并没有多少复杂,也都不需要数学。

无论哪种形式,您都不需要参加或通过数学课程。

我会同意,编程的解决问题的思维方式与数学解决方案的思维方式非常相似,因此数学很容易实现。相反,如果数学很难,那么编程可能就很难。当然,不需要课程,学位或任何纸质或奖杯就可以开始学习。

现在,如果您不能在头脑中,在纸上或使用计算器都无法快速将十六进制从二进制转换为十进制,那么您将陷入困境。如果您想进入网络以及其他与计时有关的事情,内核驱动程序通常会这样做,但不必这样做。你要挣扎。我知道有很多人拥有数学学位和/或计算机科学学位,和/或工程学位,他们在费率计算,每秒比特数,每秒字节数,要做某事需要多少内存等方面苦苦挣扎。在某种程度上,它可能被认为是某些人必须努力解决的诀窍。

我的底线是我相信意志的力量,如果您想学习这些知识,那么您将可以并且很简单。您不需要上课或花很多钱,例如linux和qemu可以让您长时间忙碌,使用不同的asm语言等,可崩溃的内核开发,嵌入式环境等。您不仅限于此,但我不认为您不愿意参加任何课程。然后,如果您想参加一些EE课程,一些CS课程和一些数学课程。


这不是诱饵,而是现实。从编程的角度来看,您需要了解的有关数字电子和软件工程的所有知识都可以汇总起来。0、1,或非。这五件事是数字电子设备和所有程序所要执行的操作。您可以使用一大盒快速的nand门来构建任何东西。
old_timer 2010年

4

你需要数学。编程无非就是数学。除非根据数学解进行解释,否则理论物理学的任何发现都不会成为实际的(适用的)含义。如果不能在计算机上,尤其是在编程语言上无法解释这些问题,则无法通过计算解决。因此,设计了不同的语言来解决特定的问题。但是对于通用和广泛使用的编程语言(如Java,C,C ++),我们的许多编程任务都涉及重复(连续)解决方案,以解决相同的问题,例如从数据库,文本文件中提取值,将其放置在Windows(桌面,Web)上,进行操作相同的值,有时会从相似的设备访问某些数据(但给定不同的品牌名称,不同的端口和令人头疼的信息)等,而这些数据所涉及的范围不仅仅限于单一方法,


3

IMO,您可能需要一定的数学才能,而不必在该领域有很多知识。因此,您需要擅长数学的事情与您需要擅长编程的事情相似。

但是总的来说,我不记得上次我在日常编程中使用任何高级数学运算的情况,所以没有。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.