Alexander Alexandrovich Stepanov (Russian:Алекса́ндр Алекса́ндрович Степа́нов; born November 16, 1950,Moscow) is a Russian-Americancomputer programmer, best known as an advocate ofgeneric programming and as the primary designer and implementer of theC++Standard Template Library,[1] which he started to develop around 1992 while employed atHP Labs. He had earlier been working forBell Labs close toAndrew Koenig and tried to convinceBjarne Stroustrup to introduce something likeAda generics in C++.[2] He is credited with the notion ofconcept.[3][4]
He is the author (withPaul McJones) ofElements of Programming,[5] a book that grew out of a "Foundations of Programming" course[6] that Stepanov taught atAdobe Systems (while employed there). He is also the author (with Daniel E. Rose) ofFrom Mathematics to Generic Programming.[7]
He retired in January 2016 fromA9.com.[8]
Alexander Stepanov is an advocate ofgeneric programming. AlthoughDavid Musser had already developed and advocated some aspects of generic programming 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 atGeneral Electric Research and Development (including, primarily,David Musser andDeepak 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 wasAda, 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 thedefense 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 that the C/C++ model of computation (which allows very flexible access to storage viapointers) is crucial to achieving generality without losingefficiency.It eventually led to the development of theStandard Template Library ofC++.