আমি আপনার প্রশ্নের উত্তর দেওয়ার চেষ্টা করব, যদিও এটি একটি পুরানো প্রশ্ন, এবং এটি খুব গুরুত্বপূর্ণ দেখাচ্ছে না (এটি সত্যই নিজের মধ্যে খুব গুরুত্বপূর্ণ নয় ), এবং এটি ইতিমধ্যে বেশ ভাল উত্তর পেয়েছে। আমি এর উত্তর দিতে চাইছি কারণ এটি ভাষা বিদ্যমান ভাষার উপর ভিত্তি করে যখন আদর্শ বিবর্তন এবং ভাষা নকশার মৌলিক বিষয়গুলির সাথে সম্পর্কিত: ভাষা বৈশিষ্ট্যগুলি কখন অবমুক্ত করা, অপসারণ করা বা বেমানান উপায়ে পরিবর্তন করা উচিত?
সি ++ তে প্রতীকের দৃশ্যমানতা (পরিবর্তনশীল বা ফাংশন ঘোষণাপত্র) প্রভাবিত করতে অনুবাদ ইউনিটের মধ্যে স্থির কীওয়ার্ড ব্যবহার করা সম্ভব।
লিঙ্কেজ আসলে।
N3092 এ, এটি অবহেলা করা হয়েছিল:
অবচয় নির্দেশ করে:
- অভিপ্রায় ভবিষ্যতে বৈশিষ্ট্য মুছে ফেলার জন্য; এর অর্থ এই নয় যে প্রত্যাখ্যানিত বৈশিষ্ট্যগুলি পরবর্তী মানক সংশোধনীতে মুছে ফেলা হবে, বা সেগুলি "শীঘ্রই" মুছে ফেলা হবে বা একেবারে। এবং নন-অবহিত বৈশিষ্ট্যগুলি পরবর্তী মানক সংশোধনীতে মুছে ফেলা হতে পারে।
- এর ব্যবহারকে নিরুৎসাহিত করার একটি আনুষ্ঠানিক প্রচেষ্টা ।
পরের বিষয়টি গুরুত্বপূর্ণ is যদিও কখনও আনুষ্ঠানিক প্রতিশ্রুতি নেই যে আপনার প্রোগ্রামটি ভাঙবে না, কখনও কখনও নীরবে, পরবর্তী মানদণ্ডে, কমিটির "যুক্তিসঙ্গত" কোডটি ভঙ্গ করা এড়ানোর চেষ্টা করা উচিত। অবজ্ঞার প্রোগ্রামারদের বলা উচিত যে কোনও বৈশিষ্ট্যের উপর নির্ভর করা অযৌক্তিক ।
যদিও এটি আন্ডারলাইন করে যে সি এর সাথে সামঞ্জস্য করার জন্য (এবং সি-প্রোগ্রামগুলি সি ++ হিসাবে সংকলন করার ক্ষমতা) অবমূল্যায়ন বিরক্তিকর। তবে, সি ++ সরাসরি কোনও সি প্রোগ্রাম সংকলন করা ইতিমধ্যে হতাশাব্যঞ্জক অভিজ্ঞতা হতে পারে, সুতরাং এটি বিবেচনার পরোয়ানা পেলে আমি অনিশ্চিত।
একটি সি / সি ++ সাধারণ উপসেটটি সংরক্ষণ করা খুব গুরুত্বপূর্ণ, বিশেষত শিরোলেখ ফাইলগুলির জন্য। অবশ্যই, static
বিশ্বব্যাপী ঘোষণাগুলি অভ্যন্তরীণ সংযোগ সহ প্রতীক হিসাবে ঘোষণা এবং এটি একটি শিরোলেখ ফাইলটিতে খুব কার্যকর নয়।
তবে ইস্যুটি কেবলমাত্র সি এর সাথে সামঞ্জস্য নয়, এটি বিদ্যমান সি ++ এর সাথে সামঞ্জস্যপূর্ণ: প্রচুর বৈধ সি ++ প্রোগ্রাম রয়েছে যা static
বিশ্বব্যাপী ঘোষণাপত্র ব্যবহার করে । এই কোডটি কেবল আনুষ্ঠানিকভাবে আইনী নয়, এটি দুর্দান্ত, কারণ এটি কোনওভাবে সংজ্ঞায়িত ভাষা বৈশিষ্ট্যটি যেভাবে ব্যবহার করার উদ্দেশ্যে করা হয়েছে তা ব্যবহার করে ।
কেবল এখন কিছু করার জন্য একটি "আরও ভাল উপায়" (কারও মতে) প্রোগ্রামগুলি পুরানো উপায়ে "খারাপ" বা "অযৌক্তিক" লিখিত করে তোলে না। static
বিশ্বব্যাপী সুযোগে অবজেক্টস এবং ফাংশনগুলির ঘোষণায় কীওয়ার্ডটি ব্যবহারের দক্ষতা সি এবং সি ++ উভয় সম্প্রদায়ের মধ্যেই ভালভাবে বোঝা যায় এবং বেশিরভাগ ক্ষেত্রে সঠিকভাবে ব্যবহৃত হয়।
একটি অনুরূপ শিরা ইন, আমি সি-শৈলী কাস্ট পরিবর্তন করতে যাচ্ছি না double
করতে static_cast<double>
মাত্র কারণ, "সি-শৈলী কাস্ট খারাপ" হিসাবে static_cast<double>
শূন্য তথ্য ও শূন্য নিরাপত্তা যোগ করা হয়েছে।
যখনই কোনও কিছু করার জন্য কোনও নতুন উপায় আবিষ্কার করা হয় তখন সমস্ত প্রোগ্রামাররা তাদের বিদ্যমান সু-সংজ্ঞায়িত ওয়ার্কিং কোডটি পুনরায় লেখার জন্য ছুটে যেতেন কেবল ক্রেজি। যদি আপনি উত্তরাধিকার সূত্রে প্রাপ্ত সমস্ত কদর্যতা এবং সমস্যাগুলি সরাতে চান তবে আপনি সি ++ পরিবর্তন করবেন না, আপনি একটি নতুন প্রোগ্রামিং ভাষা উদ্ভাবন করেছেন। অর্ধ-মুছে ফেলার একটি ব্যবহার static
খুব কমই সি -+ কম সি-কুরুচিযুক্ত করে।
কোড পরিবর্তনগুলির ন্যায্যতা প্রয়োজন, এবং "পুরানো খারাপ এটি" কোড পরিবর্তনের পক্ষে ন্যায়সঙ্গত হয় না।
ভাষা পরিবর্তনগুলি খুব শক্তিশালী ন্যায়সঙ্গত প্রয়োজন। ভাষাটিকে খুব সামান্য সরল করে তোলা কখনই কোনও ব্রেকিং পরিবর্তনের যৌক্তিকতা নয়।
static
খারাপ কেন দেওয়া হয়েছে তার কারণগুলি কেবলমাত্র দুর্বল, এবং এটি এমনকি পরিষ্কার নয় যে কেন উভয় অবজেক্ট এবং ফাংশন ঘোষণা একসাথে অবমূল্যায়ন করা হয় না - তাদের আলাদা চিকিত্সা দেওয়া খুব কমই সি ++ সহজ বা আরও অরথোগোনাল করে তোলে।
সুতরাং, সত্যিই, এটি একটি দুঃখের গল্প। ব্যবহারিক পরিণতিগুলির কারণে নয়: এর ঠিক শূন্য ব্যবহারিক পরিণতি হয়েছিল। তবে কারণ এটি আইএসও কমিটির সাধারণ জ্ঞানের সুস্পষ্ট অভাব দেখায়।