কিছু ক্ষেত্রে যেমন বর্ণিত হিসাবে দেখা যায়, সি ++ স্ট্যান্ডার্ড কম্পাইলাররা যে কোনও ফ্যাশনে তাদের গ্রাহকদের সবচেয়ে কার্যকর বলে মনে করে এমন আচরণের পূর্বাভাস ছাড়াই প্রয়োজনীয় নির্মাণের প্রক্রিয়া করতে দেয়। অন্য কথায়, এই ধরনের নির্মাণগুলি "অনির্ধারিত আচরণ" ডাকে। তবে এটি বোঝায় না যে এই জাতীয় নির্মাণগুলি "নিষিদ্ধ" বলে বোঝানো হয়েছে, যেহেতু সি ++ স্ট্যান্ডার্ড সুস্পষ্টভাবে তৈরি প্রোগ্রামগুলি "অনুমোদিত" হওয়ার বিষয়ে তার এখতিয়ারকে সুস্পষ্টভাবে মওকুফ করে। যদিও আমি সি ++ স্ট্যান্ডার্ডের জন্য কোনও প্রকাশিত যৌক্তিক নথি সম্পর্কে অসচেতন, যদিও এটি সি 98 এর মতো অপরিজ্ঞাত আচরণের বর্ণনা দেয় তা হ'ল বোঝানো অর্থ একইরকম বোঝায়: "অপরিজ্ঞাত আচরণ বাস্তবায়নকারীকে কিছু নির্দিষ্ট প্রোগ্রামের ত্রুটিগুলি ধরার জন্য অনুমতি দেয় না যেগুলি জটিল নির্ণয় করতে.
অনেকগুলি পরিস্থিতি রয়েছে যেখানে কোনও কিছুর প্রক্রিয়াকরণের সবচেয়ে কার্যকর উপায়টি এমন কোনও কাঠামোর অংশগুলি লেখার সাথে জড়িত থাকে যা ডাউনস্ট্রিম কোডটি যত্ন করে চলেছে, যখন যেগুলি ডাউনস্ট্রিম কোডটি যত্ন করে না সেগুলি বাদ দেয়। প্রোগ্রামগুলির কোনও কাঠামোর সমস্ত সদস্যকে আরম্ভ করার প্রয়োজনীয়তা রয়েছে, যার মধ্যে এমন কোনও কিছুই নেই যা কখনই যত্ন করে না, অকারণে দক্ষতা বাধা দেয়।
তদুপরি, কিছু পরিস্থিতি রয়েছে যেখানে অ-নিরবচ্ছিন্ন উপাত্তগুলি অ-নিরস্তকরণ পদ্ধতিতে আচরণ করা সবচেয়ে দক্ষ হতে পারে। উদাহরণস্বরূপ, প্রদত্ত:
struct q { unsigned char dat[256]; } x,y;
void test(unsigned char *arr, int n)
{
q temp;
for (int i=0; i<n; i++)
temp.dat[arr[i]] = i;
x=temp;
y=temp;
}
যদি স্ট্রিম কোড কোনও উপাদান x.dat
বা y.dat
এর সূচকগুলিতে তালিকাভুক্ত ছিল না এর মূল্যগুলির বিষয়ে চিন্তা করে না arr
, কোডটি এতে অনুকূলিত হতে পারে:
void test(unsigned char *arr, int n)
{
q temp;
for (int i=0; i<n; i++)
{
int it = arr[i];
x.dat[index] = i;
y.dat[index] = i;
}
}
দক্ষতার এই উন্নতি সম্ভব হবে না যদি প্রোগ্রামাররা temp.dat
অনুলিপি করার আগে, যেসব স্ট্রিম স্ট্রিমের যত্ন নেয় না সেগুলি সহ প্রতিটি উপাদান স্পষ্টভাবে লিখতে হয় ।
অন্যদিকে, কিছু অ্যাপ্লিকেশন রয়েছে যেখানে ডেটা ফাঁসের সম্ভাবনা এড়ানো গুরুত্বপূর্ণ। এই জাতীয় অ্যাপ্লিকেশনগুলিতে, ডাউন স্ট্রিম কোডটি দেখবে কিনা তা বিবেচনা ছাড়াই অবিচ্ছিন্ন স্টোরেজ অনুলিপি করার কোনও প্রচেষ্টা ফাঁদে ফেলার জন্য কোডটির এমন একটি সংস্করণ ব্যবহার করা কার্যকর হতে পারে, বা কোনও স্টোরেজ গ্যারান্টি সহ কার্যকর হতে পারে যার বিষয়বস্তু ফাঁস হতে পারে সেগুলি শূন্য হবে বা অন্যথায় গোপনীয় ডেটা দিয়ে ওভাররাইট করা হবে।
আমি যা বলতে পারি সেগুলি থেকে, সি ++ স্ট্যান্ডার্ড এটি বলার চেষ্টা করে না যে এই আচরণগুলির যথাযথতা প্রমাণ করার জন্য এই আচরণগুলির মধ্যে কোনওটি অন্যের চেয়ে যথেষ্ট কার্যকর useful হাস্যকরভাবে, নির্দিষ্টকরণের এই অভাবটি অপ্টিমাইজেশনের সুবিধার্থে উদ্দেশ্যে করা যেতে পারে তবে প্রোগ্রামাররা যদি কোনও ধরণের দুর্বল আচরণগত গ্যারান্টি ব্যবহার করতে না পারে তবে কোনও অপ্টিমাইজেশন এড়ানো হবে।