ম্যানেজড কোড বনাম আন-ম্যানেজড কোড
ডট নেট ব্যবহার করে আমরা বিভিন্ন অপারেটিং সিস্টেমের জন্য অ্যাপ্লিকেশন তৈরি করতে পারি। সাধারণত ভিজুয়াল স্টুডিও ব্যবহার করে উইন্ডোজের জন্য ডট নেট অ্যাপ্লিকেশন লিখা হয়। আর লিনাক্স বা ম্যাকের জন্য ব্যবহার করা হয় Mono। Mono হচ্ছে ডট নেট ফ্রেমোয়ার্কের একটি ইমপ্লিমেন্টেশন যেটা ব্যবহার করে আমরা বিভিন্ন অপারেটিং সিস্টেমের জন্য ডট নেট টার্গেটেড অ্যাপ্লিকেশন লিখতে পারি।
এখন কথা হচ্ছে, এই যে একই কোড আমরা বিভিন্ন প্লাটফর্মে রান করতে পারি, এটা আসলে হচ্ছে কিভাবে? এটা হচ্ছে Common Language Runtime এর বদৌলতে। কমন ল্যাঙ্গুয়েজ রানটাইমকে সংক্ষেপে CLR বলা হয়। তো CLR আসলে করে কী?
আমরা সবাই জানি কম্পিউটার ম্যাশিন ল্যাঙ্গুয়েজ ছাড়া আর কিচ্ছু বোঝে না। প্রোগ্রামিং ল্যাঙ্গুয়েজ ও না! তাহলে কম্পিউটার আমাদের লিখা প্রোগ্রাম এক্সিকিউট করে কিভাবে? প্রথমে কম্পাইলার আমাদের লিখা কোড ম্যাশিন ল্যাংগুয়েজে রূপান্তরিত করে এবং পরে অপারেটিং সিস্টেম সেই কোড এক্সিকিউট করে। তো যেসব কোড অপারেটিং সিস্টেম সরাসরি নিজে এক্সিকিউট করে সেগুলোকে বলা হয় আন-ম্যানেজড কোড। সি বা সি-প্লাস-প্লাসে লিখা কোড কে আমরা আন-ম্যানেজড কোড বলতে পারি।
আন-ম্যানেজড বলার কারণ হচ্ছে, এই সব কোডে ইউজার অনেক লো লেভেল ডিটেইলস নিয়ে কাজ করে। যেমনঃ মেমোরি ম্যানেজমেন্ট, অ্যাপ্লিকেশন হোস্টিং, কো-অর্ডিনেটিং থ্রেডস, সিকিউরিটি চেক প্রভৃতি। তো ইউজার যদি সতর্ক থেকে কাজ না করে বা রিসোর্স ঠিক মত ইউটিলাইজ না করে তাহলে বিভিন্ন ক্ষেত্রে বিভিন্ন ঝামেলায় পরতে হতে পারে।
তবে আমরা যখন ডট নেট ফ্রেমোয়ার্ককে টার্গেট করে কোড লিখি তখন আমাদের এসব লো লেভেল ডিটেইলস নিয়ে কাজ করতে হয় না। CLR আমাদের হয়ে রিসোর্স লোকেট, লোড এবং ম্যানেজ করে দেয়। এই জন্য ডট নেটে লিখা কোড কে ম্যানেজড কোড বলা হয়।
আচ্ছা! CLR তাহলে কাজ করে কিভাবে? আমরা একটু আগে জানলাম যে কম্পিউটার ম্যাশিন ল্যাঙ্গুয়েজ ছাড়া আর কিচ্ছু বোঝে না। কম্পাইলারকে প্রথমে আমাদের লিখা কোড ম্যাশিন ল্যাংগুয়েজে রূপান্তরিত করতে হয় তার পর অপারেটিং সিস্টেম তা এক্সিকিউট করে। তো এই ক্ষেত্রে যেটা হয় সেটা হচ্ছে কম্পাইলার ডিরেক্ট অপারেটিং সিস্টেমের আর্কিটেকচার অনুযায়ী এক্সিকিউটেবল ফাইল তৈরি করে।
তবে ডট নেটে লিখা কোড সরাসরি এক্সিকিউটেবলে রূপান্তরিত হয় না। কম্পাইলার প্রথমে ম্যানেজড কোড কে Microsoft Intermediate Language (MSIL) এ রূপান্তরিত করে এবং পরে এক্সিকিউটেবল তৈরি করে। প্রোগ্রামার যখন এক্সিকিউটেবল ফাইল রান করে তখন কমন ল্যাঙ্গুয়েজ রানটাইমের "জাস্ট ইন টাইম কম্পাইলার" ইন্টারমিডিয়েট ল্যাঙ্গুয়েজকে আন্ডারলাইং অপারেটিং সিস্টেমের আর্কিটেকচারের উপযোগী ন্যাটিভ কোডে রূপান্তরিত করে। আর এজন্যই ডট নেটে লিখা কোড বিভিন্ন অপারেটিং সিস্টেমে রান করতে পারে।
0 মন্তব্য(গুলি)