Global variable
কম্পিউটার প্রোগ্রামিং-এ, একটি বৈশ্বিক পরিবর্তনশীল বৈশ্বিক সুযোগ সহ একটি পরিবর্তনশীল, যার অর্থ এটি পুরো প্রোগ্রাম জুড়ে দৃশ্যমান (তাই অ্যাক্সেসযোগ্য), যদি না ছায়া থাকে। সমস্ত গ্লোবাল ভেরিয়েবলের সেট গ্লোবাল এনভায়রনমেন্ট বা গ্লোবাল স্টেট নামে পরিচিত। সংকলিত ভাষাগুলিতে, গ্লোবাল ভেরিয়েবলগুলি সাধারণত স্ট্যাটিক ভেরিয়েবল হয়, যার ব্যাপ্তি (জীবনকাল) প্রোগ্রামের পুরো রানটাইম, যদিও ব্যাখ্যা করা ভাষাগুলিতে (কমান্ড-লাইন ইন্টারপ্রেটার সহ), গ্লোবাল ভেরিয়েবলগুলি সাধারণত গতিশীলভাবে বরাদ্দ করা হয় যখন ঘোষণা করা হয়, কারণ সেগুলি সময়ের আগে জানা যায় না। কিছু ভাষায়, সমস্ত পরিবর্তনশীল বৈশ্বিক, বা ডিফল্টরূপে বৈশ্বিক, যেখানে বেশিরভাগ আধুনিক ভাষায় পরিবর্তনশীলের সীমিত সুযোগ রয়েছে, সাধারণত আভিধানিক সুযোগ, যদিও বৈশ্বিক পরিবর্তনশীল প্রায়শই প্রোগ্রামের শীর্ষ স্তরে একটি পরিবর্তনশীল ঘোষণা করে পাওয়া যায়। অন্যান্য ভাষায়, তবে, বৈশ্বিক পরিবর্তনশীলগুলির অস্তিত্ব নেই; এগুলি সাধারণত মডুলার প্রোগ্রামিং ভাষা যা একটি মডিউল কাঠামো প্রয়োগ করে, বা শ্রেণী-ভিত্তিক অবজেক্ট-ওরিয়েন্টেড প্রোগ্রামিং ভাষা যা একটি শ্রেণী কাঠামো প্রয়োগ করে। বৈশ্বিক পরিবর্তনশীলগুলির সঙ্গে মিথস্ক্রিয়া প্রক্রিয়াগুলিকে বৈশ্বিক পরিবেশ বলা হয় (বৈশ্বিক অবস্থাও দেখুন)। বৈশ্বিক পরিবেশের দৃষ্টান্তটি স্থানীয় পরিবেশের দৃষ্টান্তের সাথে বিপরীত, যেখানে সমস্ত চলকগুলি কোনও ভাগ করা স্মৃতি ছাড়াই স্থানীয় (এবং তাই সমস্ত মিথস্ক্রিয়াকে বার্তা প্রেরণের জন্য পুনরায় পরিচালিত করা যেতে পারে)। গ্লোবাল ভেরিয়েবলগুলি কোডের এমন বিভাগগুলির মধ্যে তথ্য প্রেরণ করতে ব্যাপকভাবে ব্যবহৃত হয় যা সমবর্তী থ্রেড এবং সিগন্যাল হ্যান্ডলারের মতো কলার/ক্যালি সম্পর্ক ভাগ করে না। ভাষাগুলি (সি সহ) যেখানে প্রতিটি ফাইল একটি অন্তর্নিহিত নামস্থানকে সংজ্ঞায়িত করে, বিশ্বব্যাপী নামস্থান সহ ভাষাগুলির সাথে দেখা বেশিরভাগ সমস্যা দূর করে যদিও কিছু সমস্যা সঠিক এনক্যাপসুলেশন ছাড়াই অব্যাহত থাকতে পারে। যথাযথ লকিং ছাড়া (যেমন একটি মিউটেক্সের সাথে), সুরক্ষিত স্মৃতিতে শুধুমাত্র পড়ার মান ব্যতীত গ্লোবাল ভেরিয়েবল ব্যবহার করে কোড থ্রেড-নিরাপদ হবে না। এনভায়রনমেন্ট ভেরিয়েবল হল কিছু অপারেটিং সিস্টেম দ্বারা প্রদত্ত একটি সুবিধা। ওএসের শেলের মধ্যে (ইউনিক্সে কেএসএইচ, লিনাক্সে ব্যাশ, ডসে COMMAND.COM এবং উইন্ডোজে CMD.EXE) এগুলি এক ধরনের পরিবর্তনশীলঃ উদাহরণস্বরূপ, ইউনিক্স এবং সম্পর্কিত সিস্টেমে একটি সাধারণ পরিবর্তনশীল একটি পরিবেশ পরিবর্তনশীল হয়ে ওঠে যখন রপ্তানি কীওয়ার্ড ব্যবহার করা হয়। শেল ব্যতীত অন্য প্রোগ্রাম কোডগুলিকে এপিআই কলের মাধ্যমে অ্যাক্সেস করতে হয়, যেমন গেটএনভি () এবং সেটএনভি ()। তারা যে প্রক্রিয়ায় সেট করা হয়েছিল তার স্থানীয়। তার মানে যদি আমরা দুটি টার্মিনাল উইন্ডো (দুটি ভিন্ন প্রক্রিয়া চলমান শেল) খুলি এবং একটি উইন্ডোতে পরিবেশ পরিবর্তনশীলের মান পরিবর্তন করি, তবে সেই পরিবর্তনটি অন্য উইন্ডোতে দেখা যাবে না। যখন একটি শিশু প্রক্রিয়া তৈরি করা হয়, তখন এটি সমস্ত পরিবেশগত পরিবর্তনশীল এবং মূল প্রক্রিয়া থেকে তাদের মান উত্তরাধিকার সূত্রে পায়। সাধারণত, যখন কোনও প্রোগ্রাম অন্য কোনও প্রোগ্রামে কল করে, তখন এটি প্রথমে কাঁটাচামচ করে একটি শিশু প্রক্রিয়া তৈরি করে, তারপরে শিশুটি প্রয়োজন অনুসারে পরিবেশকে সামঞ্জস্য করে এবং শেষ পর্যন্ত শিশুটি যে প্রোগ্রামটি ডাকবে তার সাথে নিজেকে প্রতিস্থাপন করে। শিশু প্রক্রিয়াগুলি তাই তাদের সমবয়সীদের সাথে যোগাযোগের জন্য পরিবেশগত পরিবর্তনশীল ব্যবহার করতে পারে না, দূরত্বের সমস্যা এড়াতে পারে। গ্লোবাল-অনলি এবং গ্লোবাল-বাই-ডিফল্ট বেশ কয়েকটি অ-কাঠামোগত ভাষা, যেমন (প্রাথমিক সংস্করণ) বেসিক, কোবোল এবং ফোরট্রান 1 (1956) শুধুমাত্র গ্লোবাল ভেরিয়েবল সরবরাহ করে। দ্বিতীয় ফোরট্রান (1958) স্থানীয় ভেরিয়েবল সহ সাবরুটিন এবং গ্লোবাল ভেরিয়েবল অ্যাক্সেস করার জন্য কমন কীওয়ার্ড চালু করে। ফোরট্রান 77-এ সাধারণের ব্যবহার অব্যাহত ছিল এবং পিএল/এসকিউএল-এর মতো পরবর্তী ভাষাগুলিকে প্রভাবিত করেছিল। গ্লোবালগুলির জন্য নামকরণ করা সাধারণ গোষ্ঠীগুলি কিছুটা কাঠামোগত নামস্থানের মতো আচরণ করে। ভেরিয়েবলগুলি ফোর্থ, লুয়া, পার্ল এবং বেশিরভাগ শেলগুলিতে ডিফল্টরূপে গ্লোবাল হয়। সি এবং সি + + ভাষায় সি ভাষার কোনও গ্লোবাল কীওয়ার্ড নেই। যাইহোক, একটি ফাংশনের বাইরে ঘোষিত ভেরিয়েবলগুলির "ফাইল স্কোপ" থাকে, যার অর্থ তারা ফাইলের মধ্যে দৃশ্যমান। ফাইলের সুযোগ সহ ঘোষিত ভেরিয়েবলগুলি তাদের ঘোষণা এবং সংকলন ইউনিটের (. সি ফাইল) শেষের মধ্যে দৃশ্যমান হয় (যদি না স্থানীয় পরিবর্তনশীলের মতো কাছাকাছি পরিসরে একটি সম-নামযুক্ত বস্তু দ্বারা ছায়াযুক্ত হয়); এবং তাদের অন্তর্নিহিতভাবে বাহ্যিক সংযোগ থাকে এবং এইভাবে কেবল. সি ফাইল বা তাদের ঘোষণা সম্বলিত সংকলন ইউনিটে নয়, সম্পূর্ণ প্রোগ্রাম গঠনের জন্য সংযুক্ত প্রতিটি অন্যান্য সংকলন ইউনিটেও দৃশ্যমান হয়। তবে, অন্যান্য ফাইলগুলিতে এই ধরনের পরিবর্তনশীলের ব্যবহারের জন্য বাহ্যিক সংযোগ যথেষ্ট নয়ঃ একটি সংকলন ইউনিটের জন্য এই ধরনের বৈশ্বিক পরিবর্তনশীল সঠিকভাবে অ্যাক্সেস করার জন্য, এটির ধরন জানতে হবে। এক্সটার্ন কীওয়ার্ড ব্যবহার করে প্রতিটি ফাইলের ভেরিয়েবল ঘোষণা করে এটি সম্পন্ন করা হয়। (এটি প্রতিটি ফাইলে ঘোষণা করা হবে কিন্তু শুধুমাত্র একটিতে সংজ্ঞায়িত করা যেতে পারে।) এই ধরনের বাহ্যিক ঘোষণাগুলি প্রায়শই একটি ভাগ করা হেডার ফাইলে স্থাপন করা হয়, কারণ একটি প্রকল্পের সমস্ত. c ফাইলের জন্য কমপক্ষে একটি. h ফাইল অন্তর্ভুক্ত করা সাধারণ অভ্যাসঃ স্ট্যান্ডার্ড হেডার ফাইল errno.h একটি উদাহরণ, যা একটি প্রকল্পের সমস্ত মডিউলের জন্য ত্রুটি পরিবর্তনশীলকে অ্যাক্সেসযোগ্য করে তোলে। যেখানে এই বৈশ্বিক প্রবেশাধিকার প্রক্রিয়াটি সমস্যাযুক্ত বলে বিবেচিত হয়, সেখানে এটি স্ট্যাটিক কীওয়ার্ড ব্যবহার করে নিষ্ক্রিয় করা যেতে পারে যা ফাইলের সুযোগের জন্য একটি পরিবর্তনশীলকে সীমাবদ্ধ করে এবং একটি সংকলন (বা লিঙ্কিং) ত্রুটি উত্থাপন করার জন্য এটি বহিরাগতের সাথে আমদানি করার প্রচেষ্টার কারণ হবে। সি-তে "গ্লোবাল" ভেরিয়েবলের একটি উদাহরণ হলঃ #include <stdio.h>// এটি ফাইল-স্কোপ ভেরিয়েবল (অভ্যন্তরীণ সংযোগ সহ), যা শুধুমাত্র// এই সংকলন ইউনিটে দৃশ্যমান। স্ট্যাটিক ইন্ট শেয়ার্ড = 3;// এটির বাহ্যিক সংযোগ রয়েছে (এই সংকলন ইউনিটে সীমাবদ্ধ নয়)। extern int ওভার _ শেয়ার্ড;// এছাড়াও অভ্যন্তরীণ সংযোগ। int ওভার _ শেয়ার্ড _ টু = 2; স্ট্যাটিক অকার্যকর পরিবর্তন শেয়ার্ড () {// একটি ফাংশনে ফাইল-স্কোপ পরিবর্তনশীলের রেফারেন্স। শেয়ার্ড = 5;} স্ট্যাটিক অকার্যকর স্থানীয় ছায়া () {// স্থানীয় পরিবর্তনশীল যা একই নামের গ্লোবালকে লুকিয়ে রাখবে। এটি শুধুমাত্র স্থানীয় পরিবর্তনশীলকে প্রভাবিত করবে এবং একই নামের// ফাইল-স্কোপ পরিবর্তনশীলের উপর কোনও প্রভাব ফেলবে না। ভাগ করা = 1000;} স্ট্যাটিক অকার্যকর পরমশ্যাডো (int ভাগ করা) {// এটি শুধুমাত্র পরামিতিটিকে প্রভাবিত করবে এবং একই নামের ফাইল-//সুযোগ পরিবর্তনশীলের উপর কোনও প্রভাব ফেলবে না। ভাগ করা =-ভাগ করা;} int প্রধান () {// ফাইল-ক্ষেত্রের পরিবর্তনশীলের রেফারেন্স। প্রিন্টএফ ("% d\n", ভাগ করা হয়েছে); চেঞ্জশেয়ার্ড (); প্রিন্টএফ ("% d\n", ভাগ করা হয়েছে); লোকালশেডো (); প্রিন্টএফ ("% d\n", ভাগ করা হয়েছে); প্যারামশেডো (1); প্রিন্টএফ ("% d\n", ভাগ করা হয়েছে); রিটার্ন 0;} যেহেতু পরিবর্তনশীলটি একটি বাহ্যিক, তাই প্রধান ছাড়া কোনও ফাংশনে এটি ব্যবহার করার জন্য এটিকে পরামিতি হিসাবে পাস করার প্রয়োজন নেই। এটি মডিউলের প্রতিটি ফাংশনের অন্তর্গত। আউটপুট হবেঃ 3 5 5 জাভা জাভার মতো কিছু ভাষায় গ্লোবাল ভেরিয়েবল নেই। জাভাতে, সমস্ত চলক যা স্থানীয় চলক নয় সেগুলি একটি শ্রেণীর ক্ষেত্র। সুতরাং সমস্ত চলক একটি শ্রেণী বা একটি পদ্ধতির আওতায় রয়েছে। জাভাতে, স্ট্যাটিক ক্ষেত্রগুলি (ক্লাস ভেরিয়েবল হিসাবেও পরিচিত) ক্লাসের যে কোনও দৃষ্টান্ত থেকে স্বাধীনভাবে বিদ্যমান এবং একটি অনুলিপি সমস্ত দৃষ্টান্তের মধ্যে ভাগ করা হয়; তাই পাবলিক স্ট্যাটিক ক্ষেত্রগুলি তাদের অনুরূপ "ভাগ করে নেওয়ার" আচরণের কারণে অন্যান্য ভাষায় গ্লোবাল ভেরিয়েবলের মতো একই উদ্দেশ্যে ব্যবহৃত হয়ঃ পাবলিক ক্লাস গ্লোবাল (পাবলিক স্ট্যাটিক ইন্ট এ;) পিএইচপি-র একটি গ্লোবাল কীওয়ার্ড এবং গ্লোবাল ভেরিয়েবল ব্যবহার করার বেশ কয়েকটি অস্বাভাবিক উপায় রয়েছে। ফাংশনের বাইরে ঘোষিত ভেরিয়েবলগুলির ফাইলের সুযোগ রয়েছে (যা বেশিরভাগ উদ্দেশ্যে বিস্তৃত সুযোগ)। যাইহোক, গ্লোবাল কীওয়ার্ডের সাথে আমদানি না করা পর্যন্ত এগুলি ফাংশনগুলির অভ্যন্তরে অ্যাক্সেসযোগ্য নয় (অর্থাৎ, কীওয়ার্ডটি গ্লোবাল ভেরিয়েবলগুলিতে অ্যাক্সেস করে, এটি তাদের ঘোষণা করে না)। যাইহোক, কিছু পূর্বনির্ধারিত চলক, যা সুপারগ্লোবাল নামে পরিচিত, সর্বদা অ্যাক্সেসযোগ্য। এগুলি সবই অ্যারে। একটি সাধারণ উদ্দেশ্য হল $GLOBALS সুপারগ্লোবাল, যা ফাংশনের সুযোগের বাইরে সংজ্ঞায়িত সমস্ত ভেরিয়েবল ধারণ করে। এর উপাদানগুলির পরিবর্তনগুলি মূল চলকগুলিকে পরিবর্তন করে এবং সংযোজনগুলি নতুন চলক তৈরি করে। সুপারগ্লোবাল $_ POST এবং $_ GET ওয়েব প্রোগ্রামিংয়ে ব্যাপকভাবে ব্যবহৃত হয়। অন্যান্য ভাষাগুলি পাইথন এবং ম্যাটল্যাবে একটি গ্লোবাল ভেরিয়েবলকে গ্লোবাল কীওয়ার্ডের সাথে যে কোনও জায়গায় ঘোষণা করা যেতে পারে। রুবির গ্লোবাল ভেরিয়েবলগুলি একটি '$' সিগিল দ্বারা আলাদা করা হয়। বেশ কয়েকটি পূর্বনির্ধারিত গ্লোবাল রয়েছে, উদাহরণস্বরূপ $$হল বর্তমান প্রসেস আইডি। আরও দেখুন স্থানীয় পরিবর্তনশীল অ-স্থানীয় পরিবর্তনশীল সিঙ্গলটন প্যাটার্ন পরিবর্তনশীল স্থিতিশীল পরিবর্তনশীল বাহ্যিক পরিবর্তনশীল রেফারেন্স পরিবর্তনশীল (কম্পিউটার বিজ্ঞান) ডিঃ পরিবর্তনশীল (প্রোগ্রামমিয়েরুং) #Variablen ইন ইইনার ব্লকস্ট্রাকটুর