我很遗憾没有学过数学,因为我16岁(GCSE水平),我现在是一名27岁的C#开发人员。 试图通过 Structure and Interpretation of Computer Programs (SICP)进行工作会是徒劳无功的吗?
读者期望什么样的数学标准?
答案 0 :(得分:7)
通过all of SICP工作,我可以自信地告诉你,你不需要很多数学背景来理解它。 SICP(曾经是?)麻省理工学院的第一或第二学期课程,适用于几乎没有大学/大学水平数学的学生。每当它讨论数学主题时,它为任何智能读者提供了足够的背景知识。
从你讲述自己的小事,现在是通过SICP工作的好时机。阅读本书并解决(至少部分)练习,并使用项目代码,可以教你很多关于编程的知识。不要担心数学 - 你会毫无问题地处理它。真正需要的是对编程的真实,深刻的好奇心以及一些耐心。
答案 1 :(得分:6)
启动SICP永远不会太晚。并且它根本不需要任何更高的数学,除非在具有无限流部分的信号处理中。这可以跳过而不会损失太多。
阅读SICP时最重要的是解决问题,IMO。一些更强硬的人可以扩大思维,迫使你真正理解这个话题。如果您对某些解决方案有信心,可以跳过它。解决方案可以在 - http://eli.thegreenplace.net/category/programming/lisp/sicp/
找到阅读SICP的危险在于,在完成它之后,您不会喜欢使用除Scheme之外的任何编程语言。 :)
答案 2 :(得分:4)
我在这本书上有一个笨蛋。我的数学知识不是很好......但有一个关键:
为了理解这样的事情,假设你有一个创造性思维并且很好地掌握结构和数学原理的抽象性质,你应该没问题。我的心理算术在任何人的标准下都很差,但我喜欢阅读离散数学因为它是抽象的本性。
在数字意义上,我不认为自己是一位非常优秀的数学家,但作为一名软件开发人员,我喜欢认为我有数学(或机械)思维。
我不会过分担心你的数字强度,而是更多关于数学的性质以及支撑计算机科学的概念的个性。如果你有一个良好的编程思维,也许可以尝试用组合数学/离散/具体数学来增强它(除了计算理论之外,在许多情况下避免干数)。
我发现我喜欢集合理论研究编译器这样的东西,而且我不想让我的数学A级没有大量的填充!
试一试,你有什么损失?
(即时通讯22和你的情况类似)
祝你好运
PS:我也发现视频讲座很有趣。你可以从转发它们http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/
答案 3 :(得分:2)
从本书中我记得的内容,它谈到了一些矩阵计算,起初可能很难理解。但它只是列表或数组数组...所以你需要在编程中迟早处理它。
如果有任何困难的数学,我想你可以跳过它。这本书曾经(并且可能仍然)用于伯克利大学的第一年计算机科学课(许多学生在第一学期学习它),根本不需要理解微积分,所以我认为对数学的一般理解足以理解书。
这本书讲的是一个黑盒子的功能......在读完这本书之后,我认为这也有助于一个人对数学的理解。
答案 4 :(得分:2)
绝对不会是徒劳无功的运动,这是一本很好的书。另一方面,它会有点艰难,因为他们确实希望你有一些数学上的复杂性,如果不是很多高级数学。
你可能会发现Felleisen等人的How to Design Programs,使用Scheme和all来为你提供相同的方法,这是一个更容易的开始。
答案 5 :(得分:1)
数值编程部分可能需要更高的数学,但你应该能够用高中数学来消化本书的其余部分。