স্ট্যাক-ভিত্তিক ভাষায় কি আবর্জনা সংগ্রহের প্রয়োজন আছে?


16

স্ট্যাক-ভিত্তিক ভাষায় আবর্জনা সংগ্রহের (জিসি) প্রয়োজন কী? ফোর্থ বা আরপিএলের মতো ভাষায় ( এইচপি ক্যালকুলেটরগুলিতে ) কি আবর্জনা সংগ্রহের দরকার আছে?

আমি ভাবব, যেহেতু আউটপুটটি স্ট্যাকের বাইরে পপ হয়েছে, কোনও প্রয়োজন হবে না। আমি কিছু অনুপস্থিত করছি?

উত্তর:


14

জিসি সাধারণত গাদাতে বরাদ্দকৃত স্মৃতিতে প্রয়োগ করা হয়। আমি ফোরথ বা আরপিএলের সাথে পরিচিত নই, তবে যদি কোনও গাদা না থাকে এবং পরিবর্তে সমস্ত কিছু বিশ্বব্যাপী স্ট্যাকে সঞ্চিত থাকে, তবে জিসির করার মতো কিছুই নেই।


2
প্রথম দিনগুলিতে আমি যে ফোর্থ প্রোগ্রামগুলি পড়েছিলাম তার সাধারণ মেমরির ব্যবহারের ধরণটি ছিল তারা সমাবেশ প্রোগ্রামগুলির মতো ছিল, এতে তারা প্রি-অর্ঞ্জিত স্ট্যাটিক গ্লোবাল ডেটা ঠিকানা ব্যবহার করেছিল। এটি কাজ করে কারণ ফোর্থের স্ট্যাক এবং নির্দিষ্ট ঠিকানাগুলির মধ্যে ডেটা স্থানান্তর করার ক্ষমতা রয়েছে। আরও এটিতে ঠিকানাগুলি গণনা করার ক্ষমতা রয়েছে। সুতরাং এটি একটি গাদা ধারণা ভিত্তিক একটি বরাদ্দ গ্রন্থাগার তৈরি করা সম্ভব হবে এবং বরাদ্দ গ্রন্থাগারের গাদা সীমাবদ্ধতার সাথে সীমাবদ্ধ করার জন্য কিছু উপায় প্রয়োজন হবে। যদি কোনও চতুর্থ ব্যবহারকারী এই পথে নামেন তবে তারা অনুগ্রহ করে জিসিকে চান এবং প্রয়োগ করতে পারেন।
কার্ডিফ স্পেস ম্যান 0

13

হ্যাঁ আপনি ঠিক. তবে স্ট্যাক ভিত্তিকতা পুরো গল্পের একটি অংশ। উদাহরণস্বরূপ, জাভা বাইটকোড ইন্টারপ্রেটারটিও স্ট্যাক-ভিত্তিক (সংকলিত কোড কাজ করে - দক্ষতার কারণে - ভিন্নভাবে)। এটি আমাদের বলে, যে কোনও ভাষা স্ট্যাকের ভাষায় রূপান্তরিত হতে পারে।

গুরুত্বপূর্ণ বিষয়গুলি হ'ল স্ট্যাকের বাইরের অবজেক্টস, যারা বর্তমান পদ্ধতির কার্যকরকরণকে বহিষ্কার করতে পারে। যতক্ষণ না ভাষার মতো কিছুই থাকে না mallocবা থাকে না new, ততক্ষণ এমন কোনও বস্তু নেই এবং আপনার কোনও deleteজিসি বা দরকার নেই ।

একটি ভাষার অভাব ডায়নামিক মেমরির বরাদ্দ এর কার্যকারিতাটিতে যথেষ্ট সীমাবদ্ধ।


নিশ্চিত না যে আমি শেষ লাইনের সাথে একমত, জাভা বাইটকোড কি কার্যকর নয়?
জে কে।

@ জে কে।, জাভা বাইটকোডে গতিশীল মেমরি বরাদ্দ রয়েছে।
পিটার টেলর

1
আসলে, বেশ কয়েকটি সাধারণ-উদ্দেশ্যমূলক ভাষা রয়েছে যা স্ট্যাক ভিত্তিক based কটাক্ষপাত আছে factorcode.org
ইয়াম Marcovic

1
আসলে ফ্যাক্টরটি হ'ল আবর্জনা সংগ্রহ করা
Andrea

1

ভাষা যদি অন্তর্নিহিত গতিশীল ডেটা স্ট্রাকচারকে সমর্থন করে তবে আবর্জনা সংগ্রহের প্রয়োজন। আপনি সি এর স্তর ছাড়িয়ে কিছু করতে চাইলে কোনটি প্রায় প্রয়োজন, এগুলি ছাড়া আপনি কেবল স্থির আকারের ডেটা স্ট্রাকচার এবং মেমরি নিজে পরিচালনা করার সাথে আটকে আছেন। এটিই মূল ফোর্থ অবশ্যই করে তবে আপনি কেবলমাত্র নিম্ন-স্তরের সিস্টেমগুলির কোডিং না করে আপনি আজ এটি করতে চাইবেন সম্ভবত তা নয়।


1

ভাষা স্ট্যাক বরাদ্দের পরিবর্তে স্থির বরাদ্দ ব্যবহার করে তবে আবর্জনা সংগ্রহের প্রয়োজন নেই। উদাহরণস্বরূপ, -s (স্ট্যাটিক স্টোরেজ) বিকল্পের সাথে ফোর্টরান 77 প্রোগ্রামটি শুরু হওয়ার সাথে সাথে সমস্ত মেমরি বরাদ্দ করে, সুতরাং রানটাইম মুক্ত হওয়ার জন্য কোনও মেমরি বরাদ্দ হয় না। যদিও এটি কিছুটা শৃঙ্খলা নেয়, প্রোগ্রামগুলি লেখা সম্ভব হয়, বিশেষত স্ট্যাটিক মেমরি বরাদ্দ ব্যবহারের জন্য সিমুলেশনগুলি। স্ট্যাটিক বরাদ্দ যেকোন মেমরি ফাঁস অপসারণ করে এবং ভয়ঙ্কর ক্যাশে পারফরম্যান্সের দিকে নিয়ে যায় যেহেতু সংকলক ক্যাশে লোড করতে হবে তা নির্ধারণ করতে স্থির বিশ্লেষণ ব্যবহার করতে পারে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.