Historik för standardmallbiblioteket
Inom datorer är Standard Template Library (STL) ett mjukvarubibliotek för programmeringsspråket C++ . Arkitekturen av STL är till stor del skapandet av Alexander Stepanov . 1979 började han arbeta fram sina första idéer om generisk programmering och utforska deras potential för att revolutionera mjukvaruutveckling. Även om David Musser hade utvecklat och förespråkat vissa aspekter av generisk programmering redan 1971, var den begränsad till ett ganska specialiserat område av mjukvaruutveckling ( datoralgebra) .
Uppfattning
Stepanov insåg den fulla potentialen för generisk programmering och övertalade sina dåvarande kollegor på General Electric Research and Development (inklusive främst David Musser och Deepak Kapur ) att generisk programmering borde eftersträvas som en heltäckande grund för mjukvaruutveckling. På den tiden fanns det inget riktigt stöd i något programmeringsspråk för generisk programmering.
Det första stora språket som gav sådant stöd var Ada ( ANSI -standard 1983), med dess generiska enhetsfunktion. 1985 Eiffel det första objektorienterade språket som inkluderade inneboende stöd för generiska klasser, kombinerat med det objektorienterade begreppet arv. 1987 hade Stepanov och Musser utvecklat och publicerat ett Ada-bibliotek för listbearbetning som förkroppsligade resultaten av mycket av deras forskning om generisk programmering. Ada hade dock inte nått någon större acceptans utanför försvarsindustrin och C++ verkade mer sannolikt att bli flitigt använt och ge bra stöd för generisk programmering även om språket var relativt omoget. En annan anledning till att vända sig till C++, som Stepanov tidigt upptäckte, var C/C++-beräkningsmodellen som tillåter mycket flexibel åtkomst till lagring via pekare, vilket är avgörande för att uppnå allmänhet utan att förlora effektivitet.
Utveckling
Mycket forskning och experiment behövdes, inte bara för att utveckla enskilda komponenter, utan för att utveckla en övergripande arkitektur för ett komponentbibliotek baserad på generisk programmering. Först på AT&T Bell Laboratories och senare på Hewlett-Packard Research Labs (HP), experimenterade Stepanov med många arkitektur- och algoritmformuleringar, först i C och senare i C++. Musser samarbetade i denna forskning och 1992 gick Meng Lee med i Stepanovs projekt på HP och blev en stor bidragsgivare.
Detta arbete skulle utan tvekan ha fortsatt under en tid bara vara ett forskningsprojekt eller i bästa fall ha resulterat i ett HP proprietärt bibliotek, om Andrew Koenig från Bell Labs inte hade blivit medveten om arbetet och bett Stepanov att presentera huvudidéerna vid en november Möte 1993 i ANSI/ISO-kommittén för C++-standardisering. Kommitténs svar var överväldigande positivt och ledde till en begäran från Koenig om ett formellt förslag i tid till mötet i mars 1994. Trots den enorma tidspressen kunde Alex och Meng ta fram ett utkast till förslag som fick preliminärt godkännande vid det mötet.
Kommittén hade flera förfrågningar om ändringar och förlängningar (några av dem större), och en liten grupp kommittémedlemmar träffade Stepanov och Lee för att hjälpa till att utarbeta detaljerna. Kraven för den mest betydande utvidgningen ( associativa behållare ) måste visas vara konsekventa genom att fullt ut implementera dem, en uppgift Stepanov delegerade till Musser. Stepanov och Lee tog fram ett förslag som fick slutgiltigt godkännande vid ANSI/ISO-kommitténs möte i juli 1994. (Ytterligare detaljer om denna historia finns i Stevens.) Därefter införlivades Stepanov och Lee-dokumentet 17 i ANSI/ISO C++-standarden (1, delar av klausulerna 17 till 27). Det påverkade också andra delar av C++ Standard Library, såsom strängfaciliteterna, och några av de tidigare antagna standarderna inom dessa områden reviderades därefter.
Trots STL:s framgångar med kommittén kvarstod frågan om hur STL skulle ta sig in i faktisk tillgänglighet och användning. Med STL-kraven i det allmänt tillgängliga utkastet till standard kan kompilatorleverantörer och oberoende programvarubiblioteksleverantörer naturligtvis utveckla sina egna implementeringar och marknadsföra dem som separata produkter eller som försäljningsargument för sina andra varor. En av den första upplagans författare, Atul Saini, var bland de första att inse den kommersiella potentialen och började utforska den som en bransch för sitt företag, Modena Software Incorporated, redan innan STL hade accepterats fullt ut av kommittén.
Utsikterna för tidig utbredd spridning av STL förbättrades avsevärt med Hewlett-Packards beslut att göra dess implementering fritt tillgänglig på Internet i augusti 1994. Denna implementering, utvecklad av Stepanov, Lee och Musser under standardiseringsprocessen, blev grunden för många implementeringar som erbjuds av kompilatorer och biblioteksleverantörer idag.