जटिल कार्यक्रमों (जैसे पुनरावर्ती या चर-आकार डेटा संरचनाओं) के लिए किसी प्रकार का अप्रत्यक्ष उपयोग आवश्यक है। हालाँकि, संकेत के माध्यम से इस अप्रत्यक्ष को लागू करना आवश्यक नहीं है।
अधिकांश उच्च स्तरीय प्रोग्रामिंग भाषाएं (अर्थात असेंबली नहीं) काफी मेमोरी-सेफ हैं और अप्रतिबंधित पॉइंटर एक्सेस को अस्वीकार करती हैं। C परिवार यहाँ एक विषम है।
C, B से बाहर निकलता है जो कच्ची सभा के ऊपर एक बहुत पतली अमूर्तता थी। बी का एक ही प्रकार था: शब्द। इस शब्द का उपयोग पूर्णांक या सूचक के रूप में किया जा सकता है। जब पूरी मेमोरी को एकल सन्निहित सरणी के रूप में देखा जाता है, तो वे दो समतुल्य होती हैं। सी ने इसे अधिक लचीला दृष्टिकोण रखा और स्वाभाविक रूप से असुरक्षित सूचक अंकगणित का समर्थन करना जारी रखा। सी के पूरे प्रकार की प्रणाली एक बाद की बात है। मेमोरी एक्सेस का यह लचीलापन C को उसके प्राथमिक उद्देश्य के लिए बहुत उपयुक्त बनाता है: यूनिक्स ऑपरेटिंग सिस्टम को प्रोटोटाइप करना। बेशक यूनिक्स और सी काफी लोकप्रिय रहे, इसलिए कि सी का उपयोग उन अनुप्रयोगों में भी किया जाता है जहां स्मृति के लिए इस निम्न-स्तरीय दृष्टिकोण की वास्तव में आवश्यकता नहीं है।
अगर हम C से पहले आने वाली प्रोग्रामिंग भाषाओं को देखते हैं (जैसे फोरट्रान, अल्गोल बोलियाँ incl। पास्कल, कोबोल, लिस्प,…) उनमें से कुछ सी-लाइक पॉइंटर्स का समर्थन करते हैं। विशेष रूप से, अल्गोल डब्ल्यू के लिए 1965 में अशक्त सूचक अवधारणा का आविष्कार किया गया था। लेकिन उन भाषाओं में से किसी ने भी सी-लाइक, कुशल कम-अमूर्त प्रणाली भाषा होने की कोशिश नहीं की: फोरट्रान वैज्ञानिक कंप्यूटिंग के लिए था, अल्गोल ने बहुत उन्नत अवधारणाएं विकसित कीं, लिस्प था एक उद्योग-श्रेणी की भाषा की तुलना में एक शोध परियोजना के अधिक, और कोबोल को व्यावसायिक अनुप्रयोगों पर ध्यान केंद्रित किया गया था।
गार्बेज कलेक्शन 50 के दशक के उत्तरार्ध से, यानी सी (70 के दशक से पहले) तक मौजूद था। जीसी को ठीक से काम करने के लिए मेमोरी सुरक्षा की आवश्यकता होती है। C से पहले और बाद की भाषाओं ने GC को एक सामान्य सुविधा के रूप में इस्तेमाल किया। बेशक जो भाषा को बहुत अधिक जटिल और संभवतः धीमा बना देता है, जो मुख्य रूप से मेनफ्रेम के समय में ध्यान देने योग्य था। जीसी भाषाओं को अनुसंधान-उन्मुख (जैसे लिस्प, सिमुला, एमएल) और / या शक्तिशाली वर्कस्टेशन (जैसे स्मॉलकॉल) की आवश्यकता होती है।
सामान्य और जीसी भाषाओं में कंप्यूटिंग के साथ छोटे, अधिक शक्तिशाली कंप्यूटर विशेष रूप से अधिक लोकप्रिय हो गए। गैर-वास्तविक समय अनुप्रयोगों के लिए (और कभी-कभी तब भी) जीसी अब पसंदीदा तरीका है। लेकिन जीसी एल्गोरिदम भी गहन शोध का विषय रहा है। एक विकल्प के रूप में, जीसी के बिना बेहतर मेमोरी सुरक्षा को और भी विकसित किया गया है, खासकर पिछले तीन दशकों में: उल्लेखनीय नवाचार RAII और C ++ और Rust के जीवनकाल प्रणाली / उधार चेकर में स्मार्ट पॉइंटर्स हैं।
जावा ने मेमोरी-सुरक्षित प्रोग्रामिंग भाषा होने के कारण नवाचार नहीं किया: यह मूल रूप से GCed, मेमोरी सेफ स्मॉलटॉक भाषा के शब्दार्थों को ले गया और उन्हें C ++ के सिंटैक्स और स्टेटिक टाइपिंग के साथ जोड़ दिया। तब इसे एक बेहतर, सरल सी / सी ++ के रूप में विपणन किया गया था। लेकिन यह केवल सतही तौर पर C ++ वंशज है। जावा की कमी के संकेत C ++ डेटा मॉडल की अस्वीकृति की तुलना में स्मॉलटाक ऑब्जेक्ट मॉडल के लिए बहुत अधिक है।
इसलिए जावा, रूबी और सी # जैसी "आधुनिक" भाषाओं की व्याख्या सी की तरह कच्चे पॉइंटर्स की समस्याओं पर काबू पाने के रूप में नहीं की जानी चाहिए, बल्कि कई परंपराओं से ड्राइंग के रूप में देखी जानी चाहिए - सी सहित, लेकिन स्मालटाक, सिमुला जैसी सुरक्षित भाषाओं से भी, या लिस्प।