From Mathematics to Generic Programming 🔍
Alexander A. Stepanov [Александр Александрович Степанов], Daniel E. Rose Pearson Education;Addison-Wesley Professional, 1st edition, 2014
英语 [en] · PDF · 2.5MB · 2014 · 📘 非小说类图书 · 🚀/lgli/lgrs/nexusstc/zlib · Save
描述
In this substantive yet accessible book, pioneering software designer Alexander Stepanov and his colleague Daniel Rose illuminate the principles of generic programming and the mathematical concept of abstraction on which it is based, helping you write code that is both simpler and more powerful. If you're a reasonably proficient programmer who can think logically, you have all the background you'll need. Stepanov and Rose introduce the relevant abstract algebra and number theory with exceptional clarity. They carefully explain the problems mathematicians first needed to solve, and then show how these mathematical solutions translate to generic programming and the creation of more effective and elegant code. To demonstrate the crucial role these mathematical principles play in many modern applications, the authors show how to use these results and generalized algorithms to implement a real-world public-key cryptosystem. As you read this book, you'll master the thought processes necessary for effective programming and learn how to generalize narrowly conceived algorithms to widen their usefulness without losing efficiency. You'll also gain deep insight into the value of mathematics to programming-insight that will prove invaluable no matter what programming languages and paradigms you use. You will learn about How to generalize a four thousand-year-old algorithm, demonstrating indispensable lessons about clarity and efficiency Ancient paradoxes, beautiful theorems, and the productive tension between continuous and discrete A simple algorithm for finding greatest common divisor (GCD) and modern abstractions that build on it Powerful mathematical approaches to abstraction How abstract algebra provides the idea at the heart of generic programming Axioms, proofs, theories, and models: using mathematical techniques to organize knowledge about your algorithms and data structures Surprising subtleties of simple programming tasks and what you can learn from them How practical implementations can exploit theoretical knowledge Alexander A. Stepanov has been programming since 1972-first in the Soviet Union and, since emigrating in 1977, in the United States. He has programmed operating systems, programming tools, compilers, and libraries. His work on the foundations of programming has been supported by GE, Polytechnic University, Bell Labs, HP, SGI, Adobe, and, since 2009, A9.com, Amazon's search subsidiary. In 1995, he received the Dr. Dobb's Journal Excellence in Programming Award for the design of the C++ Standard Template Library. Daniel E. Rose is a research scientist who has held management positions at Apple, AltaVista, Xigo, Yahoo, and A9.com. His research focuses on all aspects of search, ranging from low-level algorithms for index compression to human--computer interaction. Rose led the Apple team that created desktop search for the Mac. He holds a Ph.D. in cognitive science and computer science from the University of California, San Diego, and a B.A. in philosophy from Harvard.
备用文件名
lgli/From Mathematics to Generic Programming.pdf
备用文件名
lgrsnf/From Mathematics to Generic Programming.pdf
备用文件名
zlib/Computers/Programming/Alexander A. Stepanov [Александр Александрович Степанов], Daniel E. Rose/From Mathematics to Generic Programming_21905753.pdf
备选作者
Stepanov, Alexander A.; Rose, Daniel E.
备选作者
Rose, Daniel E.; Stepanov, Alexander A
备选作者
ALEXANDER;ROSE, DANIEL STEPANOV
备用出版商
Addison-Wesley Longman, Incorporated
备用出版商
Globe Fearon Educational Publishing
备用出版商
Pearson Education, Limited
备用出版商
Addison-Wesley / Pearson
备用出版商
Pearson Technology Group
备用出版商
Longman Publishing
备用出版商
Cengage Gale
备用出版商
Adobe Press
备用版本
Pearson Education (US), Upper Saddle River, NJ, 2014
备用版本
Online-ausg, Upper Saddle River, NJ, 2015
备用版本
United States, United States of America
备用版本
Upper Saddle River, NJ, USA, 2015
备用版本
Hoboken, 2014
备用版本
READING, 2014
备用版本
Sydney, 2014
备用版本
1, 20141113
元数据中的注释
lg1308875
元数据中的注释
{"edition":"1","isbns":["0133491781","013349179X","0321942043","2014034539","9780133491784","9780133491791","9780321942043"],"last_page":288,"publisher":"Addison-Wesley / Pearson"}
备用描述
Cover
Title
Copyright
Contents
Acknowledgments
About the Authors
Authors’ Note
1. What This Book Is About
1.1 Programming and Mathematics
1.2 A Historical Perspective
1.3 Prerequisites
1.4 Roadmap
2. The First Algorithm
2.1 Egyptian Multiplication
2.2 Improving the Algorithm
2.3 Thoughts on the Chapter
3. Ancient Greek Number Theory
3.1 Geometric Properties of Integers
3.2 Sifting Primes
3.3 Implementing and Optimizing the Code
3.4 Perfect Numbers
3.5 The Pythagorean Program
3.6 A Fatal Flaw in the Program
3.7 Thoughts on the Chapter
4. Euclid’s Algorithm
4.1 Athens and Alexandria
4.2 Euclid’s Greatest Common Measure Algorithm
4.3 A Millennium without Mathematics
4.4 The Strange History of Zero
4.5 Remainder and Quotient Algorithms
4.6 Sharing the Code
4.7 Validating the Algorithm
4.8 Thoughts on the Chapter
5. The Emergence of Modern Number Theory
5.1 Mersenne Primes and Fermat Primes
5.2 Fermat’s Little Theorem
5.3 Cancellation
5.4 Proving Fermat’s Little Theorem
5.5 Euler’s Theorem
5.6 Applying Modular Arithmetic
5.7 Thoughts on the Chapter
6. Abstraction in Mathematics
6.1 Groups
6.2 Monoids and Semigroups
6.3 Some Theorems about Groups
6.4 Subgroups and Cyclic Groups
6.5 Lagrange’s Theorem
6.6 Theories and Models
6.7 Examples of Categorical and Non-categorical Theories
6.8 Thoughts on the Chapter
7. Deriving a Generic Algorithm
7.1 Untangling Algorithm Requirements
7.2 Requirements on A
7.3 Requirements on N
7.4 New Requirements
7.5 Turning Multiply into Power
7.6 Generalizing the Operation
7.7 Computing Fibonacci Numbers
7.8 Thoughts on the Chapter
8. More Algebraic Structures
8.1 Stevin, Polynomials, and GCD
8.2 Göttingen and German Mathematics
8.3 Noether and the Birth of Abstract Algebra
8.4 Rings
8.5 Matrix Multiplication and Semirings
8.6 Application: Social Networks and Shortest Paths
8.7 Euclidean Domains
8.8 Fields and Other Algebraic Structures
8.9 Thoughts on the Chapter
9. Organizing Mathematical
Knowledge
9.1 Proofs
9.2 The First Theorem
9.3 Euclid and the Axiomatic Method
9.4 Alternatives to Euclidean Geometry
9.5 Hilbert’s Formalist Approach
9.6 Peano and His Axioms
9.7 Building Arithmetic
9.8 Thoughts on the Chapter
10. Fundamental Programming Concepts
10.1 Aristotle and Abstraction
10.2 Values and Types
10.3 Concepts
10.4 Iterators
10.5 Iterator Categories, Operations,and Traits
10.6 Ranges
10.7 Linear Search
10.8 Binary Search
10.9 Thoughts on the Chapter
11.1 Permutations and Transpositions
11.2 Swapping Ranges
11.3 Rotation
11.4 Using Cycles
11.5 Reverse
11.6 Space Complexity
11.7 Memory-Adaptive Algorithms
11.8 Thoughts on the Chapter
12. Extensions of GCD
12.1 Hardware Constraints anda More Efficient Algorithm
12.2 Generalizing Stein’s Algorithm
12.3 Bézout’s Identity
12.4 Extended GCD
12.5 Applications of GCD
12.6 Thoughts on the Chapter
13.1 Cryptology
13.2 Primality Testing
13.3 The Miller-Rabin Test
13.4 The RSA Algorithm: How and Why It Works
13.5 Thoughts on the Chapter
14. Conclusions
Further Reading
A. Notation
B. Common Proof Techniques
B.1 Proof by Contradiction
B.2 Proof by Induction
B.3 The Pigeonhole Principle
C. C++ for Non-C++ Programmers
C.1 Template Functions
C.2 Concepts
C.3 Declaration Syntaxand Typed Constants
C.4 Function Objects
C.5 Preconditions, Postconditions, and Assertions
C.6 STL Algorithms and Data Structures
C.7 Iterators and Ranges
C.8 Type Aliases and Type Functions with using in C++11
C.9 Initializer Lists in C++11
C.10 Lambda Functions in C++11
C.11 A Note about inline
Bibliography
A
B
C
D
E
F
G
H
I
K
L
M
P
R
S
V
W
Index
#
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
Z
备用描述
In this substantive yet accessible book, pioneering software designer Alexander Stepanov and his colleague Daniel Rose illuminate the principles of generic programming and the mathematical concept of abstraction on which it is based, helping you write code that is both simpler and more powerful.
If you’re a reasonably proficient programmer who can think logically, you have all the background you’ll need. Stepanov and Rose introduce the relevant abstract algebra and number theory with exceptional clarity. They carefully explain the problems mathematicians first needed to solve, and then show how these mathematical solutions translate to generic programming and the creation of more effective and elegant code. To demonstrate the crucial role these mathematical principles play in many modern applications, the authors show how to use these results and generalized algorithms to implement a real-world public-key cryptosystem.
As you read this book, you’ll master the thought processes necessary for effective programming and learn how to generalize narrowly conceived algorithms to widen their usefulness without losing efficiency. You’ll also gain deep insight into the value of mathematics to programming–insight that will prove invaluable no matter what programming languages and paradigms you use.
You will learn about
* How to generalize a four thousand-year-old algorithm, demonstrating indispensable lessons about clarity and efficiency
* Ancient paradoxes, beautiful theorems, and the productive tension between continuous and discrete
* A simple algorithm for finding greatest common divisor (GCD) and modern abstractions that build on it
* Powerful mathematical approaches to abstraction
* How abstract algebra provides the idea at the heart of generic programming
* Axioms, proofs, theories, and models: using mathematical techniques to organize knowledge about your algorithms and data structures
* Surprising subtleties of simple programming tasks and what you can learn from them
* How practical implementations can exploit theoretical knowledge
**Alexander A. Stepanov** has been programming since 1972–first in the Soviet Union and, since emigrating in 1977, in the United States. He has programmed operating systems, programming tools, compilers, and libraries. His work on the foundations of programming has been supported by GE, Polytechnic University, Bell Labs, HP, SGI, Adobe, and, since 2009, A9.com, Amazon’s search subsidiary. In 1995, he received the __Dr. Dobb’s Journal__ Excellence in Programming Award for the design of the C++ Standard Template Library.
**Daniel E. Rose** is a research scientist who has held management positions at Apple, AltaVista, Xigo, Yahoo, and A9.com. His research focuses on all aspects of search, ranging from low-level algorithms for index compression to human—computer interaction. Rose led the Apple team that created desktop search for the Mac. He holds a Ph.D. in cognitive science and computer science from the University of California, San Diego, and a B.A. in philosophy from Harvard.
备用描述
In Searching for Algorithms, Alexander Stepanov (creator of C++ STL) and Daniel Rose introduce math that can make any serious programmer more effective - and they do so in an engaging and accessible fashion, revealing how this math was first discovered, how programmers recognized its value, and the many surprising ways they have applied it. The perfect complement to Stepanov's classic Elements of Programming, Searching for Algorithms journeys through three key algorithms: multiplication; division with remainder; and adding 1. Those algorithms may sound pretty basic - even elementary school basic. But the authors show how they have played a profound role in the development of mathematics - and how, at a much deeper level, they are still essential to the work of today's programmers. In exploring these case studies, Stepanov and Rose show how to implement and read algorithms of all kinds, how to generalize them to the broadest possible set of applications, and how to define programming interfaces based on them
备用描述
This book is a great introduction to the core principles of generic programming for the experienced programmer. The authors work through examples showing how to analyse the requirements of an algorithm and make it as general as possible. The book includes several programming ""laws"" of particular interest to those building software components. The authors shsw how programmers can become more effective by learning about the idea of abstraction and the math it relies on. In an engaging and accessible fashion, they describe how these mathematical results were first discovered and are surprisingl
备用描述
Acknowledgments
About the Authors
Author's Note
What This Book Is About
The First Algorithm
Ancient Greek Number Theory
Euclid's Algorithm
The Emergence of Modern Number Theory
Abstraction in Mathematics
Deriving a Generic Algorithm
More Algebraic Structures
Organizing Mathematical Knowledge
Fundamental Programming Concepts
Permutation Algorithms
Extensions of GCD
A Real-World Application
Conclusions
Further Reading
Notation
Common Proof Techniques
C++ for Non-C++ Programmers
Bibliography
Index
开源日期
2022-07-07
更多信息……

🚀 快速下载

成为会员以支持书籍、论文等的长期保存。为了感谢您对我们的支持,您将获得高速下载权益。❤️

🐢 低速下载

由可信的合作方提供。 更多信息请参见常见问题解答。 (可能需要验证浏览器——无限次下载!)

所有选项下载的文件都相同,应该可以安全使用。即使这样,从互联网下载文件时始终要小心。例如,确保您的设备更新及时。
  • 对于大文件,我们建议使用下载管理器以防止中断。
    推荐的下载管理器:JDownloader
  • 您将需要一个电子书或 PDF 阅读器来打开文件,具体取决于文件格式。
    推荐的电子书阅读器:Anna的档案在线查看器ReadEraCalibre
  • 使用在线工具进行格式转换。
    推荐的转换工具:CloudConvertPrintFriendly
  • 您可以将 PDF 和 EPUB 文件发送到您的 Kindle 或 Kobo 电子阅读器。
    推荐的工具:亚马逊的“发送到 Kindle”djazz 的“发送到 Kobo/Kindle”
  • 支持作者和图书馆
    ✍️ 如果您喜欢这个并且能够负担得起,请考虑购买原版,或直接支持作者。
    📚 如果您当地的图书馆有这本书,请考虑在那里免费借阅。