大多时候并不需要,但也有好处。
以下为译文:
为了了解数学与软件开发之间的关系,首先我们需要了解一名普通的软件工程师的工作。大多数工程师最终都会从事Web或业务应用程序的开发,要么是前端,要么是后端,或者两者兼顾。这类项目通常要求你需要掌握 Java、JavaScript、Python、C# 和 Go 等语言,以及SQL等查询语言。除了语言本身外,你还需要学习使用框架和库,例如 React、Angular、Express、Django 和Spring 等,这些框架和库能够加快开发应用程序的速度。除此之外,你可能还需要学习开发运营方面的知识,例如 Docker 和 Kubernetes 等容器化产品,以及学习使用各种云计算平台,例如亚马逊的 AWServices,Google云平台等。虽然学好这些软件工程知识是一项艰巨的任务,但是重点在于,这些知识与数学都没有直接的关系。尽管很多知识都是以数学领域的理论为基础,但学习这些知识并不需要了解数学。这些技术所需的大多数知识都是独立的,不涉及大学课程中讲授的理论内容。即使是大多数计算机科学课程也只能帮助你了解这些技术的皮毛。大学课程可能会为你提供有关这些技术的设计及其实现方式的背景知识,但很少具体讲解如何在实践中使用这些技术。话虽如此,基本的数学概念和知识仍与大多数软件工程工作有一定的关系。但是这些数学知识都不要求任何正规的教育,你可以通过互联网轻松自学。通过快速的估算(例如费米问题),估计成本和系统负载。
对概率和统计信息有基本的了解,能够做出数据驱动的决策(例如使用A/B测试),以及进行基本的数据分析。
对逻辑的简单理解,能够编写正确的代码并理解他人编写的条件判断式。
对渐进分析有基本的了解,能够编写复杂的代码,并引导自己寻求有效的解决方案。
即使大多数软件工程的工作都不需要数学知识,拥有扎实的数学基础自然不是坏事。虽然数学课和常见的软件工程活动之间可能没有太多可直接传递的信息,但是学习数学的过程可以培养你解决问题的重要能力。从根本上讲,软件工程的工作就是通过编写代码和设计软件系统来解决问题。同样,数学,尤其是以证明为主的数学需要用数学语言撰写一系列正确的声明来解决问题。从较高的层次来说,这两项活动都涉及将逻辑和事实翻译成某种表达语言。在这两种情况下,逻辑的一致性和正确性都至关重要。然而,这并非数学独有的能力。许多其他领域(例如哲学)以及STEM领域(例如物理学)也涉及类似的能力。甚至还有一些活动,例如玩某些电子游戏或解决难题,也需要类似的逻辑和解决问题的能力。数学只是帮助软件工程师在编程之外,建立批判性思维能力的众多活动中的一个。虽然软件工程的大多数子领域都没有直接使用数学,但的确有一些领域需要使用数学。这些领域包括机器学习、图形、游戏开发、机器人技术和编程语言开发等领域。在这些领域中,你的工作需要直接应用数学知识,其中包括微积分、线性代数、图论、概率、统计、逻辑和离散数学等。但是,即使在大量需要数学知识的领域中,我们也很少将数学知识直接转换为代码,因为我们还可以使用库。这些库(例如主要用于神经网络编程的库TensorFlow)可以抽象基本操作,程序员只需更多地关注高级概念。例如,作为使用此类库的工程师,你无需编写代码即可使用梯度下降。你只需指定神经网络的架构以及训练方式即可。因此,即使在这些领域中,你仍然无需了解所有的底层数学知识。通常,仅了解概念以及应用方式就足以有效地完成你的工作。原文:https://medium.com/better-programming/do-you-need-math-to-be-a-software-engineer-26694a11f7ea热 文 推 荐
☞Rust 入坑指南:鳞次栉比 | CSDN 博文精选☞中国程序员在美遭抢劫电脑遇害,数百人悼念
☞2019,不可错过的NLP“高光时刻”
☞详解CPU几个重点基础知识
☞在以太坊上开发 Dapp 的瓶颈和门槛有哪些?| 博文精选