第一图书网

程序员的数学

结城浩 人民邮电出版社
出版时间:

2012-10  

出版社:

人民邮电出版社  

作者:

结城浩  

页数:

232  

译者:

管杰  

Tag标签:

无  

前言

大家好!我是结城浩。欢迎阅读《程序员的数学》。本书是为程序员朋友们写的数学书。编程的基础是计算机科学,而计算机科学的基础是数学。因此,学习数学有助于巩固编程的基础,写出健壮的程序。有的读者可能会说“但我数学不好啊”。特别是很多读者“一碰到算式就跳过不读”。坦率而言,我自己遇到书中的算式也想跳过不看。本书尽可能减少了“大家不想看的算式”,也没有过多的定义、定理和证明。这是为帮助程序员更容易理解编程而写的书。希望你能通过本书学到有助于编程的“数学思维”。数学思维示例学习“数学思维”说起来太抽象了,我们来举些具体的例子。【条件分支和逻辑】在编程时,我们按照条件将处理方法分为多个“分支”。C 语言和Java 语言中使用的是if 语句。处理方法为: 当满足条件时执行这条语句,不满足条件时执行另一语句。这时,我们就使用了数学领域的“逻辑”来控制程序。因此,编程时必须熟练掌握“ 与”“、或”“、非”、“蕴涵”等逻辑构成元素。【循环和数学归纳法】我们在处理大量的信息时,使用程序进行“循环”操作。比如使用for 语句可以循环处理大量数据。循环中使用的就是“数学归纳法”。【分类和计数方法】在将许多条件和数据“分类”时,程序员必须注意不能有遗漏。这时加法法则、乘法法则、排列、组合等“计数方法”将助你一臂之力。这是程序员应该熟记于心的数学工具。通过本书,也可以学到递归、指数、对数、余数等重要的基础思维方式。人类和计算机的共同战线我们写程序是为了解决人类解决不了的问题。程序员理解问题,编写程序;计算机运行程序,解决问题。人类不擅长重复劳动,很容易厌倦,有时还会出错,但人类擅长解决问题。与此相对,计算机擅长重复劳动,但不能自行解决问题。于是,人机合力,如虎添翼。遇到难题,光靠人类不能解决,光靠计算机也不能解决。而人机合力就能解决问题。这也是本书要传达的主旨之一。不过,编写程序也非易事,无论人类和计算机如何齐心合力,总有解决不了的问题。本书也对人类和计算机的极限进行了分析。希望你在读完本书后能对以程序为媒介的人机合作有更深刻的理解。本书面向的读者本书主要面向的读者是程序员。不过若你对编程或数学感兴趣,读起来也会一样有意思。你不需要精通数学。书中不会出现Σ和等很难的算式,因此自认为数学不太好的读者也完全可以阅读。阅读本书只需具备四则运算(+- ×÷)和乘方(23=2×2×2)等基础知识。除此以外的知识在书中皆有说明。如果你对数字和逻辑感兴趣,可能会更喜欢本书。你也不需要精通编程。不过如果稍有一些编程经验,可能会更容易理解本书内容。书中有个别例子是用C 语言写的程序,不过即使不懂C 语言也不妨碍理解。本书结构本书各章内容可以按任意顺序阅读,但笔者推荐从第1 章开始按顺序阅读。第1 章对0 进行讨论。以按位计数法为核心,学习如何用0 来简化规则,并对“无即是有”的意义进行了思考。第2 章学习使用逻辑来整理繁琐的内容。介绍逻辑表达式、真值表、德·摩根定律、三值逻辑、卡诺图等。第3 章讨论余数。我们要记住“余数就是分组”的观点。对于一些难题,有时只要找到周期性规律就能解决。第4 章学习数学归纳法。数学归纳法只需要两个步骤就能证明无穷的断言。本章还会举例介绍使用循环不变式写出正确的循环。第5 章学习排列组合等计数方法。计数的关键在于“认清对象的性质”。第6 章学习自己定义自己的递归。通过汉诺塔、斐波那契数列、分形图形等,练习从复杂事物中发现递归结构。第7 章学习指数爆炸。计算机也很难解决含有指数爆炸的问题。我们将在这里思考研究如何将指数爆炸为我所用,解决大型问题。另外本章还将以二分法检索为例,学习将问题空间一分为二的意义。第8 章以停机问题为例,来说明许多程序上的问题是计算机如何发展都解决不了的。本章也会学到反证法和对角论证法。第9 章回顾本书学习内容,思考人类全面把握结构的能力对解决问题有多大帮助,以及人机协作具有何种意义。致谢首先要感谢马丁·伽德纳。小时候我痴迷于阅读您所著的《数学游戏》,至今仍记忆犹新。此外,还要感谢支持我的广大读者和为我祈祷的基督教朋友们。以下各位为本书提出了宝贵建议并给予了极大帮助,在此深表谢意(按日语五十音图顺序):天野胜、石井胜、岩泽正树、上原隆平、佐藤勇纪、武笠夏子、前原正英、三宅喜义。特别感谢在本书编写过程中给予我极大关怀和支持的SoftBank 出版有限公司的野泽喜美男主编。感谢一直鼓励我的爱妻和两个儿子。本书献给在餐桌上教我方程式乃至微积分的父亲。父亲,谢谢您!2005 年2 月结城 浩

内容概要

  《图灵程序设计丛书:程序员的数学》面向程序员介绍了编程中常用的数学知识,借以培养初级程序员的数学思维。读者无需精通编程,也无需精通数学,只需具备四则运算和乘方等基础知识,就可以阅读《程序员的数学》。  书中讲解了二进制计数法、逻辑、余数、排列组合、递归、指数爆炸、不可解问题等许多与编程密切相关的数学方法,分析了哥尼斯堡七桥问题、高斯求和方法、汉诺塔、斐波那契数列等经典问题和算法。引导读者深入理解编程中的数学方法和思路。  《程序员的数学》适合程序设计人员以及编程和数学爱好者阅读。

作者简介

结城浩 1963年生,现从事专业写作及软件编程工作。 其兴趣跟工作是“写程序”与“写书”,主要著作大多数为数学及程序专著,《数学女孩》是他的第一本青春文学小说。

书籍目录

第1章 0的故事——无即是有 本章学习内容 小学一年级的回忆 10进制计数法 什么是10进制计数法 分解2503 2进制计数法 什么是2进制计数法 分解1100 基数转换 计算机中为什么采用2进制计数法 按位计数法 什么是按位计数法 不使用按位计数法的罗马数字 指数法则 10的0次方是什么 10—1是什么 规则的扩展 对20进行思考 2—1是什么 0所起的作用 0的作用:占位 0的作用:统一标准,简化规则 日常生活中的0 人类的极限和构造的发现 重温历史进程 为了超越人类的极限 本章小结 第2章 逻辑——真与假的二元世界 本章学习内容 为何逻辑如此重要 逻辑是消除歧义的工具 致对逻辑持否定意见的读者 乘车费用问题——兼顾完整性和排他性 车费规则 命题及其真假 有没有“遗漏” 有没有“重复” 画一根数轴辅助思考 注意边界值 兼顾完整性和排他性 使用if语句分解问题 逻辑的基本是两个分支 建立复杂命题 逻辑非——不是A 逻辑与——A并且B 逻辑或——A或者B 异或——A或者B(但不都满足) 相等——A和B等 蕴涵——若A则B 囊括所有了吗 德•摩根定律 德•摩根定律是什么 对偶性 卡诺图 二灯游戏 首先借助逻辑表达式进行思考 学习使用卡诺图 三灯游戏 包含未定义的逻辑 带条件的逻辑与(&&) 带条件的逻辑或(||) 三值逻辑中的否定(!) 三值逻辑的德?摩根定律 囊括所有了吗 本章小结 第3章 余数——周期性和分组 本章学习内容 星期数的思考题(1) 思考题(100天以后是星期几) 思考题答案 运用余数思考 余数的力量——将较大的数字除一次就能分组 星期数的思考题(2) 思考题(10100天以后是星期几) 提示:可以直接计算吗 思考题答案 发现规律 直观地把握规律 乘方的思考题 思考题(1234567987654321) 提示:通过试算找出规律 思考题答案 回顾:规律和余数的关系 通过黑白棋通信 思考题 提示 思考题答案 奇偶校验 奇偶校验位将数字分为两个集合 寻找恋人的思考题 思考题(寻找恋人) 提示:先试算较小的数 思考题答案 回顾 铺设草席的思考题 思考题(在房间里铺设草席) 提示:先计算一下草席数 思考题答案 回顾 一笔画的思考题 思考题(哥尼斯堡七桥问题) 提示:试算一下 提示:考虑简化一下 提示:考虑入口和出口 思考题答案 奇偶校验 本章小结 第4章 数学归纳法——如何征服无穷数列 本章学习内容 高斯求和 思考题(存钱罐里的钱) 思考一下 小高斯的解答 讨论一下小高斯的解答 归纳 数学归纳法——如何征服无穷数列 0以上的整数的断言 高斯的断言 什么是数学归纳法 试着征服无穷数列 用数学归纳法证明高斯的断言 求出奇数的和——数学归纳法实例 奇数的和 通过数学归纳法证明 图形化说明 黑白棋思考题——错误的数学归纳法 思考题(黑白棋子的颜色) 提示:不要为图所惑 思考题答案 编程和数学归纳法 通过循环表示数学归纳法 循环不变式 本章小结 第5章 排列组合——解决计数问题的方法 本章学习内容 计数——与整数的对应关系 何谓计数 注意“遗漏”和“重复” 植树问题——不要忘记0 植树问题思考题 加法法则 加法法则 乘法法则 乘法法则 置换 置换 归纳一下 思考题(扑克牌的摆法) 排列 排列 归纳一下 树形图——能够认清本质吗 组合 组合 归纳一下 置换、排列、组合的关系 思考题练习 重复组合 也要善于运用逻辑 本章小结 第6章 递归——自己定义自己 本章学习内容 汉诺塔 思考题(汉诺塔) 提示:先从小汉诺塔着手 思考题答案 求出解析式 解出汉诺塔的程序 找出递归结构 再谈阶乘 阶乘的递归定义 思考题(和的定义) 递归和归纳 斐波那契数列 思考题(不断繁殖的动物) 斐波那契数列 帕斯卡三角形 什么是帕斯卡三角形 递归定义组合数 组合的数学理论解释 递归图形 以递归形式画树 实际作图 谢尔平斯基三角形 本章小结 第7章 指数爆炸——如何解决复杂问题 本章学习内容 什么是指数爆炸 思考题(折纸问题) 指数爆炸 倍数游戏——指数爆炸引发的难题 程序的设置选项 不能认为是“有限的”就不假思索 二分法查找——利用指数爆炸进行查找 寻找犯人的思考题 提示:先思考人数较少的情况 思考题答案 找出递归结构以及递推公式 二分法查找和指数爆炸 对数——掌握指数爆炸的工具 什么是对数 对数和乘方的关系 以2为底的对数 以2为底的对数练习 对数图表 指数法则和对数 对数和计算尺 密码——利用指数爆炸加密 暴力破解法 字长和安全性的关系 如何处理指数爆炸 理解问题空间的大小 四种处理方法 本章小结 第8章 不可解问题——不可解的数、无法编写的程序 本章学习内容 反证法 什么是反证法 质数思考题 反证法的注意事项 可数 什么是可数 可数集合的例子 有没有不可数的集合 对角论证法 所有整数数列的集合是不可数的 所有实数的集合是不可数的 所有函数的集合也是不可数的 不可解问题 什么是不可解问题 存在不可解问题 思考题 停机问题 停机 处理程序的程序 什么是停机问题 停机问题的证明 写给尚未理解的读者 不可解问题有很多 本章小结 第9章 什么是程序员的数学——总结篇 本章学习内容 何为解决问题 认清模式,进行抽象化 由不擅长催生出的智慧 幻想法则 程序员的数学

章节摘录

版权页: 插图:


编辑推荐

《程序员的数学》日本版重印14次,面向程序员介绍编程中常用的数学知识,培养初级程序员的数学思维,从基础入手,引导读者深入理解编程中的数学方法和思路,即使没有编程知识也能看懂。  《程序员的数学》适合程序设计人员以及编程和数学爱好者阅读。

图书封面

图书标签Tags

广告

下载页面


程序员的数学 PDF格式下载



学过高中数学的人应该都能理解,名过其实。看了没多大收获,还不如那些趣味算法题之类的书,建议程序员别买。


很快就看完了,本评论也发在了豆瓣和图灵社区。首先,这是本好书。本书有相当不错的易读性和趣味性,可以作为最入门级别的启蒙教材。我认为数学和编程是很重要的两个东西,而这本书可以当成这两门学问的基础读物。或许对你的水平而言,你已经完全看不上这种水平的内容了。但是还有你的下一辈下一代。想想这本书对那些初学者的作用影响吧。本书介绍了与编程有关很基础的数学知识。本书介绍了与编程有关很基础的数学知识。因为很重要所以说两遍。对于数学底子好的人,自然有《具体数学》、《算法导论》和TAOCP等经典等着你们。而本书不是那么高深的东西。自高中见了数学题海之后,我就基本对数学失去了兴趣。在阅读本书的时候,感觉还是很不错的,有趣易懂,内容也的确是程序员所须知的。个人感觉全书中的不可解问题是非常重要也是全书最难理解的部分。关于不可解,我在知道图灵的停机问题之前都是没有一个清晰的认知的。我想还是有许多人跟我是一样的吧?这一章节告诉程序员,世界上存在不可解的问题,存在数学和程序都不能抵达的边界。所以别尝试用程序去计算感情了...本书还有一句话感动了我...是感动。最后一章,“由不擅长催生出的智慧”。“回顾本书,脑海中会浮现出‘人类不擅长某事’的印象,而正是这些‘不擅长’,催生出了各种闪...耀的智慧。”  或许我也该向自己“不擅长”的数学再迈出一步了。所以求推荐一些有趣的不高深的数学资料,最好是与编程有关或者是统计学方面的~~ 阅读更多 ›


内容是超简单,不超出大学计算机专业中所学的各项数学内容,深度也不及啊,浅显啊,高中自学编程的同学看看不错,科班出身的同学参考价值也不大,挺多能当当复习下基础数学知识吧


虽然内容不是很深奥,但都是很基础很重要的思想


老公的书,老公觉得还是不错的。


书中的内容很有启发性,而且简单易懂! 真希望能看到国内的作者写出这样类型的好书!


极为推荐,十分好,极好看!


不妨一看,觉得很一般吧


让我复习了一下以前学过的东西


内容不同于平常的图灵教程之类的书区别在于内容组织方式和语言的组织上,教授的应该是问题的解决思想,水平挺高的,对于其中的要领可以反复的去琢磨,挺不错,只是感觉在细节上略显不够,当然这样挺符合“授之以渔”的道理。看完之后还有一本名为“具体数学”的书,也可以去研究研究.


书本身是不错,可以书页的装订就有问题了,非常不齐,看的时候总觉得有小遗憾。本书后来申请了换货,最后换来的货还是跟前面一样的问题。凑合看吧。


感觉书中说的内容比较基础,要是本专业有编程方面的课程的话就不建议花自己的钱购买了。当成编程扫盲的书倒是挺好的。


简单,轻松看起来很舒服不费脑不头疼


觉得书中描述的数学很容易让人理解


这本书适合低年级的孩子看。。文化程度稍微有点的。。都不怎么适合。因为本书是用最简单的数学讲述。没数学基础的都看得懂。不过不适合我看。


讲的很浅显,还不错,虽然可能内容上让我有点小失望


还不错吧。书本的纸张只能说一般,不过目前读了一小部分,未明显错误。


简单易懂,初级读物


赞,值得购买!必须精读!


程序员的数学


相关图书