C++ के निर्माता ने व्हाइट हाउस की चेतावनी का खंडन किया
C++ सुरक्षा बनाम दिशानिर्देश
- कई लोगों का तर्क है कि C++ मूल रूप से असुरक्षित बना रहता है: सुरक्षा “दिशानिर्देश” वैकल्पिक हैं, उनका प्रवर्तन असंगत है, और मौजूदा कोड पर उन्हें बाद में लागू करना कठिन है।
- अन्य लोग कहते हैं कि सख्त अनुशासन के साथ C++ “काफी सुरक्षित” हो सकता है: फीचर उपसमुच्चयों का सीमित उपयोग, स्मार्ट पॉइंटर्स, वैल्यू सेमांटिक्स, सैनीटाइज़र, अधिकतम चेतावनियाँ, और कोर दिशानिर्देशों के अनुरूप लिंटर्स।
- कई लोग नोट करते हैं कि नए फीचर्स (जैसे
string_view, इटरेटर्स) का भी दुरुपयोग करना आसान है और वे सूक्ष्म lifetime bugs ला सकते हैं।
प्रदर्शन पर बहस (C++ बनाम अन्य)
- एक पक्ष का दावा है कि आधुनिक Java और अन्य managed भाषाएँ अक्सर “वास्तविक दुनिया” के C++ प्रदर्शन की बराबरी कर लेती हैं या उसे पार कर जाती हैं, खासकर तब जब सामान्य C++ परियोजनाओं में उन्नत build/optimization setups (PGO, LTO, आदि) नहीं होते।
- विरोधी जवाब देते हैं कि उच्च-प्रदर्शन क्षेत्र (AI/ML, HPC, GPU workloads) भारी रूप से C/C++ पर निर्भर हैं, और Java/GC सीमाएँ इसे उन चरम परिस्थितियों में अनुपयुक्त बनाती हैं।
- कुछ लोग ज़ोर देते हैं कि C++ विश्वसनीय रूप से तभी जीतता है जब विशेषज्ञ memory layout, allocation, और cache behavior को आक्रामक रूप से प्रबंधित करें—ऐसा प्रयास जो अधिकांश codebases में कभी नहीं दिखता।
वास्तविक दुनिया के C++ codebases
- “आदर्शीकृत आधुनिक C++” और गंदे, legacy, mixed-style code के बीच अंतर किया जाता है, जो उद्योग में हावी है।
- पुराने C++03-युग के सिस्टम विशेष रूप से सुरक्षित रूप से विकसित करने में कठिन माने जाते हैं; कुछ चुनिंदा elite shops इसे संभाल लेती हैं, लेकिन कई अन्य असफल हो गईं या उन्होंने माइग्रेट कर लिया।
- “आधुनिक” code में भी, योगदानकर्ता standard library quirks, iterator invalidation, और सूक्ष्म UB से crashes की रिपोर्ट करते हैं, जिन्हें compiler नहीं पकड़ता।
Rust और memory-safe विकल्प
- कई लोग Rust (और कुछ हद तक Go, Java, Swift, आदि) को संरचना के स्तर पर स्पष्ट रूप से अधिक सुरक्षित मानते हैं, जो memory bugs की बड़ी श्रेणियों को समाप्त कर देता है।
- अन्य लोग तर्क देते हैं कि अच्छी तरह लिखे गए C++ और Rust के बीच safety gap छोटा है, और Rust के अपने unsafe blocks तथा C libraries पर निर्भरता पर ज़ोर देते हैं।
- Rust की async “coloring,” ecosystem maturity, और third-party crates के भारी उपयोग (supply-chain और complexity risks) को लेकर चिंताएँ उठाई जाती हैं।
सरकारी मार्गदर्शन और प्रतिक्रिया
- कुछ लोग व्हाइट हाउस की C/C++ से दूर जाने की पहल को लंबे समय से अपेक्षित इस मान्यता के रूप में देखते हैं कि दशकों की memory-safety समस्याएँ दिखाती हैं कि भाषा स्वयं एक मूल समस्या है।
- अन्य लोग व्यावहारिकता पर ज़ोर देते हैं: C++ बहुत गहराई से जड़ें जमा चुका है (OSes, browsers, robotics, finance, embedded), इसे बस हटाया नहीं जा सकता, और tooling तथा profiles के माध्यम से इसे अधिक सुरक्षित बनाना होगा।
- C++ की चल रही safety proposals (profiles, “C++ v2”) के समय पर आने या अपनाए जाने को लेकर संदेह है, बनिस्बत इसके कि नए projects के लिए सीधे Rust या अन्य अधिक सुरक्षित भाषाएँ चुनी जाएँ।