Share E-Book

Author结城浩

《程序员的数学 第2版》面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读者无须精通编程,也无须精通数学,只要具备四则运算和乘方等基础知识,即可阅读本书。 《程序员的数学 第2版》讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、高斯求和、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入理解编程中的数学方法和思路。 《程序员的数学 第2版》新增一个附录来介绍机器学习的基础知识,内容涉及感知器、损失函数、梯度下降法和神经网络,旨在带领读者走进机器学习的世界。

AI Reading Assistant

Whole-book reading guide from stratified index samples; jump to passages in the text

Tags
AI categories
programming languagealgorithmeducation
数学
ISBN: 7115504903
Publish Year: 2020
Language: Chinese
Pages: 262
File Format: PDF
File Size: 6.8 MB
Text Preview (First 20 pages)
Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

(This page has no text content)
(This page has no text content)
(This page has no text content)
t 著 [日] 结城浩 译 管 杰 卢晓南 责任编辑 高宇涵 责任印制 周昇亮 t 人民邮电出版社出版发行 北京市丰台区成寿寺路 11 号 邮编 100164 电子邮件 315@ptpresscomcn 网址 http://wwwptpresscomcn 北京 印刷 t 开本:800×1000 1/16 印张:175 字数:317 千字   2020 年 4 月第 2 版 印数:82 301-87 300 册   2020 年 4 月北京第 1 次印刷 著作权合同登记号 图字:01-2019-5720 号 定价: 5900 元 读者服务热线:(010)51095183 转 600 印装质量热线:(010)81055316 反盗版热线:(010)81055315 广告经营许可证:京东工商广登字 20170147 号 内 容 提 要 本书面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读者无须精通编 程,也无须精通数学,只要具备四则运算和乘方等基础知识,即可阅读本书。 本书讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密 切相关的数学方法,分析了哥尼斯堡七桥问题、高斯求和、汉诺塔、斐波那契数列等经典问题和算法。 引导读者深入理解编程中的数学方法和思路。 第 2 版新增一个附录来介绍机器学习的基础知识,内容涉及感知器、损失函数、梯度下降法和神经 网络,旨在带领读者走进机器学习的世界。 本书适合程序设计人员以及编程和数学爱好者阅读。 程序员的数学 : 第2版 / (日) 结城浩著 ; 管杰, 卢晓南译. -- 2版. -- 北京 : 人民邮电出版社, 2020.4 (图灵程序设计丛书) ISBN 978-7-115-50490-6 Ⅰ. ①程… Ⅱ. ①结… ②管… ③卢… Ⅲ. ①电子计 算机-数学基础 Ⅳ. ①TP301.6 中国版本图书馆CIP数据核字(2020)第027883号 图书在版编目(CIP)数据 -------------------------------------------------------------------
版 权 声 明 Programmer No Sugaku the 2nd edition Copyright © 2018 Hiroshi Yuki Originally published in Japan by SB Creative Corp Chinese (in simplified character only) translation rights arranged with SB Creative Corp, Tokyo through CREEK & RIVER Co, Ltd All rights reserved 本书中文简体字版由 SB Creative Corp 授权人民邮电出版社独家出版。未经出版者书面许 可,不得以任何方式复制或抄袭本书内容。 版权所有,侵权必究。
主页信息 关于本书的最新信息,可查阅以下网址。 http://wwwhyukicom/math/ 该网址出自作者的个人主页。 关于本书的意见、感想和勘误信息,可通过以下网址提交。 https://wwwituringcomcn/book/2723 © 2018  包括程序在内的本书所有内容都受著作权法保护。未经作者、发行者许可,不得 擅自复制、复印。 本书中出现的系统名和商品名等一般为各公司的商标或注册商标。 正文中一概省略了 TM、® 等标识。
大家好!我是结城浩。欢迎阅读《程序员的数学》。 本书是为程序员朋友们写的数学书。 编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固 编程的基础,写出健壮的程序。 有的读者可能会说“但我数学不好啊”。特别是很多读者“一碰到算式就跳过不读”。 坦率而言,我自己遇到书中的算式也想跳过不看。 本书尽可能减少了“大家不想看的算式”,也没有过多的定义、定理和证明。 A 这是为帮助程序员更容易理解编程而写的书。希望你能通过本书学到有助于编程的 “数学思维”。 数学思维示例 学习“数学思维”说起来太抽象了,我们来举些具体的例子。 【条件分支和逻辑】 在编程时,我们按照条件将处理方法分为多个“分支”。对此,C 语言和 Java 语言等很 多编程语言中使用的是 if 语句。具体方法为:当满足条件时执行这条语句,不满足条件时 执行另一条语句。这时,我们就使用了数学领域的“逻辑”来控制程序。因此,编程时必 须熟练掌握 “与”“或”“非”“蕴涵”等逻辑构成元素。 【循环和数学归纳法】 我们在处理大量的信息时,使用程序进行“循环”操作。比如使用 for 语句可以循环处 理大量数据。循环中使用的就是“数学归纳法”。 【分类和计数方法】 在将许多条件和数据“分类”时,程序员必须注意不能有遗漏。这时加法法则、乘法 法则、排列、组合等“计数方法”将助你一臂之力。这是程序员应该熟记于心的数学工具。 通过本书,也可以学到递归、指数、对数、余数等重要的基础数学概念。 A 附录除外,其中介绍了一些算式。 前 言
vi 程序员的数学 人类和计算机的共同战线 我们写程序是为了解决人类解决不了的问题。程序员理解问题,编写程序;计算机运 行程序,解决问题。 人类不擅长重复劳动,很容易厌倦,有时还会出错,但人类擅长解决问题。与此相对, 计算机擅长重复劳动,但不能自行解决问题。 于是,人机合力,如虎添翼。 遇到难题,光靠人类不能解决,光靠计算机也不能解决。而人机合力就能解决问题。 这也是本书要传达的主旨之一。 不过,编写程序也非易事,无论人类和计算机如何齐心合力,总有解决不了的问题。 本书也对人类和计算机的极限进行了分析。 希望你在读完本书后能对以程序为媒介的人机合作有更深刻的理解。 本书面向的读者 本书主要面向的读者是程序员。不过若你对编程或数学感兴趣,读起来也会一样有意思。 你不需要精通数学。除附录以外,书中不会出现 和 等很难的算式,因此自认 为数学不太好的读者也完全可以阅读。阅读本书只需要具备四则运算(+ – ×÷)和乘方 (23 = 2 × 2 × 2)等基础知识。除此以外的知识在书中皆有说明。 如果你对数字和逻辑感兴趣,可能会更喜欢本书。 你也不需要精通编程。不过如果稍有一些编程经验,可能会更容易理解本书内容。书 中有个别例子是用 C 语言写的程序,不过即使不懂 C 语言也不妨碍理解。 本书结构 本书各章内容可以按任意顺序阅读,但我推荐从第 1 章开始按顺序阅读。 第 1 章对 0 进行讨论,以按位计数法为核心,学习如何用 0 来简化规则,并对“无即 是有”的意义进行了思考。 第 2 章学习使用逻辑来整理烦琐的内容,介绍逻辑表达式、真值表、德摩根定律、三
前言 vii 值逻辑、卡诺图等。  第 3 章讨论余数。我们要记住“余数就是分组”的观点。对于一些难题,有时只要找 到周期性规律就能解决。 第 4 章学习数学归纳法。数学归纳法只需要两个步骤就能证明无穷的断言。这一章还 会举例介绍使用循环不变式写出正确的循环。 第 5 章学习排列组合等计数方法。计数的关键在于“认清对象的性质”。 第 6 章学习自己定义自己的递归,通过汉诺塔、斐波那契数列、分形图形等,练习从 复杂事物中发现递归结构。 第 7 章学习指数爆炸。计算机也很难解决含有指数爆炸的问题。我们将在这里思考研 究如何将指数爆炸为我所用,解决大型问题。另外这一章还将以二分法检索为例,学习将 问题空间一分为二的意义。 第 8 章以停机问题为例,来说明许多程序上的问题是计算机如何发展都解决不了的。 这一章也会学到反证法和对角论证法。 第 9 章回顾本书学习内容,思考人类全面把握结构的能力对解决问题有多大帮助,以 及人机协作具有何种意义。 附录学习近年备受关注的机器学习中的几个基本概念。 致谢 首先要感谢马丁·加德纳。小时候我痴迷于阅读您所著的《数学游戏》,至今仍记忆犹新。 此外,还要感谢支持我的广大读者和为我祈祷的基督教朋友们。 以下各位为本书提出了宝贵建议并给予了极大帮助,在此深表谢意(按日语五十音图顺 序):天野胜、石井胜、岩泽正树、上原隆平、佐藤勇纪、武笠夏子、前原正英、三宅喜义。 特别感谢在本书编写过程中给予我极大关怀和支持的 SoftBank 出版有限公司的野泽喜 美男主编。 感谢一直鼓励我的爱妻和两个儿子。 本书献给在餐桌上教我方程式乃至微积分的父亲。父亲,谢谢您!  结城浩 2005 年 2 月  
viii 程序员的数学 写于第 2 版发行之际 近几年,机器学习、深度学习和人工智能等词越来越频繁地出现在人们的生活中。关 注机器学习的人也越来越多。 不过,机器学习与编程和数学都有着密切关系,而且该领域发展迅速、涉及面广,所 以也有不少人对它敬而远之。 于是第 2 版增加了新的附录“迈向机器学习的第一步”。在附录中,我会逐一介绍机器 学习中的基本概念。 虽然本书秉承“尽量不用算式”的方针,但在新增的附录中,会介绍一些简单的算式 并在讲解概念时加以运用。如果不能熟悉算式的用法,那么即使是通俗易懂的内容,看起 来也会觉得很难。看到算式就拒绝思考那就太可惜了,因为算式并不可怕。 愿本书新增的附录能引领大家走出迈向机器学习的第一步。 结城浩 2017 年 12 月于横滨
(This page has no text content)
(This page has no text content)
(This page has no text content)
(This page has no text content)
(This page has no text content)
(This page has no text content)
(This page has no text content)
(This page has no text content)
(This page has no text content)
(This page has no text content)