Robert Ramey Software Development Homepage

STL Library Documentation

The Standard Template Library is the foundation of modern C++. The creation and publication of this code and its documentation set a new standard for the formal specification of what a computer program should do, how it should be designed and how it should be formally documented. These pages were maintained first by Silicon Graphics and then later by Hewett-Packard. In January of 2018 these pages were removed by H-P. This is a historic blunder. I have recovered the original STL Library Document and hosted them here.

It seems that the view on this thread is that this is merely of historical interest. I really disagree with this. It's history the way that Euclid's Elements are "merely" history. (please ignore more hyperbole). It IS history, but it's much more than this.

  • It's an example lucid thinking about how to build composable abstractions inspired by understanding of mathematical reasoning.
  • It's a feat of engineering and economy. It cleverly adapts these ideas to C++ to leverage on work already done. Without this it would be just one more forgotten academic paper.
  • The above is why it's still in use today (after 25 years). It is still the basis of the expansion of the C++ standard library. So it's a lesson to us all.
  • It first articulated and demonstrated some new ideas which have come to be essential. As far as I know, it is the only place where the word "concept" (in the way it's used by C++) is explained and demonstrated. The fact that so few people understand this suggests that more people need to study this document.
  • It is very well structured and clearly written. It demonstrates the fallacy of the view that there can be such a thing as "self documenting code". It is not floridly written. It is devoid of ego and narcism. It is written not to demonstrate how smart the author is, but rather to make the reader feel smarter himself. The only difficult parts are those which are new ideas: iterators, concepts, and some others. Using this document to help write code which uses the library makes it clear that the code and document were prepared together and that the influence was in both directions. That is, the document was an indispensable part of the library design process. Learn from this.
  • It contains a few inevitable blunders which should serve as an object lesson to us all. Usage of the term "concept" when what is really meant is "type requirements" is still a source of confusion. Usage of the term "vector" is ... just an embarrassment. Well even God can make a mistake. Learn from this.
  • The document does not list an author. I have strong suspicion of who the author is. But doubt adds sort of an air of mystery. Who exactly etched the stone tablets which hold the ten commandments? Maybe not knowing makes it better.

Latest News!

April, 2018

Original STL Library Documentation recovered and hosted here.