Alexander Stepanov and his book the “Elements of Programming”

Just learning a little bit about this guy makes me excited to check out his book.

To quote Wikipedia:

Alexander Alexandrovich Stepanov (born November 16, 1950 in Moscow) is the primary designer and implementer of the C++ Standard Template Library,[1] which he started to develop around 1992 while employed at HP Labs. He had earlier been working for Bell Labs close to Andrew Koenig and tried to convince Bjarne Stroustrup to introduce something like Ada Generics in C++.

You can watch his talk about his book here:

http://www.youtube.com/watch?v=Ih9gpJga4Vc

So what do I find interesting about this programmer ?

First he is skeptical about OOP. Wikipedia quotes him as saying:

“I think that object orientedness is almost as much of a hoax as Artificial Intelligence. I have yet to see an interesting piece of code that comes from these OO people. In a sense, I am unfair to AI: I learned a lot of stuff from the MIT AI Lab crowd, they have done some really fundamental work: Bill Gosper’s Hakmem is one of the best things for a programmer to read. AI might not have had a serious foundation, but it produced Gosper and Stallman (Emacs), Moses (Macsyma) and Sussman (Scheme, together with Guy Steele). I find OOP technically unsound. It attempts to decompose the world in terms of interfaces that vary on a single type. To deal with the real problems you need multisorted algebras – families of interfaces that span multiple types. I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting – saying that everything is an object is saying nothing at all. I find OOP methodologically wrong. It starts with classes. It is as if mathematicians would start with axioms. You do not start with axioms – you start with proofs. Only when you have found a bunch of related proofs, can you come up with axioms. You end with axioms. The same thing is true in programming: you have to start with interesting algorithms. Only when you understand them well, can you come up with an interface that will let them work.”

In this video he even says that GOTO is good, not bad (it can be abused). He is so right about that.  He comes from a very string mathematical background and I really like that. I have always felt that a string math background makes for a better programmer. He also appreciates the importance of understanding the lower level of the computer (ie. he likes BITs) which again I feel makes a big difference.

I definitely plan on learning more about his views about programming. This guy even taught other programmers at Adobe.