আপনি যখন মান (সংখ্যার, স্ট্রিং, জটিল ডেটা স্ট্রাকচার) একটি পরিচয় এবং সময় পয়েন্টের সাথে যুক্ত করেন তখন আপনার অবস্থা থাকে state
উদাহরণস্বরূপ, 10 নম্বর নিজে থেকে কোনও রাষ্ট্রের প্রতিনিধিত্ব করে না: এটি কেবল একটি সংজ্ঞায়িত সংখ্যা এবং সর্বদা নিজেই থাকবে: প্রাকৃতিক সংখ্যা ১০। অন্য উদাহরণ হিসাবে, স্ট্রিং "হেল্লো" পাঁচটি অক্ষরের অনুক্রম এবং এবং এটি এতে অন্তর্ভুক্ত অক্ষরগুলি এবং সেগুলির ক্রম অনুসারে সম্পূর্ণরূপে বর্ণনা করা হয়। এখন থেকে পাঁচ মিলিয়ন বছরে, "HELLO" স্ট্রিংটি এখনও "HELLO" স্ট্রিংটি হবে: খাঁটি মান।
রাষ্ট্র বলতে গেলে আপনাকে এমন একটি পৃথিবী বিবেচনা করতে হবে যেখানে এই খাঁটি মানগুলি কোনও ধরণের সত্তার সাথে সম্পর্কিত যা একটি পরিচয় । পরিচয় একটি আদিম ধারণা: এর অর্থ অন্য যে কোনও সম্পত্তি থাকুক না কেন আপনি দুটি জিনিস আলাদা করতে পারবেন। উদাহরণস্বরূপ, একই মডেলের দুটি গাড়ি, একই রঙ, ... দুটি আলাদা গাড়ি।
পরিচয়ের সাথে এই জিনিসগুলি দেওয়া, আপনি খাঁটি মান দ্বারা বর্ণিত, তাদের সাথে সম্পত্তি যুক্ত করতে পারেন। উদাহরণস্বরূপ, আমার গাড়িটি নীল হওয়ার সম্পত্তি রয়েছে। আপনি এই ঘটনাটি জুড়ে যুক্ত করে বর্ণনা করতে পারেন
("colour", "blue")
আমার গাড়িতে জুড়ি ("রঙ", "নীল") একটি নির্দিষ্ট গাড়ির অবস্থা বর্ণনা করার জন্য একটি খাঁটি মান ।
রাজ্য কেবল একটি নির্দিষ্ট সত্তার সাথেই নয়, সময়ের সাথে সাথে একটি নির্দিষ্ট পয়েন্টের সাথেও যুক্ত। সুতরাং, আপনি বলতে পারেন যে আজ, আমার গাড়ী স্টেট আছে
("colour", "blue")
কাল আমি এটি কালো রঙে পুনরায় রঙ করব এবং নতুন রাষ্ট্র হবে
("colour", "black")
মনে রাখবেন যে কোনও সত্তার রাষ্ট্র পরিবর্তন করতে পারে তবে সংজ্ঞা অনুসারে এর পরিচয় পরিবর্তন হয় না । ঠিক আছে, যতক্ষণ না সত্তার অস্তিত্ব রয়েছে অবশ্যই: একটি গাড়ি তৈরি এবং ধ্বংস হতে পারে তবে এটি তার জীবনকালে এটির পরিচয় বজায় রাখবে। এমন কোনও কিছুর পরিচয় সম্পর্কে কথা বলার কোনও মানে হয় না যা এখনও অবধি নেই / আরও কিছু নেই।
প্রদত্ত সত্তার সাথে সংযুক্ত বৈশিষ্ট্যের মানগুলি যদি সময়ের সাথে পরিবর্তিত হয়, আপনি বলবেন যে সেই সত্তার অবস্থা পরিবর্তনযোগ্য । অন্যথায়, আপনি বলছেন যে রাজ্য অপরিবর্তনীয় ।
সর্বাধিক প্রচলিত বাস্তবায়ন হ'ল কোনও সত্তার রাজ্যকে কিছু ধরণের ভেরিয়েবল (গ্লোবাল ভেরিয়েবল, অবজেক্ট মেম্বার ভেরিয়েবল) এ সংরক্ষণ করা, অর্থাত্ একটি রাষ্ট্রের বর্তমান স্ন্যাপশট সংরক্ষণ করা । মিউটেবল স্থিতির পরে অ্যাসাইনমেন্ট ব্যবহার করে প্রয়োগ করা হয়: প্রতিটি অ্যাসাইনমেন্ট ক্রিয়াকলাপটি পূর্বের স্ন্যাপশটের পরিবর্তে একটি নতুন তৈরি করে। এই সমাধানটি সাধারণত স্ন্যাপশটটি সঞ্চয় করতে মেমরির অবস্থানগুলি ব্যবহার করে locations মেমরির অবস্থানটি ওভাররাইটিং করা একটি ধ্বংসাত্মক ক্রিয়া যা একটি নতুন স্ন্যাপশটের পরিবর্তে। ( এখানে আপনি এই অবস্থান-ভিত্তিক প্রোগ্রামিং পদ্ধতির সম্পর্কে একটি আকর্ষণীয় আলোচনা সন্ধান করতে পারেন ))
একটি বিকল্প হ'ল স্রোতের (সম্ভবত অসীম অনুক্রম) হিসাবে সত্তার পরবর্তী অবস্থাগুলি (ইতিহাস) দেখার জন্য, যেমন এসআইসপির অধ্যায় 3 দেখুন । এই ক্ষেত্রে, প্রতিটি স্ন্যাপশট একটি পৃথক মেমরির স্থানে সংরক্ষণ করা হয় এবং প্রোগ্রাম একই সাথে বিভিন্ন স্ন্যাপশট পরীক্ষা করতে পারে। অপ্রয়োজনীয় স্ন্যাপশটগুলি আবশ্যক হলে আবর্জনা সংগ্রহ করা যেতে পারে।
দুটি পদ্ধতির সুবিধা / অসুবিধা
- পদ্ধতির ১ কম মেমরি গ্রহণ করে এবং এতে কোনও অনুলিপি জড়িত না হওয়ায় আরও দক্ষতার সাথে একটি নতুন স্ন্যাপশট তৈরি করতে দেয়।
- পন্থা 1 স্পষ্টভাবে নতুন প্রোগ্রামকে কোনও প্রোগ্রামের সমস্ত অংশের দিকে রেফারেন্সযুক্তভাবে ঠেলে দেয়, পদ্ধতির 2 এর পর্যবেক্ষকদের কাছে একটি স্ন্যাপশট ধাক্কা দেওয়ার জন্য কিছু ব্যবস্থা প্রয়োজন, যেমন কোনও ইভেন্টের আকারে।
- পন্থা 2 অসঙ্গতিপূর্ণ রাষ্ট্রীয় ত্রুটিগুলি রোধ করতে সহায়তা করতে পারে (উদাহরণস্বরূপ আংশিক রাষ্ট্রের আপডেট): একটি স্পষ্টকৃত ফাংশন সংজ্ঞায়িত করে যা একটি পুরানো একটি থেকে নতুন রাষ্ট্রের উত্পাদন করে এটি সময়ে বিভিন্ন পয়েন্টে উত্পাদিত স্ন্যাপশটের মধ্যে পার্থক্য করা আরও সহজ।
- অ্যাপ্রোচ 2 আরও মডিউলার কারণ এটি সহজেই রাজ্য সম্পর্কে স্বতঃস্ফূর্ত দৃষ্টিভঙ্গি তৈরি করতে দেয় যা স্বয়ং রাজ্য থেকে স্বতন্ত্র, যেমন
map
এবং উচ্চতর অর্ডার ফাংশন যেমন এবং ব্যবহার করে filter
।