前言
2017年,担任Tachyus公司CTO(首席技术官)的我开始了本书的写作。这家公司是我创立的,主要业务是为石油和天然气公司编写预测分析软件。当时,我们已经完成了核心产品的构建:一个基于物理学和机器学习的流体流动模拟器,以及一个优化引擎。这些工具能让我们的客户展望储油层的未来动态,并帮助他们发现价值数亿美元的优化机会。
随着一些大型跨国公司开始使用我们的软件,我作为CTO的任务是将这款软件产品化并进行推广。我们面临的挑战不仅是开发一个复杂的软件项目,还要编写很多与数学相关的代码。大概就在那个时候,公司设立了一个叫作“科学软件工程师”的职位。我们的想法是,专业的软件工程师既需要过硬的技术,还要有扎实的数学、物理学和机器学习背景。在寻找和招聘科学软件工程师的过程中,我意识到这种人才非常稀缺但需求量很大。我们的软件工程师也意识到了这一点,他们希望提升自己的数学技能,为公司技术栈中特定领域的后端部分贡献代码。除了团队中已经有很多渴望学习数学的人,我们在招聘过程中也发现了不少人愿意学习数学。这促使我开始思考,如何将一位优秀的软件工程师培训成能够出色利用数学知识的人。
我当时意识到,对于软件工程师来说,市面上还没有内容准确、难易适中的数学书。虽然可能有数百本书和数千篇免费的在线文章涉及线性代数和微积分等主题,但我发现它们并不能让一个专业的软件工程师在几个月内充分掌握这些数学知识。这么说并不是在贬低软件工程师,我的意思是,阅读和理解数学书是一项学习难度很高的技能。要做到这一点,往往需要弄清楚学习的具体主题是什么(如果你在学习之前对那些资料一无所知,这是很难的),阅读材料,然后找一些高质量的习题来练习应用这些主题。如果没有很好的辨别能力,即便你能读完一本教材,并且解答书里的所有习题,也需要几个月的全身心投入才能做到!
我希望通过本书为大家提供一个新的选项。相信你可以在合理的时间内从头到尾读完本书,并且完成所有的练习,从而掌握一些关键的数学概念。