我目前在一所社区大学,虽然我们的课程非常好,但它缺乏数学或任何真正的理论。如果我想为任何事情创建算法,那我就完蛋了。我本质上是一个代码猴子。
我什至从哪里开始获得相关的理论背景来补充我的编程经验?我需要知道什么?
抱歉,如果这是发布此错误的地方,我不确定在哪里发布技术问题但不是纯编程问题。
我目前在一所社区大学,虽然我们的课程非常好,但它缺乏数学或任何真正的理论。如果我想为任何事情创建算法,那我就完蛋了。我本质上是一个代码猴子。
我什至从哪里开始获得相关的理论背景来补充我的编程经验?我需要知道什么?
抱歉,如果这是发布此错误的地方,我不确定在哪里发布技术问题但不是纯编程问题。
某些精英程序员的教派,尤其是 Joel,因此可能还有 Fog Creek,如果你不是数学家,他们似乎不屑一顾。其他人没有。擅长数学会有所帮助,但我花了数年时间才将其内化:有很多群体,很多人都有很深的偏见,你永远不会让他们一致同意你很棒。
所以发挥你的长处,永远不要停止学习,创造令人惊叹的东西。这才是最重要的!
看来我的宗派就是这么认为的。:)
不过说真的:我的数学很糟糕,而且我在 12 年的职业生涯中收获颇丰。我使用了进化算法,并且我已经完成了聪明人认为不可能的解决方案。我非常直觉和创造性,而不是线性的。而且我感觉很好。
因此,为了解决您的具体恐惧,我要说的是,即使没有学过微积分或阅读过编程艺术,算法对我来说也很容易理解。您可以从今天开始学习基础知识,这些知识很容易找到... 冒泡排序和壳排序等等都不是魔法,它们是非常简单的代码片段。我熟悉大 O 表示法和算法,因为它很有趣,因为我想成为最好的自己,但让我们明确一点:大 O 表示法从未对我的工作至关重要,我也没有遇到过很多人可以进行有关它的对话。
所以这取决于你想做什么。
3D 游戏引擎可能是我接触过的数学最密集的领域……搜索、人工智能、数据库工程(阅读:构建一个实际的数据库服务器)和其他需要大量服务器的神奇性能的领域是算法密集型的,并且受益于深厚的数学知识。
常见的 Web 开发和业务工作需要……也许是高中代数的前三周。如果说。严重地。
如果可以的话,参加某种算法计算机科学课程和先决条件(通常是第一年的微积分)是你应该做的事情,变得更聪明永远不会受到伤害,但也许更重要的是,有些人会爱上它并建立事业周围。它是大多数优秀 CS 程序的一部分。
但是没有它你也可以做得很好。我从社区大学的英语课程中退学成为一名程序员学徒,我可能想有一天回去,但现在我太忙于学习实际上与我的工作比数学更相关的东西。
这取决于你想做什么。离散数学适用于编程所涉及的一般推理,是我的主要推荐。线性代数在图形等领域都有应用。统计数据对于机器学习至关重要。
听起来您应该参加CS课程!任何标题中带有“算法”或“计算理论”的东西都会很棒。否则,通过麻省理工学院、斯坦福大学和其他机构免费在线提供许多好的课程。