Goodreads helps you keep track of books you want to read. Want to Read saving…. Want to Read Currently Reading Read. Other editions. Enlarge cover. Error rating book.
|Published (Last):||18 February 2018|
|PDF File Size:||14.15 Mb|
|ePub File Size:||1.1 Mb|
|Price:||Free* [*Free Regsitration Required]|
Goodreads helps you keep track of books you want to read. Want to Read saving…. Want to Read Currently Reading Read. Other editions. Enlarge cover. Error rating book. Refresh and try again. Open Preview See a Problem? Details if other :. Thanks for telling us about the problem. Return to Book Page. Preview — Elements of Programming by Alexander Stepanov. Elements of Programming by Alexander Stepanov ,. Paul McJones. And then we wonder why software is notorious for being delivered "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.
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. 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. Its major premise is that practical programming, like other areas of science and engineering, must be based on a solid mathematical foundation. 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. 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.
Get A Copy. Hardcover , pages. Published June 1st by Addison-Wesley Professional first published More Details Original Title. Other Editions 7. Friend Reviews. To see what your friends thought of this book, please sign up. To ask other readers questions about Elements of Programming , please sign up. Be the first to ask a question about Elements of Programming. Lists with This Book.
Community Reviews. Showing Average rating 4. Rating details. More filters. Sort order. Start your review of Elements of Programming. Mar 03, Chris Sharpe rated it really liked it. This one was a bit of a slog. Because it tries to be both a Mathematics and a Computer Science book, it skims a little over both, and I can't honestly recommend it unless you have a little background in both areas which seems likely, if you are considering this.
For instance, it uses the taxonomy of algebraic structures monoids, groups, rings , with requirements on operations associativity, commutativity, existence of identity, existence of inverses to illustrate constructing a taxonomy of This one was a bit of a slog.
For instance, it uses the taxonomy of algebraic structures monoids, groups, rings , with requirements on operations associativity, commutativity, existence of identity, existence of inverses to illustrate constructing a taxonomy of concepts that apply to data structures, but it doesn't dedicate much explanation to the mathematical structures, so you can only really follow if you already know them.
If you already have some idea about how gcd, rotate, and partition work, then you should be reasonably well set to learn a lot more about possible implementation variations, with their respective asymptotic complexities and requirements on the types on which they operate. Some of the above might seem negative, but I simply want to point out what the book is not. What it is , is an excellent academic guide to carefully designing simple components, and building complex behaviour out of those, along with a catalogue of some useful such components.
I learnt a lot about fundamentals such as partitioning, sorting, vectors, and deques. One key component that Stepanov has talked about a lot, but that didn't seem to get quite as much stress here, is his associative binary counter, absolutely essential for efficient iterative reduction.
I found the description in this book finally made this idea click, even though I had seen it several times before. Oct 28, Nikolai Volsky rated it it was amazing. This book was at hand in the best moment! Jan 05, Koppektop marked it as to-read. Very hard-to-read book for me. Apr 29, Gary Lang rated it really liked it. You might enjoy the combination of math theory and applying it to practical coding. If you do, then you should love this book. Usually stuff like this doesn't have as much application to real life see Z Notation.
Mar 06, Maxim Razin rated it liked it. The name is misleading. It's more like a theoretical background beyond STL. A very complex book. I think its description promises more than it delivers. The language used by the author is pretty difficult to understand.
The path from chapter to chapter and through a chapter is not always clear, you don't understand where the author is going with it. I definitively did not understand a lot. Oct 05, Mark rated it it was amazing Shelves: tech-formal. A synthesis of practical programming and rigorous mathematics. A word of advice - take a course in abstract algebra before reading this, and it may make much more sense. Jan 25, Christian Kotz rated it really liked it Shelves: computer-science. Very systematic and mathematical.
Jul 07, Nick Black rated it it was amazing Shelves: autographed , pimpin-aint-easy-but-computers-are , likely-reread , textbook-as-literature , will-review-realsoonnow , read-multiple-times. I'm looking forward to this being the most exciting thing I've read in months, maybe years. View all 4 comments. Nov 03, Chad Brewbaker rated it it was amazing.
Must read on generic programming. Michael Hofmann rated it it was amazing May 10, Baubek rated it it was amazing Sep 23, Mkfs rated it really liked it Jun 23, Sean Parent rated it it was amazing Mar 14, Agam rated it it was amazing May 13, Daniel rated it really liked it Mar 02, Jan rated it really liked it May 13, Chris Oldwood rated it liked it Nov 20, Keerthi Chowdary rated it really liked it Nov 16, James rated it it was amazing Mar 20, Ben Deane rated it it was amazing Jul 12, Chetan Tonde rated it it was amazing Jan 06, H0nzZik rated it it was amazing Aug 13, Kalon rated it really liked it Apr 06,
Elements of Programming
Skip to search form Skip to main content You are currently offline. Some features of the site may not work correctly. Stepanov and Paul R. Stepanov , Paul R. McJones Published Computer Science. 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.
Elements of Programming Authors' Edition (free ebook)
Useful and surprising applications are 1 matrix exponentiation to solve systems of linear recurrences in log n steps no stupid Fibonacci implementation here! Not too bad for a 4, year old multiplication algorithm. A second example is the euclidean algorithm, which he extends first to polynomials following Stevin, then to Gaussian integers, then to euclidean domains. A surprising application was to permutation algorithms managing memory. Anyhow, I think it would be really cool if you showed these kind of applications of number-theoretic algorithms as well as the cryptography stuff.