"STL" è stato scritto da Alexander Stepanov nei giorni molto precedenti alla standardizzazione del C ++. Il C ++ esisteva negli anni '80, ma quello che ora chiamiamo " C ++ " è il linguaggio standardizzato in ISO / IEC 14882: 2014 (e versioni precedenti, come ISO / IEC 14882: 2011).
L'STL era già ampiamente utilizzato come libreria per C ++, offrendo ai programmatori l'accesso a contenitori, iteratori e algoritmi. Quando è avvenuta la standardizzazione, il comitato linguistico ha progettato parti della libreria standard C ++ (che fa parte dello standard linguistico) per molto da corrispondere attentamente alla STL.
Nel corso degli anni, molte persone - inclusi autori di libri di spicco e vari siti Web - hanno continuato a riferirsi alla libreria standard C ++ come "la STL", nonostante il fatto che le due entità siano separate e che ci siano alcune differenze. Queste differenze sono ancora più pronunciate nel nuovo standard C ++ in arrivo, che include varie funzionalità e altera in modo significativo alcune classi.
L'STL originale ora viene spesso chiamato "un'implementazione della libreria di modelli standard C ++" (piuttosto indietro rispetto alla cronologia attuale!), Allo stesso modo in cui Microsoft Visual Studio o GCC distribuiscono un'implementazione della libreria standard C ++. Ma "Standard Template Library" e "Standard Library" non sono la stessa cosa.
La battaglia riguarda se l'attuale libreria standard dovrebbe essere chiamata "la STL" in tutto o in parte e / o se è importante come si chiama.
Per "STL"
C'è una scuola di pensiero che dice che ora tutti sanno che "STL" significa la libreria standard, proprio come tutti ora sanno che "C ++" è il linguaggio standardizzato ISO.
Comprende anche coloro che credono che non abbia davvero importanza finché tutte le parti capiscono di cosa si sta parlando.
È un termine reso ancora più diffuso dalla natura della bestia, molti dei quali fanno un uso pesante della funzione C ++ nota come "template".
Per "C ++ Standard Library" (o stdlib)
Tuttavia, c'è un'altra scuola di pensiero - a cui mi iscrivo - che dice che questo è confuso. Le persone che imparano il C ++ per la prima volta non lo fanno conoscono questa distinzione e potrebbero non notare piccole differenze linguistiche.
L'autore di questo articolo ha incontrato numerose volte persone che credevano che l'intera libreria standard C ++ fosse la STL, incluse funzionalità che non facevano mai parte della stessa STL. La maggior parte dei fautori vocali di "the STL", al contrario, sanno esattamente cosa significano con esso e si rifiutano di credere che non tutti "capiscono". Chiaramente, l'uso del termine non è uniforme.
Inoltre, ci sono alcune librerie simili a STL che sono in realtà implementazioni dell'STL originale, non della libreria standard C ++. Fino a poco tempo fa, STLPort era uno di questi (e anche lì, la confusione abbonda!).
Inoltre, lo standard C ++ non contiene il testo "STL" da nessuna parte, e alcune persone usano abitualmente frasi come "lo STL è incluso nella libreria standard C ++", il che è chiaramente errato.
Sono convinto che continuare a propagare l'uso del termine in questo modo porterà solo a un malinteso che dura per sempre. Purtroppo, può essere del tutto controproducente tentare di cambiare le cose, anche se dovrebbe essere in meglio. Potremmo rimanere bloccati per sempre con doppi significati.
Conclusione
Apprezzo che questo post sia stato un po 'distorto: ho scritto l'articolo a cui hai collegato. :) Spero comunque che questo aiuti a spiegare meglio la battaglia.
Aggiornamento 13/04/2011
Ecco tre esempi perfetti di qualcuno che sta usando "STL" per fare riferimento all'intera libreria standard C ++. Continua a sconcertarmi che così tante persone giurano cieche che nessuno lo fa mai, quando è chiaro vederlo quasi quotidianamente.