- बिना किसी dialect वाले एकल C++ का सपना अब बहुत पहले ही खत्म हो चुका लगता है
- Reddit, वह नारंगी रंग की वेबसाइट (HN), और आधिकारिक C++ standards committee की बैठकों में C++ के भविष्य पर बहुत बहस चल रही है
C++ की वर्तमान स्थिति
- C++ Evolution Working Group (EWG) ने P3466 R0 को अपनाने पर सहमति दी है।
- ABI (Application Binary Interface) तोड़े बिना C और पुराने C++ के साथ link compatibility बनाए रखी जाती है।
- 'viral annotations' का उपयोग नहीं किया जाता।
- ABI breakage और zero-overhead principle जैसे परस्पर टकराने वाले लक्ष्यों पर कायम रहा जाता है।
- अमेरिकी सरकार ने C++ का उपयोग बंद करने की सिफारिश की है।
- CISA, NSA, White House सहित कई संस्थाओं ने memory-unsafe languages के उपयोग पर चेतावनी जारी की है।
- बड़ी tech कंपनियाँ Rust अपना रही हैं।
- Microsoft, Google, AWS आदि Rust का उपयोग कर रहे हैं।
- Google ने C++/Rust interoperability tools तक विकसित किए हैं
- C++ community के भीतर आंतरिक संघर्ष
- Herb Sutter के Microsoft छोड़ने और MSVC के C++23 features लागू करने में धीमे होने की खबर है।
- Google, C++ development process में अपनी भागीदारी घटा रहा है और अपनी खुद की C++ successor language विकसित कर रहा है।
- मौजूदा C++ standards committee process पर भरोसे की कमी
- modules feature अब भी अधूरी अवस्था में है
- 'safety profiles(‘Safety Profiles’)' एक अजीब स्थिति में हैं
C++ की दो संस्कृतियाँ
- आधुनिक और automated tools का उपयोग करने वाला समूह
- Google जैसी बड़ी tech कंपनियाँ इसके प्रमुख उदाहरण हैं
- यह नवीनतम C++ standards (C++17 और आगे) का उपयोग करता है, और automated build तथा test tools का support रखता है
- code quality बनाए रखने में निवेश करता है और codebase को लगातार modernize करता है
- legacy C++ समूह
- ऐसे codebase जो पुराने environments और tools पर चलते हैं
- source code के बिना चलते हैं या जिनके build systems पुराने हैं
- maintenance cost अधिक है और modernization की बाधाएँ बड़ी हैं
- मुख्य अंतर tools और process का है
- आधुनिक C++ समूह integrated build systems, static analyzers, formatters, linters जैसे tools पर निर्भर करता है
- legacy समूह, इन tools और processes की कमी के कारण, कम operational efficiency के साथ काम करता है
परिणाम और प्रभाव
- safety profiles
- उद्देश्य यह है कि मौजूदा legacy code में बदलाव किए बिना सुरक्षा को मजबूत किया जाए
- आधुनिक C++ की जरूरतों की तुलना में मौजूदा code को बनाए रखने पर अधिक फोकस
- modules
- इस तरह डिज़ाइन किए गए हैं कि header files को आसानी से modules के रूप में import किया जा सके
- legacy code के साथ compatibility को ध्यान में रखकर डिज़ाइन किए गए हैं
- C++ community का विभाजन
- आधुनिक और legacy समूहों की requirements में असंगति के कारण community के भीतर टकराव गहरा रहा है
- C++ standards committee का conservative approach इन टकरावों को कम करने की कोशिश जैसा दिखता है
वैकल्पिक दृष्टिकोण
- Safe C++ जैसे वैकल्पिक विचारों का community के भीतर स्वागत नहीं हो रहा है
- यह आलोचना भी मौजूद है कि standards committee के कुछ सदस्य अपने व्यक्तिगत aesthetic मानदंडों पर अड़े रहते हैं और बदलाव का विरोध करते हैं
3 टिप्पणियां
Rust के लिए GUI development का ecosystem अभी नहीं है, इसलिए इसे अपनाया नहीं जा पा रहा है.
उम्मीद है कि Rust इस्तेमाल करने वाला कोई अच्छा GUI framework सामने आए...
मुझे नहीं पता कि Rust, C++ की जगह ले सकता है या नहीं,
लेकिन यह सच है कि नए C++ प्रोजेक्ट लगभग दिखाई ही नहीं देते...
लगता है कि C++ समिति ने रूपांतरण की बजाय उसके मूल मूल्य को अधिक महत्व देने वाली दिशा को सही माना है।
Hacker News राय
Google का C++ कोड अक्सर नवीनतम versions पर काम नहीं करता, और कई बार developers इसे ठीक करने की इच्छा भी नहीं रखते। इसका कारण यह है कि Google का कोड पुराने और आधुनिक के बीच के एक मध्य बिंदु पर अटका हुआ है
C++ standard पर काम करने वालों को मौजूदा C++ दिशा का समर्थन करने और C++ के भविष्य को लेकर ऑनलाइन शोर को नज़रअंदाज़ करने की सलाह देता है
दावा करता है कि C++ इस्तेमाल करने वाला एकमात्र समूह वही बचेगा जिसके पास इतना बड़ा legacy codebase है कि उसे refactor करना संभव नहीं है
Rust के edition system को बहुत अच्छी तरह काम करने वाला मानता है
चिंता जताता है कि Herb Sutter के Microsoft छोड़ने की खबर का Microsoft पर अच्छा असर नहीं पड़ेगा
ज़ोर देता है कि automated testing ही दोनों गुटों को अलग करने वाला मुख्य तत्व है
दावा करता है कि C++ की आकर्षण-शक्ति घटाने वाला मुख्य कारण modules की अनुपस्थिति थी
तुलना करता है कि Herb Sutter समझौता कराने में कुशल थे, जबकि Google ने अपना agenda आगे बढ़ाया
उल्लेख करता है कि बड़े codebases वाले ग्राहक कड़े नियमों को पूरा करने के लिए अपने code का 1% भी बदलना नहीं चाहते
समझाता है कि Python और Javascript/Node/Typescript में भी कई गुट मौजूद हैं