我目前在社区学院,虽然我们的课程非常好,但缺乏数学或任何真正的理论。如果我想为任何事情创建一个算法,我就搞砸了。我本质上是一个代码猴子。
我从哪里开始获得相关的理论背景来补充我的编程经验?我需要知道什么?
道歉,如果发布这个是错误的地方,我不知道在哪里发布技术但不是纯粹的编程问题。
答案 0 :(得分:4)
某些精英程序员,特别是Joel,因此可能是Fog Creek,如果你不是肮脏的话,似乎会解雇你。其他人没有。在数学方面表现出色有所帮助,但这里需要花费数年才能内化:有很多团体在那里,很多人都有很大的偏见,你永远不会让他们一致同意你很棒。
因此,发挥你的优势,永不停止学习,并建立惊人的东西。这才是最重要的!
显然这就是我的教派所相信的。 :)
说真的是:我在数学方面很糟糕,而且我的12年职业生涯非常有益。我使用了进化算法,我已经推出了聪明的人说不可能的解决方案。我非常直观和有创意,而不是线性的。我感觉很好。
因此,为了解决您的特定恐惧,我会说,即使没有使用微积分或阅读编程艺术,算法对我来说也很容易理解。你可以开始学习今天的基础知识,知识很容易找到...泡泡排序和shell排序以及什么不是魔术,它们是非常简单的代码片段。我熟悉了大O符号和算法,因为它很吸引人,因为我想成为最好的,但是我们要清楚:大O符号从来没有一次对我的工作至关重要,也没有见过很多人可以进行谈话。
所以这取决于你想做什么。
3D游戏引擎可能是我所触及的数学密集程度最高的领域...搜索,人工智能,数据库工程(阅读:构建实际的数据库服务器)以及其他需要大量服务器实现奇迹般性能的领域都是算法密集型的并从深厚的数学知识中受益。
常见的网络开发和商业工作需要......也许是高中代数的前三周。如果说。严重。
采取某种算法计算机科学课程和预先要求(通常是第一年的微积分)是你应该做的事情,如果可以,聪明从不伤害,但也许更重要的是,有些人爱上了它围绕它建立事业。它是大多数优秀CS计划的一部分。
但没有它你也可以做得很好。我退出社区大学英语课程作为程序员学徒,我可能希望有一天回去,但是现在我太忙于学习与我的工作相关的事情而不是数学。
答案 1 :(得分:3)
这取决于你想做什么。离散数学有利于编程所涉及的一般推理,是我的主要建议。线性代数在图形和其他领域有应用。统计数据对于机器学习至关重要。
听起来你应该参加CS课程!标题中任何带有“算法”或“计算理论”的东西都会很棒。否则,通过麻省理工学院,斯坦福大学和其他学院可以免费在线获得许多优秀课程。