Author: Alexander Stepanov & Paul McJones
Aimed at: C++ academics
Pros: Rigorous mathematical approach
Cons: A difficult read that fails to motivate the reader
Reviewed by: Mike James
What can a practicing programmer say about a book such as this one? I have a lot of time for Bjarne Stroustrup (the inventor of C++) and his opinion of the book is glowing -
"There are many good books, but few great ones. 'Elements' is a great book ..."
He then says
"Reading "Elements" requires maturity both with mathematics and with software development..."
So basically if I don't like the book its down to me - I'm not mature enough either as a mathematician or as a software developer. As you might guess I'm leading up to saying that I don't like this book at all. I'm not unfamiliar with the idea of giving a mathematical basis to programming and on balance I think it's a very good idea but at the present time nothing much has presented itself to the world that rises above the concerns of mathematics. That is, if you need to construct algorithms that perform permutations, factor numbers or nested exponential powers then there are theories that will provide organisations that help with correctness and generalisation.
This is more or less what this book does and within the confines of its little box this is fine. The problem is that I can't see any way of taking the ideas and breaking out of the mathematicy applications into the sort of thing real world programming is all about.
I also don't see the "bigger picture" where the mathematical organisation proposed is strong enough to provide a programming methodology to rival object oriented programming.The key idea seems to be the notion that iterators can be used to provide an algebraic like basis for defining sequential algorithms and their properties.
The bottom line is that despite the glowing reviews by people you need to take seriously the book is boring. It fails to inspire or impress on the reader the importance of the topic being discussed. It is suggested that it should be on the syllabus of every computer science course - if so we can add another abstract mathematical unit that students will in the main try to forget.
I think that the principles expressed in this book could probably be explained without the rigorous mathematics in a few pages and then the math could be added by any reasonable mathematician quite easily.
So what is there to say about this book...
It is mathematical and you will need to be happy with advanced algebra not quite at the level of group theory but heading in that direction - sets, order relations, partial ordering.. . Despite the occasional informal comment there is very little by the way of insight into the methods conveyed by the authors. Like so many poor maths books you are left to guess at the meaning and importance of dense symbolic expressions. As a result it is a difficult read even if you are happy with mathematics and if it has any gem hidden within it then it will take a great deal of effort to extract.