C++ ভাষার দুটি সংস্করণ রয়েছে।
C++ এর সত্যিই দুটি সংস্করণ রয়েছে। প্রথমটি হল প্রথাগত সংস্করণ যা Bjarne Stroustrup এর মূল ডিজাইনের উপর ভিত্তি করে তৈরি। এই সংস্করণ C++ এর যা গত এক দশক ধরে প্রোগ্রামাররা ব্যবহার করে আসছে। দ্বিতীয়টি হল নতুন স্ট্যান্ডার্ড C++, যেটি স্ট্রাস্ট্রুপ এবং ANSI/ISO স্ট্যান্ডার্ডাইজেশন কমিটি দ্বারা তৈরি করা হয়েছে। যদিও C++ এর এই দুটি সংস্করণ তাদের মূল অংশে অনেকটাই একই রকম, স্ট্যান্ডার্ড C++ এ অনেকগুলি উন্নতি রয়েছে যা ঐতিহ্যগত C++ এ পাওয়া যায় না।
সুতরাং, স্ট্যান্ডার্ড C++ মূলত ঐতিহ্যবাহী C++ এর একটি সুপারসেট।
এটি ANSI/ISO স্ট্যান্ডার্ডাইজেশন কমিটির দ্বারা সংজ্ঞায়িত C++ এর সংস্করণ, এবং এটি সমস্ত আধুনিক C++ কম্পাইলার দ্বারা বাস্তবায়িত সংস্করণ। স্ট্যান্ডার্ড C++ হল ভবিষ্যত। এবং, যেহেতু স্ট্যান্ডার্ড (C++) C++ এর আগের সংস্করণগুলি পাওয়া সমস্ত বৈশিষ্ট্যকে অন্তর্ভুক্ত করে, তা আপনাকে সমস্ত C++ প্রোগ্রামিং পরিবেশে কাজ করতে সক্ষম করবে।
যাইহোক, আপনি যদি একটি পুরানো কম্পাইলার ব্যবহার করেন তবে এটি গ্রহণ নাও করতে পারে!
প্রক্রিয়া চলাকালীন
প্রমিতকরণ, ANSI/ISO কমিটি অনেক নতুন বৈশিষ্ট্য যোগ করেছে, যেহেতু এই বৈশিষ্ট্যগুলি সংজ্ঞায়িত করা হয়েছিল, সেগুলি প্রয়োগ করা হয়েছিল কম্পাইলার ডেভেলপারদের দ্বারা।
অবশ্য মাঝে মাঝে একটা ব্যবধান থাকে ভাষাতে একটি নতুন বৈশিষ্ট্য যোগ করা এবং এর প্রাপ্যতা বাণিজ্যিক কম্পাইলার বৈশিষ্ট্য। যেহেতু বৈশিষ্ট্য যোগ করা হয়েছে C++ বছরের পর বছর ধরে, একটি পুরানো কম্পাইলার একটিকে সমর্থন নাও করতে পারে। এটি গুরুত্বপূর্ণ কারণ দুটি সাম্প্রতিক সংযোজন C++ ভাষা প্রতিটি প্রোগ্রামকে প্রভাবিত করে যা আপনি লিখবেন এমনকি সহজতম আপনি যদি একটি পুরানো কম্পাইলার ব্যবহার করেন যা সেগুলি গ্রহণ করে না নতুন বৈশিষ্ট্য, চিন্তা করবেন না।
একটি সহজ সমাধান আছে, যা নিম্নলিখিত অনুচ্ছেদে বর্ণিত।
পুরানো শৈলী এবং আধুনিক কোডের মধ্যে পার্থক্য দুটি নতুন বৈশিষ্ট্য জড়িত নতুন শৈলী শিরোনাম এবং নামস্থান বিবৃতি। এই পার্থক্যগুলি প্রদর্শন করতে আমরা একটি ন্যূনতম, C++ প্রোগ্রামের দুটি সংস্করণ দেখে শুরু করব। এখানে দেখানো প্রথম সংস্করণটি সম্প্রতি পর্যন্ত C++ প্রোগ্রামগুলি যেভাবে লেখা হয়েছিল তা প্রতিফলিত করে। (অর্থাৎ, পুরানো শৈলী কোডিং ব্যবহার করে।)
যেহেতু C++, C তে নির্মিত, এই কঙ্কালটি মূলত পরিচিত হওয়া উচিত, তবে #include স্টেটমেন্টে বিশেষ মনোযোগ দিন। এই বিবৃতিতে iostream.h ফাইল রয়েছে, যা C++ এর I/O সিস্টেমের জন্য সমর্থন প্রদান করে। (এটি C++ এর জন্য stdio.h যা C থেকে।)
এখানে দ্বিতীয় সংস্করণ, যা ব্যবহার করে
আধুনিক রীতি:
- প্রথম মন্তব্যের পরপরই এই প্রোগ্রামের দুটি লাইন লক্ষ্য করুন;
এই যেখানে পরিবর্তন ঘটবে. প্রথমে, #include স্টেটমেন্টে, iostream নামের পরে .h নেই। এবং দ্বিতীয়, পরবর্তী লাইন, একটি নামস্থান নির্দিষ্ট করে, নতুন। যদিও নতুন শৈলী শিরোনাম এবং নামস্থান উভয়ই বিশদভাবে পরীক্ষা করা হবে, একটি সংক্ষিপ্ত ওভারভিউ এখন ক্রমানুসারে রয়েছে।
- নতুন C++ হেডার
আপনি আপনার সি প্রোগ্রামিং অভিজ্ঞতা থেকে জানেন, আপনি যখন একটি প্রোগ্রামে একটি লাইব্রেরি ফাংশন ব্যবহার করেন, আপনাকে অবশ্যই এর হেডার ফাইলটি অন্তর্ভুক্ত করতে হবে। এই #include স্টেটমেন্ট ব্যবহার করে করা হয়েছে। উদাহরণস্বরূপ, C-তে, I/O ফাংশনগুলির জন্য হেডার ফাইল অন্তর্ভুক্ত করতে, আপনি stdio.h এইরকম একটি বিবৃতি সহ অন্তর্ভুক্ত করুন:
- # include <stdio.h>
এখানে stdio.h হল I/O ফাংশন দ্বারা ব্যবহৃত ফাইলের নাম, এবং পূর্ববর্তী বিবৃতিটি সেই ফাইলটিকে আপনার প্রোগ্রামে অন্তর্ভুক্ত করে। মূল বিষয় হল যে #include বিবৃতিতে একটি ফাইল অন্তর্ভুক্ত রয়েছে।
C++ যখন প্রথম উদ্ভাবিত হয়েছিল এবং তার পরে বেশ কয়েক বছর, এটি C-এর মতো একই স্টাইল হেডার ব্যবহার করেছিল। আসলে, স্ট্যান্ডার্ড C++ এখনও আপনার তৈরি করা হেডার ফাইলগুলির জন্য এবং পশ্চাদমুখী সামঞ্জস্যের জন্য C স্টাইল হেডার সমর্থন করে। যাইহোক, স্ট্যান্ডার্ড C++ একটি নতুন ধরনের হেডার চালু করেছে যা স্ট্যান্ডার্ড C++ লাইব্রেরি ব্যবহার করে। নতুন শৈলী শিরোনাম ফাইলের নাম নির্দিষ্ট করে না। পরিবর্তে, তারা কেবল স্ট্যান্ডার্ড আইডেন্টিফায়ারগুলি নির্দিষ্ট করে যা কম্পাইলার দ্বারা ফাইলগুলিতে ম্যাপ করা হতে পারে, তবে সেগুলি হওয়ার দরকার নেই। নতুন শৈলী C++ শিরোনামগুলি হল বিমূর্ততা যা কেবল গ্যারান্টি দেয় যে C++ লাইব্রেরির জন্য প্রয়োজনীয় উপযুক্ত প্রোটোটাইপ এবং সংজ্ঞা ঘোষণা করা হয়েছে।
যেহেতু নতুন শৈলীর শিরোনামটি একটি ফাইলের নাম নয়, এটিতে .h এক্সটেনশন নেই। এই ধরনের একটি শিরোনাম শুধুমাত্র কোণ বন্ধনীর মধ্যে থাকা শিরোনামের নাম নিয়ে গঠিত। উদাহরণস্বরূপ, এখানে স্ট্যান্ডার্ড C++ দ্বারা সমর্থিত কিছু নতুন শৈলী শিরোনাম রয়েছে:
- <iostream>
- <fstream>
- <vector>
- <string>
নতুন শৈলী হেডারগুলি #include স্টেটমেন্ট ব্যবহার করে অন্তর্ভুক্ত করা হয়েছে। শুধুমাত্র পার্থক্য হল যে নতুন-শৈলী শিরোনাম অগত্যা ফাইলের নাম প্রতিনিধিত্ব করে না।
যেহেতু C++ সম্পূর্ণ C ফাংশন লাইব্রেরি অন্তর্ভুক্ত করে, এটি এখনও সেই লাইব্রেরির সাথে সম্পর্কিত স্ট্যান্ডার্ড C-স্টাইল হেডার ফাইলগুলিকে সমর্থন করে। অর্থাৎ, হেডার ফাইল যেমন stdio.h এবং ctype.h এখনও উপলব্ধ। যাইহোক, স্ট্যান্ডার্ড C++ নতুন-শৈলীর শিরোনামও সংজ্ঞায়িত করে যা আপনি এই হেডার ফাইলগুলির জায়গায় ব্যবহার করতে পারেন। স্ট্যান্ডার্ড C শিরোনামগুলির C++ সংস্করণগুলি ফাইলের নামের সাথে একটি সি উপসর্গ যোগ করে এবং .h ড্রপ করে। উদাহরণস্বরূপ, math.h এর জন্য হিউ-স্টাইল C++ হেডার হল <cmath>, এবং string.h এর জন্য হল <cstring> যদিও বর্তমানে সি লাইব্রেরি ফাংশন ব্যবহার করার সময় সি স্টাইল হেডার ফাইল অন্তর্ভুক্ত করার অনুমতি দেওয়া হয় এই পদ্ধতিটি স্ট্যান্ডার্ড C++ দ্বারা অবমূল্যায়িত (অর্থাৎ, এটি সুপারিশ করা হয় না।) এই কারণে, এই বইটি সমস্ত #include বিবৃতিতে নতুন শৈলীর C++ শিরোনাম ব্যবহার করবে। যদি আপনার কম্পাইলার C ফাংশন লাইব্রেরির জন্য নতুন শৈলীর শিরোনাম সমর্থন না করে, তাহলে কেবল পুরানো স্টাইলের C এর মতো শিরোনামগুলি প্রতিস্থাপন করুন।
যেহেতু নতুন শৈলীর শিরোনামটি C++ এর একটি সাম্প্রতিক সংযোজন, আপনি এখনও অনেক, অনেক পুরানো প্রোগ্রাম পাবেন যা এটি ব্যবহার করে না। এই প্রোগ্রামগুলি পরিবর্তে (সি স্টাইল) হেডার ব্যবহার করে, যেখানে একটি ফাইলের নাম নির্দিষ্ট করা হয়। পুরানো শৈলীর প্রোগ্রাম দেখায়, I/O হেডার অন্তর্ভুক্ত করার ঐতিহ্যগত উপায় এখানে দেখানো হয়েছে:
#include <iostream.h>
এটি iostream.h ফাইলটিকে আপনার প্রোগ্রামে অন্তর্ভুক্ত করে। সাধারণভাবে, একটি পুরানো-শৈলী শিরোনাম একটি .h সংযোজিত।
এই লেখার মতো, সমস্ত C++ কম্পাইলার পুরানো-স্টাইলের হেডার সমর্থন করে। যাইহোক, পুরানো শৈলী শিরোনাম অপ্রচলিত ঘোষণা করা হয়েছে, এবং নতুন প্রোগ্রামে তাদের ব্যবহার সুপারিশ করা হয় না। এ কারণেই এ বইয়ে সেগুলো ব্যবহার করা হয়নি।
যদিও বিদ্যমান C++ কোডে এখনও সাধারণ, পুরানো শৈলী হেডারগুলি অপ্রচলিত।
নেমস্পেস:
আপনি যখন আপনার প্রোগ্রামে একটি নতুন শৈলী শিরোনাম অন্তর্ভুক্ত করেন, তখন সেই শিরোনামের বিষয়বস্তু std নামস্থানে থাকে। একটি নামস্থান কেবল একটি ঘোষণামূলক অঞ্চল। একটি নামস্থানের উদ্দেশ্য হল নামের সংঘর্ষ এড়াতে শনাক্তকারীর নাম স্থানীয়করণ করা। ঐতিহ্যগতভাবে, লাইব্রেরি ফাংশন এবং অন্যান্য এই জাতীয় আইটেমগুলির নামগুলি কেবল বিশ্বব্যাপী নামস্থানে রাখা হয়েছিল (যেমন সেগুলি সি তে রয়েছে)। যাইহোক, নতুন শৈলী হেডারের বিষয়বস্তু std নামস্থানে স্থাপন করা হয়েছে। আমরা এই বইতে পরে নেমস্পেসগুলি ঘনিষ্ঠভাবে দেখব। আপাতত, আপনাকে তাদের নিয়ে চিন্তা করার দরকার নেই কারণ আপনি বিবৃতিটি ব্যবহার করতে পারেন নামস্থান std ব্যবহার করে;
std নেমস্পেসকে দৃশ্যমানতার মধ্যে আনতে (অর্থাৎ, গ্লোবাল নেমস্পেসে std লাগাতে)। এই বিবৃতি নির্বাহ করা হয়েছে পরে, আছে একটি পুরানো শৈলী হেডার এবং একটি নতুন শৈলীর সাথে কাজ করার মধ্যে কোন পার্থক্য নেই।
একটি পুরানো কম্পাইলারের সাথে কাজ করা উল্লিখিত হিসাবে, নামস্থান এবং নতুন শৈলী শিরোনাম উভয়ই C++ ভাষার সাম্প্রতিক সংযোজন। যদিও কার্যত সমস্ত নতুন C++ কম্পাইলার এই বৈশিষ্ট্যগুলিকে সমর্থন করে, পুরানো কম্পাইলার নাও হতে পারে। আপনার যদি এই পুরানো কম্পাইলারগুলির মধ্যে একটি থাকে, নমুনা প্রোগ্রামগুলির প্রথম দুটি লাইন কম্পাইল করার চেষ্টা করার সময় এটি এক বা একাধিক ত্রুটির রিপোর্ট করবে। যদি এটি হয় তবে একটি সহজ সমাধান রয়েছে, কেবল একটি পুরানো শৈলী হেডার ব্যবহার করুন এবং নামস্থান বিবৃতি মুছুন।
যে, শুধু প্রতিস্থাপন #include <iostream> namespace std ব্যবহার করে;
সঙ্গে #include <iostream.h> এই পরিবর্তনটি একটি আধুনিক প্রোগ্রামকে ঐতিহ্যগত শৈলীতে রূপান্তরিত করে। যেহেতু পুরানো শৈলীর শিরোনামটি এর সমস্ত বিষয়বস্তু বিশ্বব্যাপী নামস্থানে পড়ে, তাই একটি নামস্থান বিবৃতির প্রয়োজন নেই।
অন্য একটি পয়েন্ট, এখন এবং আগামী কয়েক বছরের জন্য, আপনি অনেক C++ প্রোগ্রাম দেখতে পাবেন যেগুলি পুরানো স্টাইলের শিরোনামগুলি ব্যবহার করে এবং যেগুলি একটি নামস্থান বিবৃতি অন্তর্ভুক্ত করে না। আপনার C++ কম্পাইলার ঠিক সেগুলি কম্পাইল করতে সক্ষম হবে। নতুন প্রোগ্রামগুলির জন্য, তবে, আপনার আধুনিক শৈলী ব্যবহার করা উচিত কারণ এটিই প্রোগ্রামের একমাত্র শৈলী যা স্ট্যান্ডার্ড C++ মেনে চলে। যদিও পুরানো শৈলীর প্রোগ্রামগুলি বহু বছর ধরে সমর্থিত হতে থাকবে, তারা প্রযুক্তিগতভাবে অসঙ্গতিপূর্ণ।
অনুশীলন:
এগিয়ে যাওয়ার আগে উপরে দেখানো নতুন স্টাইলের প্রোগ্রামটি কম্পাইল করার চেষ্টা করুন। যদিও এটি কিছুই করে না, এটি কম্পাইল করা আপনাকে বলবে যে আপনার কম্পাইলার আধুনিক C++ সিনট্যাক্স সমর্থন করে কিনা। যদি এটি নতুন শৈলী শিরোনাম বা নেমস্পেস বিবৃতি গ্রহণ না করে, বর্ণিত হিসাবে পুরানো শৈলী শিরোনাম প্রতিস্থাপন করুন। মনে রাখবেন, যদি আপনার কম্পাইলার নতুন শৈলী কোড গ্রহণ না করে, তাহলে আপনাকে প্রোগ্রামের জন্য কম্পাইলার পরিবর্তন করতে হবে।
0 Comments