Designing a generic library

I consider the Standard Template Library an amazing piece of work that constitutes a milestone in the evolution of programming languages. Not only is it useful in itself, but it also brought into existence the notion of generic programming. What I find sometimes even more fascinating is the process of creating a generic library: of spotting patterns and making generalizations that while being useful on one hand, do not incur run-time cost on the other. If you are interested in this process, here is a couple of links that I recommend.

  1. Elements of Programming by Alexander Stepanov and Paul McJones. This book describes step-by-step the process of creating a generic library alternative to, but overlapping in scope wit the STL.
  2. A Concept Design for the STL. This work (by many authors) tries to identify concepts in the STL, define them formally, and use them to constrain the STL.
  3. Ranges for the Standard Library. This is an on-going effort driven by Eric Niebler to pin-point the concept of a range and use it in the STL. Something that is likely to become the future standard.
This entry was posted in programming and tagged . Bookmark the permalink.

1 Response to Designing a generic library

  1. MD says:

    I’d also recommend “Notes on Programming” by Alexander Stepanov:

    Click to access notes.pdf

    Can be a good reading companion to “Elements of Programming” (I’d say it focuses more on the practical C++ programming aspects, while EoP is somewhat more “theoretical”; so it can also be read first, as a backgrounder of sorts).

    Come to think of it, plenty of good stuff there in general: 🙂

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.