"STL" був написаний Олександром Степановим за дні, задовго до стандартизації C ++. C ++ існував протягом 80-х років, але те, що ми сьогодні називаємо " C ++ ", - це мова, стандартизована в ISO / IEC 14882: 2014 (і більш ранніх версіях, таких як ISO / IEC 14882: 2011).
STL вже широко використовувався як бібліотека для C ++, надаючи програмістам доступ до контейнерів, ітераторів та алгоритмів. Коли сталася стандартизація, мовний комітет розробив частини стандартної бібліотеки C ++ (яка є частиною мовного стандарту), щоб вони дуже відповідали STL.
Протягом багатьох років багато людей - у тому числі видатні автори книг та різні веб-сайти - продовжують називати Стандартну бібліотеку C ++ як "STL", незважаючи на те, що ці дві організації є окремими та є деякі відмінності. Ці відмінності ще більше виражені в новому новому стандарті C ++, який включає різні функції та суттєво змінює деякі класи.
Оригінальну STL тепер часто називають "реалізацією стандартної бібліотеки шаблонів C ++" (швидше назад до фактичної історії!) Так само, як ваша Microsoft Visual Studio або GCC постачає реалізацію стандартної бібліотеки C ++. Але "Стандартна бібліотека шаблонів" і "Стандартна бібліотека" - це не одне і те ж.
Сутичка полягає в тому, чи повинна поточна Стандартна бібліотека називатися "STL" повністю або частково та / або чи має значення те, що вона називається.
Для "STL"
Існує школа думки, яка говорить, що всі тепер знають, що "STL" означає стандартну бібліотеку, як і всі тепер знають, що "C ++" - це стандартизована ISO.
Він також включає тих, хто вважає, що це насправді не має значення , доки всі сторони розуміють, про що йдеться.
Це термін, який ще більше поширюється за характером звіра, в значній частині він робить сильне використання функції C ++, відомої як "шаблони".
Для "Стандартної бібліотеки C ++" (або stdlib)
Однак є ще одна школа думки - до якої я підписуюся - що говорить, що це заплутано. Люди, які вивчають C ++ вперше , не знають цього розрізнення і, можливо, не помічають невеликих мовних відмінностей.
Автор цієї статті неодноразово стикався з людьми, які вважають, що вся стандартна бібліотека C ++ - це STL, включаючи функції, які ніколи не були частиною самої STL. Більшість голосних прихильників "STL", навпаки, точно знають, що вони розуміють під цим поняттям, і відмовляються вірити, що не всі "отримують це". Зрозуміло, використання терміна не є рівномірним.
Крім того, є деякі бібліотеки, схожі на STL, які насправді є реалізацією оригінальної STL, а не стандартної бібліотеки C ++. Донедавна STLPort був одним з них (і навіть там, плутанина рясніє!).
Крім того, стандарт C ++ ніде не містить тексту "STL", і деякі люди зазвичай використовують фрази типу "STL включено до стандартної бібліотеки C ++", що, очевидно, невірно.
Вважаю, що продовження поширення вживання цього терміна таким чином просто призведе до нерозуміння, яке триватиме назавжди. На жаль, спроби змінити речі можуть бути цілком контрпродуктивними, навіть якщо це повинно бути на краще. Ми можемо просто застрягти з подвійними значеннями назавжди.
Висновок
Я вдячний, що ця публікація була трохи упереджена: я написав статтю, до якої ви посилаєтесь. :) У будь-якому випадку, я сподіваюся, що це допоможе трохи краще пояснити битву.
Оновлення 13.04.2011
Ось три ідеальні приклади того, хто використовує "STL" для позначення всієї стандартної бібліотеки C ++. Мене продовжує бентежити, що так багато людей клянуться сліпими, що ніхто ніколи цього не робить, коли це очевидно бачити майже щодня.