सी ++ के मानकीकृत होने से बहुत पहले के दिनों में "एसटीएल" अलेक्जेंडर स्टेपानोव द्वारा लिखा गया था। C ++ 80 के दशक से अस्तित्व में था, लेकिन जिसे अब हम " C ++ " कहते हैं " कहते हैं, वह ISO / IEC 14882: 2014 (और इससे पहले के संस्करण, जैसे ISO / IEC 14882: 2011) में मानकीकृत भाषा है।
STL को पहले से ही C ++ के लिए एक पुस्तकालय के रूप में व्यापक रूप से उपयोग किया जाता था, जो प्रोग्रामर को कंटेनरों, पुनरावृत्तियों और एल्गोरिदम तक पहुंच प्रदान करता था। जब मानकीकरण हुआ, भाषा समिति तैयार किया गया है के कुछ हिस्सों (जो भाषा मानक का हिस्सा है) के लिए सी ++ स्टैंडर्ड लाइब्रेरी बहुत बारीकी से एसटीएल मेल खाते हैं।
इन वर्षों में, कई लोग - जिनमें प्रमुख पुस्तक लेखक, और विभिन्न वेबसाइटें शामिल हैं - सी ++ मानक लाइब्रेरी को "एसटीएल" के रूप में संदर्भित करना जारी रखा है, इस तथ्य के बावजूद कि दो संस्थाएं अलग हैं और कुछ अंतर हैं। ये अंतर आगामी नए C ++ मानक में और भी अधिक स्पष्ट हैं, जिसमें विभिन्न विशेषताएं शामिल हैं और कुछ वर्गों को महत्वपूर्ण रूप से बदल देती हैं।
मूल एसटीएल को अब अक्सर "C ++ स्टैण्डर्ड टेम्प्लेट लाइब्रेरी का कार्यान्वयन" कहा जाता है (बल्कि वास्तविक इतिहास को पीछे की ओर?), उसी तरह से कि आपका Microsoft Visual Studio या GCC जहाजों को C ++ स्टैण्डर्ड लाइब्रेरी का कार्यान्वयन करता है। लेकिन "मानक टेम्पलेट लाइब्रेरी" और "मानक लाइब्रेरी" एक ही बात नहीं हैं।
लड़ाई इस बारे में है कि क्या वर्तमान मानक लाइब्रेरी को पूरे या आंशिक रूप से "एसटीएल" कहा जाना चाहिए, और / या यह मायने रखता है कि इसे क्या कहा जाता है।
"एसटीएल" के लिए
विचार का एक स्कूल है जो कहता है कि हर कोई अब जानता है कि "एसटीएल" का मतलब मानक पुस्तकालय है, जैसे कि अब हर कोई जानता है कि "सी ++" आईएसओ-मानकीकृत भाषा है।
इसमें वे लोग भी शामिल हैं जो मानते हैं कि यह वास्तव में मायने नहीं रखता में तब तक जब तक सभी पक्षों को यह समझ नहीं आता कि किस बारे में बात की जा रही है।
यह एक शब्द है जो जानवर की प्रकृति से और भी अधिक प्रचलित है, जिसमें से अधिकांश "++" के रूप में ज्ञात C ++ सुविधा का भारी उपयोग करता है।
"C ++ स्टैंडर्ड लाइब्रेरी" (या stdlib) के लिए
हालांकि, विचार का एक और स्कूल है - जिसे मैं सदस्यता देता हूं - जो कहता है कि यह भ्रामक है। पहली बार C ++ सीखने वाले लोग ऐसा नहीं करते हैं इस अंतर को जानते हैं, और छोटी भाषा के अंतर को नोटिस नहीं कर सकते हैं।
उस लेख के लेखक का सामना करना पड़ा लोगों का मानना है कि पूरे सी ++ स्टैंडर्ड लाइब्रेरी कई बार है है विशेषताएं है कि एसटीएल का ही एक हिस्सा कभी नहीं थे सहित एसटीएल,। "एसटीएल" के अधिकांश मुखर प्रस्तावक, इसके विपरीत, जानते हैं कि वे वास्तव में इसके द्वारा क्या मतलब रखते हैं और यह मानने से इनकार करते हैं कि हर कोई "इसे प्राप्त नहीं करता है"। स्पष्ट रूप से, शब्द का उपयोग एक समान नहीं है।
इसके अलावा, कुछ एसटीएल जैसे पुस्तकालय हैं जो वास्तव में मूल एसटीएल के कार्यान्वयन हैं, न कि सी ++ मानक पुस्तकालय। कुछ समय पहले तक, STLPort उनमें से एक था (और वहां भी, भ्रम समाप्त हो गया !)।
इसके अलावा, सी ++ मानक पाठ "एसटीएल" कहीं भी शामिल नहीं है, और कुछ लोगों को आदतन वाक्यांशों को रोजगार की तरह "एसटीएल है शामिल है, जो तरह से गलत है सी ++ स्टैंडर्ड लाइब्रेरी में"।
यह मेरा विश्वास है कि इस तरह से शब्द के उपयोग का प्रचार जारी रखना सिर्फ गलतफहमी को हमेशा के लिए ले जाएगा। काश, यह चीजों को बदलने की कोशिश करने के लिए पूरी तरह से प्रति-उत्पादक हो सकता है, भले ही यह बेहतर के लिए हो। हम हमेशा के लिए दोहरे अर्थों के साथ फंस सकते हैं।
निष्कर्ष
मैं सराहना करता हूं कि यह पोस्ट थोड़ा सा पक्षपाती रहा है: मैंने वह लेख लिखा है जिससे आप जुड़े हुए हैं। :) वैसे भी, मुझे उम्मीद है कि यह लड़ाई को थोड़ा बेहतर ढंग से समझाने में मदद करता है।
अपडेट 13/04/2011
यहाँ पर किसी ऐसे व्यक्ति के तीन आदर्श उदाहरण हैं जो पूरे C ++ Standard Library को संदर्भित करने के लिए "STL" का उपयोग कर रहा है। यह मुझे चकित करना जारी रखता है कि इतने सारे लोग अंधा कसम खाते हैं कि कोई भी कभी भी ऐसा नहीं करता है, जब यह लगभग दैनिक आधार पर देखने के लिए सादे है।