Alexander Stepanov

From Wikipedia, the free encyclopedia
Jump to: navigation, search
For other people named Alexander Stepanov, see Alexander Stepanov (disambiguation).
Alexander Stepanov

Alexander Alexandrovich Stepanov (Russian: Алекса́ндр Алекса́ндрович Степа́нов), 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++.[2]

He is the author (with Paul McJones) of Elements of Programming,[3] a book that grew out of a "Foundations of Programming" course[4] that Stepanov taught at Adobe Systems (while employed there). He is also the author (with Daniel E. Rose) of From Mathematics to Generic Programming.[5]

He is currently employed by

Personal Life[edit]

In 2015, Alexander Stepanov wrote the following:[6]

Over the course of my life I have gradually narrowed my focus to spending time on the few items that, to me, are the essential examples of their category. These are things that stood the test of time; I re-read the books I already have read; I listen to music I have listened many times before; etc, etc. Yes, there is a chance that I will miss a new Mozart or Euclid, but it is a chance I am willing to take. Also, like the Pythagoreans of old, I view these as part of a unity: music reflects mathematics, literature is connected with history, etc. My work and my play and my life are inseparable. This unity is also reflected in From Mathematics to Generic Programming, which blends math, programming, history, and sometimes philosophy and art. Here are some of my favorites:

Literature: Greek and Roman classics: Homer, Plato, Ovid, Seneca; Bible; "modern" novels from Swift and Sterne to Dickens and Anthony Trollope. Math and science classics: Euclid, Euler, Gauss, Poincare. I still use printed books, not e-books.

Music: Bach, Mozart, Beethoven, Schubert, Wagner, and Mahler. I tend to listen to many different interpretations of the same piece. I do not use MP3s or streaming music, but CDs and, recently, SACDs.

Movies and TV: Chaplin, Marx Brothers, Kurosawa, Satyajit Ray, Kenneth Clark's Civilization, Peter Brook's Mahabharata, Brideshead Revisited, Royal Shakespeare Company production of Nicholas Nickelby, Maigret with Bruno Cremer. I am a blu-ray enthusiast. I do not use Netflix or Amazon Instant Video.

I love dogs, especially Welsh corgis; I spend 1-2 hours a day walking my dog Maxwell. I no longer eat meat or milk. I have been very happily married for 45 years; my wife Helen is my closest friend. We are practicing Roman Catholics, go to church on Sundays and holidays of obligation and try to keep the commandments. Our political views are in line with Pope Francis: we believe in having an economically just society.

Standard Template Library and generic programming[edit]

Alexander Stepanov is an advocate of what is known as generic programming. Although David Musser had developed and advocated some aspects of generic programming already by 1971, it was limited to a rather specialized area of software development (computer algebra).

Stepanov recognized the full potential for generic programming and persuaded his then-colleagues at General Electric Research and Development (including, primarily, David Musser and Deepak Kapur) that generic programming should be pursued as a comprehensive basis for software development. At the time there was no real support in any programming language for generic programming.

The first major language to provide such support was Ada, with its generic units feature. By 1987 Stepanov and Musser had developed and published an Ada library for list processing that embodied the results of much of their research on generic programming. However, Ada had not achieved much acceptance outside the defense industry and C++ seemed more likely to become widely used and provide good support for generic programming even though the language was relatively immature. Another reason for turning to C++, which Stepanov recognized early on, was the C/C++ model of computation which allows very flexible access to storage via pointers is crucial to achieving generality without losing efficiency. It eventually led to the development of the Standard Template Library of C++.

Criticism of OOP[edit]

In several interviews, Stepanov has voiced strong criticisms of OOP:[7]

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.

See also[edit]


  1. ^ Stepanov, Alexander; Lee, Meng (1995-11-14). "The Standard Template Library". HP Laboratories Technical Report 95-11(R.1). 
  2. ^ Stroustrup, Bjarne (May 2007). "Evolving a language in and for the real world: C++ 1991-2006, section 4.1.2" (PDF). preprint. ACM HOPL-III Conference. pp. 4–1–4–59. doi:10.1145/1238844.1238848. ISBN 978-1-59593-766-7. 
  3. ^ Stepanov, Alexander; McJones, Paul (2009). Elements of Programming. Addison-Wesley. ISBN 978-0-321-63537-2. 
  4. ^ Stepanov, Alexander (2007). Notes on Programming (PDF). 
  5. ^ Stepanov, Alexander A.; Rose, Daniel E. (2015). From Mathematics to Generic Programming. Addison-Wesley. ISBN 978-0321942043. 
  6. ^ Stepanov, Alexander (2015-01-19). "Interviews: Alexander Stepanov and Daniel E. Rose Answer Your Questions". Slashdot. 
  7. ^ Stepanov, Alexander. "STLport: An Interview with A. Stepanov". Retrieved 2010-04-21. 

External links[edit]