জটিল প্রোগ্রামগুলির জন্য (যেমন পুনরাবৃত্ত বা পরিবর্তনশীল-আকারের ডেটা স্ট্রাকচার) জন্য কিছু ধরণের ইন্ডিয়ারেশন প্রয়োজন। যাইহোক, পয়েন্টারগুলির মাধ্যমে এই নির্দেশনাটি প্রয়োগ করা প্রয়োজন হবে না।
বেশিরভাগ উচ্চ-স্তরের প্রোগ্রামিং ল্যাঙ্গুয়েজগুলি (যেমন সমাবেশ নয়) মোটামুটি স্মৃতি-সুরক্ষিত এবং সীমাহীন পয়েন্টার অ্যাক্সেসকে অস্বীকার করে। সি পরিবারটি এখানে বিজোড় one
সি বি এর বাইরে বিবর্তিত হয়েছিল যা কাঁচা সমাবেশে খুব পাতলা বিমূর্ততা ছিল। বি এর একক প্রকার ছিল: শব্দটি। শব্দটি একটি পূর্ণসংখ্যা বা পয়েন্টার হিসাবে ব্যবহার করা যেতে পারে। যখন পুরো স্মৃতিটি একক সংলগ্ন অ্যারে হিসাবে দেখা হয় তখন এই দুটি সমতুল্য। সি এটি বরং নমনীয় পন্থা ধরে রেখেছে এবং সহজাতভাবে অনিরাপদ পয়েন্টার গাণিতিকটিকে সমর্থন করে চলেছে। সি এর পুরো টাইপ সিস্টেমটি বেশি চিন্তাভাবনা করে। মেমরি অ্যাক্সেসের এই নমনীয়তাটি সি এর প্রাথমিক উদ্দেশ্যে খুব উপযুক্ত করে তুলেছিল: ইউনিক্স অপারেটিং সিস্টেমের প্রোটোটাইপিং। অবশ্যই ইউনিক্স এবং সি বেশ জনপ্রিয় হয়ে উঠল, যাতে মেমরির ক্ষেত্রে এই নিম্ন-স্তরের পদ্ধতির প্রয়োজন হয় না এমন অ্যাপ্লিকেশনগুলিতেও সি ব্যবহার করা হয়।
আমরা যদি সি এর আগে আগত প্রোগ্রামিং ভাষাগুলির দিকে নজর রাখি (যেমন, ফোর্টরান, আলগোল উপভাষা সহ Pas উল্লেখযোগ্যভাবে, নাল পয়েন্টার ধারণাটি 1965 সালে আলগোল ডাব্লু এর জন্য উদ্ভাবিত হয়েছিল। তবে সেগুলির কোনও ভাষাই সি-জাতীয়, দক্ষ নিম্ন-বিমূর্ত সিস্টেমের ভাষা হতে চেষ্টা করেনি: ফোর্টরানকে বৈজ্ঞানিক কম্পিউটিংয়ের জন্য বোঝানো হয়েছিল, আলগোল বেশ কিছু উন্নত ধারণা তৈরি করেছিল, লিস্প ছিল শিল্প-গ্রেড ভাষার চেয়ে গবেষণার প্রকল্পের আরও বেশি, এবং কোবোল ব্যবসায়িক অ্যাপ্লিকেশনগুলিতে মনোনিবেশিত হয়েছিল।
আবর্জনা সংগ্রহ 50 এর দশকের শেষের দিক থেকে, অর্থাৎ সি এর আগে (70 এর দশকের শুরু থেকেই) বিদ্যমান ছিল। জিসির সঠিকভাবে কাজ করার জন্য মেমরির সুরক্ষা প্রয়োজন। সি এর আগে ও পরে ভাষাগুলি জিসিকে একটি সাধারণ বৈশিষ্ট্য হিসাবে ব্যবহার করেছিল। অবশ্যই এটি একটি ভাষাকে আরও জটিল এবং সম্ভবত ধীর করে তোলে যা মেনফ্রেমের সময় বিশেষত লক্ষণীয় ছিল। জিসি ভাষাগুলি গবেষণা-ভিত্তিক হয়ে থাকে (উদাঃ লিস্প, সিমুলা, এমএল) এবং / অথবা শক্তিশালী ওয়ার্কস্টেশনগুলির প্রয়োজন (যেমন ছোট্ট টাল্ক))
ছোট এবং আরও শক্তিশালী কম্পিউটারগুলির সাথে সাধারণ এবং জিসি ভাষাগুলিতে বিশেষত কম্পিউটার কম্পিউটিং আরও জনপ্রিয় হয়ে উঠেছে। অ-রিয়েল টাইম অ্যাপ্লিকেশনগুলির জন্য (এবং কখনও কখনও এমনকি তখনও) জিসি এখন পছন্দের পদ্ধতির। তবে জিসি অ্যালগরিদমগুলি তীব্র গবেষণার বিষয়ও ছিল। বিকল্প হিসাবে, জিসি ছাড়াই আরও ভাল মেমরির সুরক্ষা আরও বিকাশ করা হয়েছে, বিশেষত গত তিন দশকে: উল্লেখযোগ্য উদ্ভাবনগুলি হ'ল সি ++ এবং মরিচের আজীবন সিস্টেম / ধার ধারক হিসাবে স্মার্ট পয়েন্টার।
জাভা একটি মেমোরি-নিরাপদ প্রোগ্রামিং ভাষা হয়ে উদ্ভাবন করেনি: এটি মূলত জিসিড, মেমরি নিরাপদ স্মলটালক ভাষার শব্দার্থ গ্রহণ করেছে এবং তাদের সি ++ এর বাক্য গঠন এবং স্থির টাইপিংয়ের সাথে সংযুক্ত করে। এরপরে এটি আরও ভাল, সরল সি / সি ++ হিসাবে বিপণন করা হয়েছিল। তবে এটি কেবলমাত্র পৃষ্ঠের সি ++ বংশধর। জাভাটির পয়েন্টারগুলির অভাব সি ++ ডেটা মডেলকে প্রত্যাখ্যান করার চেয়ে স্মার্টটাক অবজেক্ট মডেলকে অনেক বেশি owedণী।
সুতরাং জাভা, রুবি, এবং সি # এর মতো "আধুনিক" ভাষাগুলিকে সি এর মতো কাঁচা পয়েন্টারগুলির সমস্যা কাটিয়ে ওঠা হিসাবে ব্যাখ্যা করা উচিত নয়, তবে এটি সি সহ অনেকগুলি traditionsতিহ্যগুলি থেকে আঁকানো হিসাবে দেখা উচিত, তবে ছোট্ট টাল্ক, সিমুলা, র মতো সুরক্ষিত ভাষা থেকেও নেওয়া উচিত, বা লিস্প।