推荐程序员看的数学书(大家好我是结城浩)

#在头条学知识#

推荐程序员看的数学书(大家好我是结城浩)(1)

还记得《数学女孩》的作者结城浩吗?他还有一个身份:程序员。

推荐程序员看的数学书(大家好我是结城浩)(2)

▲ 图为结城浩先生在社交网站上使用的头像

结城浩生于 1963 年,是日本资深技术作家和程序员。在编程语言、数学、设计模式、加密技术等领域,编写了很多深受欢迎的入门书。

他深知程序员在编程过程中经常遇到数学瓶颈,所以他专门为程序员写了一本数学书:《程序员的数学》。

下面就由作者结城浩先生亲自来介绍一下这本书以及他的写作初衷:

大家好!我是结城浩。欢迎阅读《程序员的数学》。

这本书是为程序员朋友们写的数学书。

编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固编程的基础,写出健壮的程序。

有的读者可能会说“但我数学不好啊”。特别是很多读者“一碰到算式就跳过不读”。坦率而言,我自己遇到书中的算式也想跳过不看。

本书尽可能减少了“大家不想看的算式”,也没有过多的定义、定理和证明。

这是为帮助程序员更容易理解编程而写的书。希望你能通过本书学到有助于编程的“数学思维”。

数学思维示例

学习“数学思维”说起来太抽象了,我们来举些具体的例子。

【条件分支和逻辑】

在编程时,我们按照条件将处理方法分为多个“分支”。对此,C 语言和 Java 语言等很多编程语言中使用的是 if 语句。具体方法为:当满足条件时执行这条语句,不满足条件时执行另一条语句。这时,我们就使用了数学领域的“逻辑”来控制程序。因此,编程时必须熟练掌握“ 与”“或”“非”“蕴涵”等逻辑构成元素。

【循环和数学归纳法】

我们在处理大量的信息时,使用程序进行“循环”操作。比如使用 for 语句可以循环处理大量数据。循环中使用的就是“数学归纳法”。

【分类和计数方法】

在将许多条件和数据“分类”时,程序员必须注意不能有遗漏。这时加法法则、乘法法则、排列、组合等“计数方法”将助你一臂之力。这是程序员应该熟记于心的数学工具。通过本书,也可以学到递归、指数、对数、余数等重要的基础数学概念。

推荐程序员看的数学书(大家好我是结城浩)(3)

人类和计算机的共同战线

我们写程序是为了解决人类解决不了的问题。程序员理解问题,编写程序;计算机运行程序,解决问题。

人类不擅长重复劳动,很容易厌倦,有时还会出错,但人类擅长解决问题。与此相对,计算机擅长重复劳动,但不能自行解决问题。

于是,人机合力,如虎添翼。

遇到难题,光靠人类不能解决,光靠计算机也不能解决。而人机合力就能解决问题。这也是本书要传达的主旨之一。

不过,编写程序也非易事,无论人类和计算机如何齐心合力,总有解决不了的问题。本书也对人类和计算机的极限进行了分析。

希望你在读完本书后能对以程序为媒介的人机合作有更深刻的理解。

本书面向的读者

本书主要面向的读者是程序员。不过若你对数学或编程感兴趣,读起来也会一样有意思。

你不需要精通数学。除附录以外,书中不会出现 和 等很难的算式,因此自认为数学不太好的读者也完全可以阅读。阅读本书只需要具备四则运算( – × ÷)和乘方(2³ = 2 × 2 × 2)等基础知识。除此以外的知识在书中皆有说明。如果你对数字和逻辑感兴趣,可能会更喜欢本书。你也不需要精通编程。不过如果稍有一些编程经验,可能会更容易理解本书内容。书中有个别例子是用 C 语言写的程序,不过即使不懂 C 语言也不妨碍理解。

推荐程序员看的数学书(大家好我是结城浩)(4)

本书结构

本书各章内容可以按任意顺序阅读,但我推荐从第 1 章开始按顺序阅读。

第 1 章对 0 进行讨论,以按位计数法为核心,学习如何用 0 来简化规则,并对“无即是有”的意义进行了思考。

第 2 章学习使用逻辑来整理烦琐的内容,介绍逻辑表达式、真值表、德摩根定律、三值逻辑、卡诺图等。

第 3 章讨论余数。我们要记住“余数就是分组”的观点。对于一些难题,有时只要找到周期性规律就能解决。

第 4 章学习数学归纳法。数学归纳法只需要两个步骤就能证明无穷的断言。这一章还会举例介绍使用循环不变式写出正确的循环。

第 5 章学习排列组合等计数方法。计数的关键在于“认清对象的性质”。

第 6 章学习自己定义自己的递归,通过汉诺塔、斐波那契数列、分形图形等,练习从复杂事物中发现递归结构。

第 7 章学习指数爆炸。计算机也很难解决含有指数爆炸的问题。我们将在这里思考研究如何将指数爆炸为我所用,解决大型问题。另外这一章还将以二分法检索为例,学习将问题空间一分为二的意义。

第 8 章以停机问题为例,来说明许多程序上的问题是计算机如何发展都解决不了的。这一章也会学到反证法和对角论证法。

第 9 章回顾本书学习内容,思考人类全面把握结构的能力对解决问题有多大帮助,以及人机协作具有何种意义。附录学习近年备受关注的机器学习中的几个基本概念。

以上就是结城浩先生对这本书的介绍,最近这本深受程序员欢迎的数学书出了第 2 版,在第 2 版中,新增了一个附录来介绍机器学习的基础知识,内容涉及感知器、损失函数、梯度下降法和神经网络,旨在带领读者走进机器学习的世界。

推荐程序员看的数学书(大家好我是结城浩)(5)

读者评价

来看一看第 1 版,读者怎么说:

推荐程序员看的数学书(大家好我是结城浩)(6)

不过也有很多读者表示这本书太简单:

推荐程序员看的数学书(大家好我是结城浩)(7)

通过读者评价,我们不难得知,《程序员的数学》内容比较基础,适合数学基础较差的程序员以及想要入门数学的普通读者。《程序员的数学》系列一共三本,除了《程序员的数学》,还有《程序员的数学 2:概率统计》《程序员的数学 3:线性代数》,同《程序员的数学》一样,这两本书内容也很基础,内容涉及编程所需的数学知识,同时对于普通读者来说,也是不错的数学入门书籍。

推荐程序员看的数学书(大家好我是结城浩)(8)

不论你是程序员,还是数学爱好者,或者想重新学习数学的人,希望《程序员的数学》都能助你一臂之力!

▌本文作者:图灵数学,授权 [遇见数学] 发布。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页