C++ ভাষার স্ট্যান্ডার্ড লাইব্রেরি সময়ের সঙ্গে সঙ্গে বিবর্তিত হয়েছে, যা নতুন ফিচার এবং উন্নত কার্যকারিতা সংযোজন করেছে। C++98 থেকে শুরু করে C++20 পর্যন্ত প্রতিটি স্ট্যান্ডার্ডে নতুন উপাদান ও ফাংশন যোগ করা হয়েছে, যা প্রোগ্রামারদের জন্য কোডিংকে আরও সহজ ও শক্তিশালী করেছে। নিচে প্রতিটি সংস্করণের প্রধান বৈশিষ্ট্য এবং নতুন সংযোজনগুলি আলোচনা করা হলো:
C++98 (1998)
C++98 হলো প্রথম ISO C++ স্ট্যান্ডার্ড যা মূল C++ স্ট্যান্ডার্ড লাইব্রেরিকে সংজ্ঞায়িত করে। এই সংস্করণের কিছু মূল বৈশিষ্ট্য:
- STL (Standard Template Library): প্রথমবারের মতো C++ তে স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি যুক্ত করা হয়, যা
vector,list,map,setএর মতো কনটেইনার এবং বিভিন্ন অ্যালগরিদম প্রদান করে। - string লাইব্রেরি:
std::stringক্লাস, যা স্ট্রিং অপারেশনগুলো সহজ করে। - iostream: ইনপুট ও আউটপুট ব্যবস্থাপনার জন্য
cin,cout,cerrইত্যাদি। - বেসিক STL অ্যালগরিদম: যেমন
sort,find,reverse,accumulateইত্যাদি।
C++03 (2003)
C++03 মূলত C++98 এর একটি ছোটখাটো আপডেট, যেখানে কিছু বাগ ফিক্স করা হয়েছে এবং কার্যকারিতা উন্নত করা হয়েছে। উল্লেখযোগ্য কোনো নতুন বৈশিষ্ট্য যোগ করা হয়নি, তবে কোডের মান ও স্থায়িত্ব বৃদ্ধি পেয়েছে।
C++11 (2011)
C++11 হলো একটি বড় আপডেট যা ভাষা ও স্ট্যান্ডার্ড লাইব্রেরিতে অনেক পরিবর্তন এনেছে এবং নতুন বৈশিষ্ট্য যোগ করেছে। এর কিছু মূল সংযোজন হলো:
- Smart Pointers:
std::unique_ptr,std::shared_ptr, যা মেমরি ম্যানেজমেন্টকে আরও সহজ ও নিরাপদ করেছে। - Concurrency Support:
std::thread,std::mutex,std::lock, যা মাল্টি-থ্রেডিং সুবিধা প্রদান করে। - Regular Expressions:
std::regex, যা প্যাটার্ন ম্যাচিং ও টেক্সট প্রসেসিং সহজ করে। - New Containers:
std::array,std::unordered_map,std::unordered_set, যা ডেটা স্ট্রাকচার ম্যানিপুলেশনের নতুন উপায় প্রদান করে। - Random Number Generation:
std::randomলাইব্রেরি, যা এলোমেলো সংখ্যা তৈরির জন্য শক্তিশালী এবং নিয়ন্ত্রিত উপায় প্রদান করে। - Lambda Expressions: ছোট ফাংশন লেখার একটি সহজ উপায় প্রদান করেছে, যা অ্যালগরিদমের সাথে আরও কার্যকরভাবে কাজ করে।
C++14 (2014)
C++14 মূলত C++11 এর একটি বর্ধিত সংস্করণ, যা বিদ্যমান বৈশিষ্ট্যগুলোর উন্নতি এবং কিছু নতুন সংযোজন করেছে। প্রধান বৈশিষ্ট্যগুলো:
- Generic Lambdas: ল্যাম্বডা এক্সপ্রেশনকে আরও জেনেরিক করে।
std::make_unique:unique_ptrতৈরির জন্য একটি নতুন এবং নিরাপদ উপায়।- Return Type Deduction: ফাংশনগুলোর রিটার্ন টাইপ অটোমেটিক্যালি নির্ধারণ করার ক্ষমতা।
- Compile-Time Integer Sequences:
std::integer_sequence, যা মেটাপ্রোগ্রামিংকে আরও শক্তিশালী করে।
C++17 (2017)
C++17 এ নতুন ফিচার যুক্ত করার পাশাপাশি স্ট্যান্ডার্ড লাইব্রেরির কিছু উপাদানকে আরও কার্যকর ও স্থায়ী করা হয়েছে। এর প্রধান বৈশিষ্ট্যগুলো:
std::optional: মান অনুপস্থিতির অবস্থা নির্দেশ করতে।std::variant: একাধিক ভিন্ন টাইপ ধারণ করতে পারে এমন ডেটা টাইপ।std::any: যেকোনো ধরনের ডেটা ধারণ করার জন্য ব্যবহৃত।- Parallel STL Algorithms: C++ স্ট্যান্ডার্ড অ্যালগরিদমগুলো প্যারালাল অপারেশনে সক্ষম।
- Filesystem Library:
std::filesystem, যা ফাইল ও ডিরেক্টরি পরিচালনা করার সুবিধা প্রদান করে। - New
std::string_view: স্ট্রিং ম্যানিপুলেশনের একটি উন্নত উপায় যা আরও কার্যকর এবং মেমরি ব্যবস্থাপনার ক্ষেত্রে ভালো।
C++20 (2020)
C++20 কে একটি যুগান্তকারী সংস্করণ হিসেবে ধরা হয়, কারণ এটি ভাষার সক্ষমতা ও স্ট্যান্ডার্ড লাইব্রেরিকে বহুগুণে বাড়িয়ে তুলেছে। C++20 এর কিছু উল্লেখযোগ্য বৈশিষ্ট্য:
- Ranges Library:
std::ranges, যা অ্যালগরিদম এবং রেঞ্জ-ভিত্তিক প্রোগ্রামিংকে আরও সহজ করে। - Modules: হেডার ফাইলের প্রয়োজনীয়তা কমিয়ে কোড কম্পাইলেশনের সময় কমানো।
- Coroutines: ফাংশনগুলোকে বিরতি দিয়ে পুনরায় শুরু করার ক্ষমতা প্রদান করে, যা অ্যাসিঙ্ক্রোনাস প্রোগ্রামিংকে সহজ করে।
- Concepts: টাইপ রিকোয়ারেরমেন্ট নির্ধারণ করে যা টেমপ্লেটের সাথে ব্যবহার করা সহজ করে।
std::span: ধারাবাহিক ডেটার ভিউ হিসেবে কাজ করে যা অ্যারে এবং ভেক্টরের উপাদানগুলোর ওপর কাজ সহজ করে।- Calendar and Time Zone Support:
std::chronoলাইব্রেরির নতুন উন্নয়ন, যা টাইম ও ডেটা ম্যানিপুলেশনে সহায়ক। - Enhanced
std::format: স্ট্রিং ফরম্যাটিংয়ের জন্য একটি নতুন পদ্ধতি, যাprintfএর মতো কিন্তু আরও নিরাপদ এবং C++-এর জন্য উপযোগী।
সংক্ষেপে বিবর্তনের ধারা
- C++98: বেসিক স্ট্যান্ডার্ড লাইব্রেরির সূচনা।
- C++03: ছোটখাটো উন্নতি এবং বাগ ফিক্স।
- C++11: বড় পরিবর্তন ও বৈশিষ্ট্য সংযোজন, যেমন স্মার্ট পয়েন্টার, ল্যাম্বডা, থ্রেডিং।
- C++14: C++11 এর উন্নতি এবং কিছু নতুন বৈশিষ্ট্য।
- C++17: নতুন কনটেইনার, প্যারালাল অ্যালগরিদম, এবং ফাইল সিস্টেম লাইব্রেরি।
- C++20: যুগান্তকারী পরিবর্তন, যেমন রেঞ্জ লাইব্রেরি, মডিউলস, কোরুটিনস এবং টাইম ম্যানেজমেন্ট।
এই বিবর্তনের ধারায় C++ স্ট্যান্ডার্ড লাইব্রেরি ক্রমাগত শক্তিশালী হয়েছে, যা প্রোগ্রামারদের জন্য আরও সহজ, দ্রুত এবং কার্যকরী প্রোগ্রামিং প্ল্যাটফর্ম তৈরি করেছে।
Read more