《数学与泛型编程:高效编程的奥秘》一1.1 编程与数学

简介: 本节书摘来自华章出版社《数学与泛型编程:高效编程的奥秘》一 书中的第1章,第1.1节,作者:丹尼尔E.罗斯(Daniel E. Rose),更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.1 编程与数学

那么,这种泛型编程的想法是从哪里来的?我们又应该怎样来学习它呢?这种想法是从数学中衍生出来的,尤其与抽象代数(abstract algebra)这个数学分支有关。为了使大家能够理解这种编程方式,本书会对抽象代数做一些介绍,并着重讲解怎样从抽象的运算属性来认识对象。这个话题一般是数学专业的大学生才去研究的,然而笔者认为,它对于我们理解泛型编程会起到关键的作用。
实际上,还有很多基本的编程概念也同样来自数学。对这些概念的产生及变化过程加以学习,能够促使我们更好地思考软件的设计问题。比方说,欧几里得(Euclid)的《几何原本》(Elements)虽然是两千多年前写成的书,但是其中的范例仍然具有很高的参考价值,它可以告诉我们,怎样用一些较小且较易理解的组件来构建一套复杂的系统。
尽管抽象是泛型编程的要义,但这个抽象却并不是本来就有的。我们必须从具体的事物入手,才能够获得更为抽象的认识,要想对某个领域进行正确的抽象,就必须理解该领域的细节。
抽象代数里面的抽象很大程度上是从另外一个数学分支的具体成果中得出的,那个分支比抽象代数更为古老,它叫做数论(number theory)。为此,我们还需要介绍数论中的某些关键概念,这些概念与整数的属性有关,其中尤其值得注意的是可除性(divisibility)。
我们在学习这些数学知识时所使用的思路可以对编程技巧起到提升作用,此外我们还会看到,对于当前某些软件来说,有一些数学成果本身就具有极其重要的意义,这尤其体现在给网络隐私与电子商务软件提供支持的加密协议上。本书最后会举例来说明某些数学知识在此类协议中的运用情况。
笔者会在数学和编程之间来回游走。当我们讲解某些重要的数学概念时,笔者会穿插一些对具体算法和通用编程技巧的讨论。笔者对其中某些算法只会给出简要的描述,而对另外一些算法则会在整本书里进行详细的讲解,并将其泛化。除了个别章节只谈数学或只谈编程之外,大部分章节都会同时涉及数学和编程这两个方面。

相关文章
|
算法 程序员 Python
考点:猴子分桃问题,程序员可以将数学逻辑思维转换为编程思维【Python习题07】
考点:猴子分桃问题,程序员可以将数学逻辑思维转换为编程思维【Python习题07】
191 0
|
搜索推荐 程序员 C语言
C语言初学之编程思维突破经典
C语言初学之编程思维突破经典
102 0
|
自然语言处理 算法 程序员
初识C语言之算法设计篇——带你走进编程世界的小院!
初识C语言之算法设计篇——带你走进编程世界的小院!
224 0
初识C语言之算法设计篇——带你走进编程世界的小院!
|
程序员 C++
《数学与泛型编程:高效编程的奥秘》一1.3 阅读准备
本节书摘来自华章出版社《数学与泛型编程:高效编程的奥秘》一 书中的第1章,第1.3节,作者:丹尼尔E.罗斯(Daniel E. Rose),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1276 0
|
算法
《数学与泛型编程:高效编程的奥秘》一导读
Alex是数学专业出身,但我不是。因此,我很努力地试着去读懂课程里的一些材料,并根据自身体会来确定那些需要加以解说的难点。如果你发现本书所用的一些描述方式及术语和专业数学家稍有不同,或是本书在解释某个问题时多写了几个简单的步骤,那么这应该归咎于我才对。
1510 0
|
算法 程序员
《数学与泛型编程:高效编程的奥秘》一2.2 改进该算法
本节书摘来自华章出版社《数学与泛型编程:高效编程的奥秘》一 书中的第2章,第2.2节,作者:丹尼尔E.罗斯(Daniel E. Rose),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1374 0
|
算法 程序员
《数学与泛型编程:高效编程的奥秘》一2.3 本章要点
本节书摘来自华章出版社《数学与泛型编程:高效编程的奥秘》一 书中的第2章,第2.3节,作者:丹尼尔E.罗斯(Daniel E. Rose),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1131 0
|
算法
《数学与泛型编程:高效编程的奥秘》一3.7 本章要点
本节书摘来自华章出版社《数学与泛型编程:高效编程的奥秘》一 书中的第3章,第3.7节,作者:丹尼尔E.罗斯(Daniel E. Rose),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1536 0
|
算法 C++
《数学与泛型编程:高效编程的奥秘》一2.1 埃及乘法算法
本节书摘来自华章出版社《数学与泛型编程:高效编程的奥秘》一 书中的第2章,第2.1节,作者:丹尼尔E.罗斯(Daniel E. Rose),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1948 0