লিনাক্সে C++ ব্যবহার আবার প্রস্তাব করা হয়েছে
মনে হচ্ছে যে, লিনাক্স কার্নেলে দ্বিতীয় প্রোগ্রামিং ভাষা হিসেবে রাস্টের সংযোজন লিনাক্সের ইতিহাসে অন্যতম গুরুত্বপূর্ণ একটি পরিবর্তন এনেছে; শুধু বৈশিষ্ট্য বা কার্যকারিতার দিক থেকে না বললেও, এটি একটি অত্যন্ত গুরুত্বপূর্ণ সূচনা বিন্দু হিসেবে কাজ করেছে, যার মাধ্যমে লিনাস টরভাল্ডস এবং তাঁর উন্নয়ন দল লিনাক্সকে আরও উন্নত করার লক্ষ্যে আধুনিকীকরণের পথে একটি উল্লেখযোগ্য পদক্ষেপ নিয়েছেন।
এর প্রমাণ মেলে, কারণ সম্প্রতি ছয় বছর আগে শুরু হওয়া একটি আলোচনা লিনাক্স কার্নেল মেইলিং লিস্টে পুনরুজ্জীবিত হয়েছে , যা ১ এপ্রিল, ২০১৮ তারিখে ঠাট্টার ছলে উপস্থাপন করা হয়েছিল।
এবং আবারও , "লিনাক্স কার্নেলে আধুনিক C++ কোড গ্রহণের সম্ভাব্যতা" নিয়ে প্রশ্ন উঠেছে , যা অ্যাসেম্বলি খণ্ডসহ C ভাষার ঐতিহ্যগত ব্যবহার এবং রাস্ট ভাষার প্রচারকে ছাড়িয়ে গেছে।
প্রাথমিক প্রস্তাবটি ২০১৮ সালে রেড হ্যাটের একজন ইঞ্জিনিয়ার সুপরিচিত এপ্রিল ফুল উদযাপনের জন্য একটি রসিকতা হিসেবে চালু করেছিলেন , যেখানে অনেকেই কমিউনিটির জন্য কৌতুক তৈরি করার সুযোগ নিয়ে থাকেন। এবং সেই সময়ে এটি সেরকমই একটি ঘটনা ছিল, কারণ তিনি কথিতভাবে ৪৫টি প্যাচের একটি সেট প্রকাশ করেছিলেন, যেগুলোতে টেমপ্লেটের ব্যবহার, ক্লাস ইনহেরিটেন্স এবং C++ ফাংশনের ওভারলোডিং অন্তর্ভুক্ত ছিল।
আমার মতে, C++14 হল "ন্যূনতম" সংস্করণ যেটিতে যুক্তিসঙ্গত মেটাপ্রোগ্রামিং সমর্থন রয়েছে এবং পূর্ববর্তী সংস্করণের প্রকারগুলি ছাড়াই বেশিরভাগ রয়েছে (C++11-এ বেশিরভাগই ছিল, কিন্তু C++14 কিছু মূল অনুপস্থিত অংশ পূরণ করে)। যাইহোক, আমার মতে, C++20 সত্যিই সবচেয়ে বড় গেম চেঞ্জার; যদিও পূর্ববর্তী সংস্করণগুলি অনেক SFINAE হ্যাক চালাতে পারে, তারা একেবারে অকেজো ত্রুটি বার্তাও দিয়েছে।
আমরা লিনাক্স কার্নেলে অনেক মেটাপ্রোগ্রামিং করি, প্রায়ই সত্যিই ভয়ানক ম্যাক্রো কৌশল ব্যবহার করে বাস্তবায়িত হয়। এগুলি ডিবাগ করা কার্যত অসম্ভব। আসুন uaccess.h টাইপ হ্যাকগুলির উদাহরণ নেওয়া যাক, যার কয়েকটি আমি ডিজাইন করেছি এবং লিখেছি। C++-এ, বিভিন্ন কাস্ট এবং কেস স্টেটমেন্ট আলাদা আলাদা টেমপ্লেট ইনস্ট্যান্সে বিভক্ত করা যেতে পারে, এবং সামান্য বুদ্ধিমত্তার সাথে, ইউজারস্পেস পয়েন্টার বনাম কার্নেল ইউজারস্পেস পয়েন্টারগুলির মতো জিনিসগুলিও কঠোরভাবে প্রয়োগ করা যেতে পারে, সেইসাথে ইতিমধ্যে চিহ্নিত ইউজারস্পেস পয়েন্টারগুলি, বনাম যেগুলি নেই, একটি 32-বিট কার্নেলে 64-বিট ইউজারস্পেস প্রকারের ক্ষেত্রে সহজ পরিচালনা এবং এন্ডিয়ান রূপান্তর প্রয়োগের কথা উল্লেখ না করা।
এখন, প্রায় ছয় বছর পর, ইন্টেলের একজন প্রধান কার্নেল ডেভেলপার এবং syslinux, klibc, ও LANANA-র মতো প্রজেক্টের স্রষ্টা হান্স পিটার অ্যানভিন এই আলোচনাটি পুনরায় শুরু করেছেন । অ্যানভিনের মতে, ১৯৯৯ সাল থেকে C এবং C++ ভাষার উল্লেখযোগ্য উন্নয়ন হয়েছে এবং অপারেটিং সিস্টেম কার্নেল ডেভেলপমেন্টের জন্য C-এর চেয়ে C++ বেশি উপযুক্ত বলে প্রমাণিত হয়েছে।
অনভিন উল্লেখ করেছেন যে, যে ফাংশনগুলোর জন্য আগে নির্দিষ্ট GCC এক্সটেনশনের প্রয়োজন হতো , সেগুলো এখন সাধারণ C++ ব্যবহার করেই সহজে প্রয়োগ করা যায় এবং অনেক ক্ষেত্রে, কোড সম্পূর্ণ পরিবর্তন না করেই C++ ব্যবহার করলে অবকাঠামোর উন্নতি হবে।
এছাড়াও, অন্তত C++ 14 স্পেসিফিকেশন ব্যবহার করার প্রস্তাব করা হয়েছে, যাতে মেটাপ্রোগ্রামিং টুলস অন্তর্ভুক্ত রয়েছে, এবং C++ 20 স্পেসিফিকেশন ব্যবহারের জন্য উৎসাহিত করা হয়েছে, যা এমন সব ধারণার সমর্থন যোগ করে যা ভুলের হার কমাতে পারে।
বলা হয়ে থাকে যে রাস্টের চেয়ে সি++ বেশি পছন্দনীয়, কারণ রাস্টের সিনট্যাক্স সি ভাষা থেকে উল্লেখযোগ্যভাবে ভিন্ন, এটি বর্তমান কার্নেল ডেভেলপারদের মধ্যে তেমন প্রচলিত নয় এবং এতে ধাপে ধাপে কোড পুনর্লিখনের সুযোগ নেই। সি++ এর মাধ্যমে সি কোডের অংশবিশেষকে ধাপে ধাপে অনুবাদ করা সম্ভব, ঠিক যেমনভাবে সি কোডকে সি++ এ কম্পাইল করা যায়।
যদিও লিনাক্স কার্নেল প্রাথমিকভাবে সি কোড যা সমাবেশে লেখা বিভিন্ন অংশ এবং লিনাক্স কার্নেলে মরিচা সমর্থনের আশেপাশে ক্রমবর্ধমান কাজ, লিনাক্স কার্নেল সি কোড দেখার সম্ভাবনার উপর এটি বাস্তবে পরিণত হওয়ার জন্য যথেষ্ট ওজন আছে কিনা তা এখনও স্পষ্ট নয়। ভবিষ্যতে C++ এ রূপান্তরিত হবে।
অবশেষে, আপনি যদি এই বিষয়ে আরও জানতে আগ্রহী হন , তাহলে নিচের লিঙ্কে বিস্তারিত তথ্য পেতে পারেন ।