The Standard Template Library - History Class
(Page 2 of 4 )
Before we start with the theory, I invite you to read some interesting information about the creation of the STL. The “father” of the STL can be considered to be Alexander Stepanov. He was born on November 16, 1950 in Moscow and studied Mathematics at Moscow State University. However, he felt like mathematics wasn’t meant for him and changed his career to become a programmer. His good mathematical knowledge came in handy later on while writing the STL library.
Throughout his career, Stepanov worked for Bell Labs where he developed a close connection with Andrew Koenig and Bjarne Stroustrup (the father of C++). He tried to convince Bjarne to add something like ADA generics to C++. Later on in 1993, he worked at HP Labs where he completed the STL. Right now he is employed by Adobe Systems.
Alexander had this to say about the creation of the STL in an interview at the STLport site:
In 1976, still back in the USSR, I got a very serious case of food poisoning from eating raw fish. While in the hospital, in the state of delirium, I suddenly realized that the ability to add numbers in parallel depends on the fact that addition is associative. (So, putting it simply, STL is the result of a bacterial infection.) In other words, I realized that a parallel reduction algorithm is associated with a semi group structure type. That is the fundamental point: algorithms are defined on algebraic structures. It took me another couple of years to realize that you have to extend the notion of structure by adding complexity requirements to regular axioms. And than it took 15 years to make it work. (I am still not sure that I have been successful in getting the point across to anybody outside the small circle of my friends.) I believe that iterator theories are as central to Computer Science as theories of rings or Banach spaces are central to Mathematics. Every time I would look at an algorithm I would try to find a structure on which it is defined. So what I wanted to do was to describe algorithms generically. That's what I like to do. I can spend a month working on a well known algorithm trying to find its generic representation. So far, I have been singularly unsuccessful in explaining to people that this is an important activity. But, somehow, the result of the activity - STL - became quite successful.
Next: Looking Inside the Library >>
More C++ Articles
More By Gabor Bernat