我已经以“边做边学”的方式编程近 2 年了,我认为自己相当不错,但是,我真的希望为计算机科学/计算机工程打下良好的基础,大多数人建议我从 SICP 开始. (计算机程序的结构和解释)
我想知道
- 这是最好的方法吗?
- 我知道如何在 OpenMP 和 MPI 中编写矩阵乘法,而且我知道大学水平的数学,这足以阅读和欣赏 SICP 吗?
- 除了这个,我可以把所有的时间都花在 Project Euler 上吗?
我已经以“边做边学”的方式编程近 2 年了,我认为自己相当不错,但是,我真的希望为计算机科学/计算机工程打下良好的基础,大多数人建议我从 SICP 开始. (计算机程序的结构和解释)
我想知道
个人经历:和你一样,我正在尝试通过自学学习编程,我从 SICP 开始。由于我是一位古代历史学家和考古学家,我没有数学、工程或真正的计算机科学背景(只是熟悉 LaTeX、HTML 和 CSS 等知识)。我上一堂数学课现在是 15 年前。虽然我正在通过 SICP 和我身边的一本数学书工作,但 SICP 中给出的解释确实足以理解这些东西。我非常感谢 SICP,它要求很高,但很有趣。我还建议将其作为书购买,我更喜欢在屏幕上阅读。
有时您必须应对一些困难,因为语言标准发生了变化(例如,运行基于 SICP 模式匹配规则的替换代码)或者作者假设了本书后面刚刚定义的现有函数(例如,我如何获得函数的放置和进入 SICP、Scheme、练习 2.78 等)。因为您总是会在网络上找到解决方案或提示,所以这不会打扰您。
如果您知道任何数量的编程,您可能会更好,但这绝不是通过 SICP 时的要求。我现在正在经历它(从封面到封面的风格),我也在第 2.3.3 节。对我来说最大的障碍是数学如何基于一些问题,因为我已经有一段时间没有在高中做数学了。对于这些问题,我求助于谷歌搜索问题和解决方案的解释。就像编程一样,数学也不是必需的,显然因为我还在通过这本书取得进步,但我觉得它有时会有所帮助。
您真正需要的唯一要求是计算机和方案实现,我推荐 MIT 方案或 DrRacket。
The only requirement you'll need is a computer, and a scheme implementation, everything else can be learned as you go along.