কোনও ধরণের স্ট্যাক ব্যবহার না করে ফাংশন কল শব্দার্থক প্রয়োগ সম্ভব নয়। কেবল ওয়ার্ড গেমস খেলানো সম্ভব (উদাহরণস্বরূপ এর জন্য আলাদা নাম ব্যবহার করুন, যেমন "ফিলো রিটার্ন বাফার")।
এমন কোনও কিছু ব্যবহার করা সম্ভব যা ফাংশন কল শব্দার্থবিজ্ঞানগুলি প্রয়োগ করে না (উদাহরণস্বরূপ ধারাবাহিকতা পাসিং স্টাইল, অভিনেতা) এবং তারপরে ফাংশন কল শব্দার্থিকগুলি তৈরি করতে পারে; তবে এর অর্থ ফাংশন ফিরে আসার সময় নিয়ন্ত্রণটি কোথায় পাস হবে তা ট্র্যাক করতে কিছু ধরণের ডেটা স্ট্রাকচার যুক্ত করা এবং সেই ডেটা স্ট্রাকচারটি এক ধরণের স্ট্যাক (বা আলাদা নাম / বিবরণের স্ট্যাক) হবে।
কল্পনা করুন আপনার অনেকগুলি ক্রিয়া রয়েছে যা প্রত্যেকে একে অপরকে কল করতে পারে। রান-টাইমে প্রতিটি ফাংশনটি অবশ্যই জানতে হবে যখন ফাংশনটি প্রস্থান করবে তখন কোথায় ফিরে আসতে হবে। যদি first
কল হয় second
তবে আপনার কাছে রয়েছে:
second returns to somewhere in first
তারপরে, যদি second
কলগুলি third
আপনার কাছে থাকে:
third returns to somewhere in second
second returns to somewhere in first
তারপরে, যদি third
কলগুলি fourth
আপনার কাছে থাকে:
fourth returns to somewhere in third
third returns to somewhere in second
second returns to somewhere in first
প্রতিটি ফাংশন যেমন বলা হয়, আরও "কোথায় ফিরে" তথ্য অবশ্যই কোথাও সংরক্ষণ করতে হবে।
যদি কোনও ফাংশন ফিরে আসে তবে তার "কোথায় ফিরবেন" তথ্য ব্যবহৃত হয় এবং এর আর প্রয়োজন হয় না। উদাহরণস্বরূপ, যদি fourth
আবার কোথাও ফিরে আসে third
তবে "কোথায় ফিরে আসবেন" তথ্যের পরিমাণ হয়ে যাবে:
third returns to somewhere in second
second returns to somewhere in first
মূলত; "ফাংশন কল শব্দার্থবিজ্ঞান" বোঝায় যে:
- আপনার অবশ্যই "কোথায় ফিরবেন" তথ্য থাকতে হবে
- ফাংশনগুলি বলা হয় এবং ফাংশনগুলি ফিরে আসে যখন হ্রাস করা হয় তথ্যের পরিমাণ
- "কোথায় ফিরে যেতে হবে" তথ্য সংরক্ষণ করা তথ্যগুলির প্রথম অংশটি "কোথায় ফিরে যেতে হবে" তথ্য বাতিল করা হবে the
এটি একটি FILO / LIFO বাফার বা একটি স্ট্যাকের বর্ণনা দেয়।
আপনি যদি এক ধরণের গাছ ব্যবহার করার চেষ্টা করেন তবে গাছের প্রতিটি নোডে কখনও একাধিক বাচ্চা থাকতে পারে না। দ্রষ্টব্য: একাধিক বাচ্চাদের সাথে একটি নোড কেবল তখনই ঘটতে পারে যখন কোনও ফাংশন একই সাথে 2 বা ততোধিক ফাংশন কল করে , যার জন্য কিছু ধরণের সম্মতি প্রয়োজন (যেমন থ্রেড, কাঁটাচামচ () ইত্যাদি) এবং এটি "ফাংশন কল শব্দার্থক" হবে না। যদি গাছের প্রতিটি নোডের একাধিক বাচ্চা না থাকে; তারপরে সেই "ট্রি" কেবলমাত্র একটি ফিলো / লাইফো বাফার বা স্ট্যাক হিসাবে ব্যবহৃত হবে; এবং এটি কেবল একটি ফিলো / লাইফো বাফার বা স্ট্যাক হিসাবে ব্যবহৃত হয়েছে বলে দাবি করা ন্যায়সঙ্গত যে "গাছ" একটি স্ট্যাক (এবং পার্থক্য কেবল ওয়ার্ড গেমস এবং / বা বাস্তবায়ন বিশদ))
"ফাংশন কল শব্দার্থবিজ্ঞান" বাস্তবায়নের জন্য ধারণাযুক্তভাবে ব্যবহার করা যেতে পারে এমন কোনও অন্যান্য ডেটা স্ট্রাকচারের ক্ষেত্রেও এটি একই প্রযোজ্য - এটি স্ট্যাক হিসাবে ব্যবহৃত হবে (এবং কেবলমাত্র পার্থক্যটি ওয়ার্ড গেমস এবং / বা প্রয়োগের বিবরণ); যতক্ষণ না এটি "ফাংশন কল শব্দার্থক" ভঙ্গ করে। দ্রষ্টব্য: আমি পারলে অন্যান্য ডেটা স্ট্রাকচারের জন্য উদাহরণ সরবরাহ করতাম তবে আমি অন্য কোনও কাঠামোর কথা ভাবতে পারি না যা সামান্য প্রশ্রয়জনক।
অবশ্যই কোনও স্ট্যাক কীভাবে প্রয়োগ করা হয় তা বাস্তবায়ন বিশদ। এটি মেমরির একটি ক্ষেত্র হতে পারে (যেখানে আপনি "বর্তমান স্ট্যাক শীর্ষের উপর নজর রাখেন") এটি কোনওভাবে সংযুক্ত তালিকার হতে পারে (যেখানে আপনি "তালিকার বর্তমান প্রবেশের উপর নজর রাখেন"), বা এটি কিছুতে প্রয়োগ করা যেতে পারে অন্য মাধ্যম. হার্ডওয়্যার অন্তর্নির্মিত সমর্থন আছে কি না তাও গুরুত্বপূর্ণ নয়।
দ্রষ্টব্য: যে কোনও মুহুর্তে যদি কেবলমাত্র একটি পদ্ধতির প্রার্থনা সক্রিয় হতে পারে; তারপরে আপনি স্থিতিশীলভাবে "কোথায় ফিরে আসবেন" তথ্যের জন্য স্থান বরাদ্দ করতে পারেন। এটি এখনও একটি স্ট্যাক (যেমন FILO / LIFO উপায়ে ব্যবহৃত স্ট্যাটিকালি বরাদ্দ এন্ট্রিগুলির একটি লিঙ্কযুক্ত তালিকা)।
এছাড়াও লক্ষ করুন যে কিছু জিনিস রয়েছে যা "ফাংশন কল শব্দার্থক" অনুসরণ করে না। এই জিনিসগুলির মধ্যে রয়েছে "সম্ভাব্যভাবে খুব আলাদা শব্দার্থবিজ্ঞান" (উদাহরণস্বরূপ ধারাবাহিকতা পাসিং, অভিনেতার মডেল); এবং এর মধ্যে "ফাংশন কল শব্দার্থক" এর সাধারণ এক্সটেনশানগুলি যেমন সম্মতি (থ্রেড, ফাইবার, যাই হোক না কেন), setjmp
/ longjmp
, ব্যতিক্রম হ্যান্ডলিং ইত্যাদি অন্তর্ভুক্ত রয়েছে includes