Atjaunināt sīkdatņu piekrišanu

E-grāmata: Elements of Programming

3.98/5 (364 ratings by Goodreads)
  • Formāts: 288 pages
  • Izdošanas datums: 09-Jun-2009
  • Izdevniecība: Addison-Wesley Educational Publishers Inc
  • Valoda: eng
  • ISBN-13: 9780321643896
Citas grāmatas par šo tēmu:
  • Formāts - PDF+DRM
  • Cena: 27,04 €*
  • * ši ir gala cena, t.i., netiek piemērotas nekādas papildus atlaides
  • Ielikt grozā
  • Pievienot vēlmju sarakstam
  • Šī e-grāmata paredzēta tikai personīgai lietošanai. E-grāmatas nav iespējams atgriezt un nauda par iegādātajām e-grāmatām netiek atmaksāta.
  • Formāts: 288 pages
  • Izdošanas datums: 09-Jun-2009
  • Izdevniecība: Addison-Wesley Educational Publishers Inc
  • Valoda: eng
  • ISBN-13: 9780321643896
Citas grāmatas par šo tēmu:

DRM restrictions

  • Kopēšana (kopēt/ievietot):

    nav atļauts

  • Drukāšana:

    nav atļauts

  • Lietošana:

    Digitālo tiesību pārvaldība (Digital Rights Management (DRM))
    Izdevējs ir piegādājis šo grāmatu šifrētā veidā, kas nozīmē, ka jums ir jāinstalē bezmaksas programmatūra, lai to atbloķētu un lasītu. Lai lasītu šo e-grāmatu, jums ir jāizveido Adobe ID. Vairāk informācijas šeit. E-grāmatu var lasīt un lejupielādēt līdz 6 ierīcēm (vienam lietotājam ar vienu un to pašu Adobe ID).

    Nepieciešamā programmatūra
    Lai lasītu šo e-grāmatu mobilajā ierīcē (tālrunī vai planšetdatorā), jums būs jāinstalē šī bezmaksas lietotne: PocketBook Reader (iOS / Android)

    Lai lejupielādētu un lasītu šo e-grāmatu datorā vai Mac datorā, jums ir nepieciešamid Adobe Digital Editions (šī ir bezmaksas lietotne, kas īpaši izstrādāta e-grāmatām. Tā nav tas pats, kas Adobe Reader, kas, iespējams, jau ir jūsu datorā.)

    Jūs nevarat lasīt šo e-grāmatu, izmantojot Amazon Kindle.

“Ask a mechanical, structural, or electrical engineer how far they would get without a heavy reliance on a firm mathematical foundation, and they will tell you, ‘not far.’ Yet so-called software engineers often practice their art with little or no idea of the mathematical underpinnings of what they are doing. And then we wonder why software is notorious for being delivered late and full of bugs, while other engineers routinely deliver finished bridges, automobiles, electrical appliances, etc., on time and with only minor defects. This book sets out to redress this imbalance. Members of my advanced development team at Adobe who took the course based on the same material all benefited greatly from the time invested. It may appear as a highly technical text intended only for computer scientists, but it should be required reading for all practicing software engineers.”
—Martin Newell, Adobe Fellow

“The book contains some of the most beautiful code I have ever seen.”
—Bjarne Stroustrup, Designer of C++

“I am happy to see the content of Alex’s course, the development and teaching of which I strongly supported as the CTO of Silicon Graphics, now available to all programmers in this elegant little book.”
—Forest Baskett, General Partner, New Enterprise Associates

“Paul’s patience and architectural experience helped to organize Alex’s mathematical approach into a tightly-structured edifice—an impressive feat!”
—Robert W. Taylor, Founder of Xerox PARC CSL and DEC Systems Research Center

Elements of Programming provides a different understanding of programming than is presented elsewhere. Its major premise is that practical programming, like other areas of science and engineering,must be based on a solid mathematical foundation. The book shows that algorithms implemented in a real programming language, such as C++, can operate in the most general mathematical setting. For example, the fast exponentiation algorithm is defined to work with any associative operation. Using abstract algorithms leads to efficient, reliable, secure, and economical software.

This is not an easy book. Nor is it a compilation of tips and tricks for incremental improvements in your programming skills. The book’s value is more fundamental and, ultimately, more critical for insight into programming. To benefit fully, you will need to work through it from beginning to end, reading the code, proving the lemmas, and doing the exercises. When finished, you will see how the application of the deductive method to your programs assures that your system’s software components will work together and behave as they must.

The book presents a number of algorithms and requirements for types on which they are defined. The code for these descriptions—also available on the Web—is written in a small subset of C++ meant to be accessible to any experienced programmer. This subset is defined in a special language appendix coauthored by Sean Parent and Bjarne Stroustrup.

Whether you are a software developer, or any other professional for whom programming is an important activity, or a committed student, you will come to understand what the book’s experienced authors have been teaching and demonstrating for years—that mathematics is good for programming, and that theory is good for practice.

Recenzijas

"A wise manager will make copies available free to any members of her programming staff who commit to read it. The training budget could hardly be better spent…Elements of Programming has the power to change the readers professional life."

Martyn Thomas FREng, Components in Eletronics

Preface ix
About the Authors xiii
Foundations
1(14)
Categories of Ideas: Entity, Species, Genus
1(1)
Values
2(2)
Objects
4(2)
Procedures
6(1)
Regular Types
6(2)
Regular Procedures
8(2)
Concepts
10(4)
Conclusions
14(1)
Transformations and Their Orbits
15(16)
Transformations
15(3)
Orbits
18(3)
Collision Point
21(6)
Measuring Orbit Sizes
27(1)
Actions
28(1)
Conclusions
29(2)
Associative Operations
31(18)
Associativity
31(2)
Computing Powers
33(2)
Program Transformations
35(4)
Special-Case Procedures
39(3)
Parameterizing Algorithms
42(1)
Linear Recurrences
43(3)
Accumulation Procedures
46(1)
Conclusions
47(2)
Linear Orderings
49(16)
Classification of Relations
49(2)
Total and Weak Orderings
51(1)
Order Selection
52(9)
Natural Total Ordering
61(1)
Clusters of Derived Procedures
62(1)
Extending Order-Selection Procedures
63(1)
Conclusions
63(2)
Ordered Algebraic Structures
65(24)
Basic Algebraic Structures
65(5)
Ordered Algebraic Structures
70(1)
Remainder
71(5)
Greatest Common Divisor
76(3)
Generalizing gcd
79(2)
Stein gcd
81(1)
Quotient
81(2)
Quotient and Remainder for Negative Quantities
83(2)
Concepts and Their Models
85(2)
Computer Integer Types
87(1)
Conclusions
88(1)
Iterators
89(26)
Readability
89(1)
Iterators
90(2)
Ranges
92(3)
Readable Ranges
95(8)
Increasing Ranges
103(3)
Forward Iterators
106(4)
Indexed Iterators
110(1)
Bidirectional Iterators
111(2)
Random-Access Iterators
113(1)
Conclusions
114(1)
Coordinate Structures
115(18)
Bifurcate Coordinates
115(4)
Bidirectional Bifurcate Coordinates
119(5)
Coordinate Structures
124(1)
Isomorphism, Equivalence, and Ordering
124(7)
Conclusions
131(2)
Coordinates with Mutable Successors
133(16)
Linked Iterators
133(1)
Link Rearrangements
134(6)
Applications of Link Rearrangements
140(3)
Linked Bifurcate Coordinates
143(5)
Conclusions
148(1)
Copying
149(20)
Writability
149(2)
Position-Based Copying
151(6)
Predicate-Based Copying
157(7)
Swapping Ranges
164(4)
Conclusions
168(1)
Rearrangements
169(22)
Permutations
169(3)
Rearrangements
172(2)
Reverse Algorithms
174(4)
Rotate Algorithms
178(8)
Algorithm Selection
186(3)
Conclusions
189(2)
Partition and Merging
191(18)
Partition
191(7)
Balanced Reduction
198(4)
Merging
202(6)
Conclusions
208(1)
Composite Objects
209(18)
Simple Composite Objects
209(7)
Dynamic Sequences
216(6)
Underlying Type
222(3)
Conclusions
225(2)
Afterword
227(4)
Appendix A Mathematical Notation
231(2)
Appendix B Programming Language
233(10)
Language Definition
233(7)
Macros and Trait Structures
240(3)
Bibliography 243(4)
Index 247
Alexander Stepanov studied mathematics at Moscow State University from 1967 to 1972. He has been programming since 1972: first in the Soviet Union and, after emigrating in 1977, in the United States. He has programmed operating systems, programming tools, compilers, and libraries. His work on foundations of programming has been supported by GE, Brooklyn Polytechnic, AT&T,HP, SGI, and, since 2002, Adobe. In 1995 he received the Dr. Dobbs Journal Excellence in Programming Award for the design of the C++ Standard Template Library.

Paul McJones studied engineering mathematics at the University of California, Berkeley, from 1967 to 1971. He has been programming since 1967 in the areas of operating systems, programming environments, transaction processing systems, and enterprise and consumer applications. He has been employed by the University of California, IBM, Xerox, Tandem, DEC, and, since 2003, Adobe. In 1982 he and his coauthors received the ACM Programming Systems and Languages Paper Award for their paper The Recovery Manager of the System R Database Manager.