13 पॉइंट द्वारा xguru 2023-07-13 | 2 टिप्पणियां | WhatsApp पर शेयर करें
  • C++20 के बाद आने वाला अगली पीढ़ी का C++ मानक
  • यह C++98, C++11, C++20 जैसे game changer जैसा नहीं है, बल्कि C++17 स्तर के छोटे बदलाव लाता है

(40 वर्षों में) C++ मानक के बदलावों को समझें

C++98

  • 80 के दशक के आखिर में Bjarne Stroustrup और Margaret A. Ellis ने प्रसिद्ध Annotated C++ Reference Manual (ARM) पुस्तक लिखी
  • इस पुस्तक के दो उद्देश्य थे
    • C++ के बहुत अधिक स्वतंत्र implementation मौजूद थे, इसलिए ARM ने C++ की विशेषताओं को परिभाषित किया
    • यह C++ मानक C++98 (ISO/IEC 14882) की नींव बना
  • C++98 में कुछ महत्वपूर्ण फीचर शामिल थे
    • Templates
    • STL(Standard Template Library) : इसमें container, algorithm, string, IO Stream शामिल हैं

C++03

  • C++03 (14882:2003) में बहुत छोटे तकनीकी संशोधन किए गए
  • समुदाय में C++98 सहित C++03 को "legacy C++" कहा जाता है

TR1

  • 2005 में एक दिलचस्प घटना हुई। TR1(Technical Report 1) प्रकाशित हुआ
  • TR1, C++11 की दिशा में एक बड़ा कदम था और Modern C++ की ओर पहला कदम भी
  • यह C++ standards committee के सदस्यों के Boost project पर आधारित था
  • इसमें अगली C++ standard में शामिल होने वाली 13 libraries थीं (regular expression, random number, std::shard_ptr जैसे smart pointer, hash table आदि)

C++11

  • यह अगला C++ standard था, लेकिन हम इसे Modern C++ कहते हैं। इस नाम में C++14 और C++17 भी शामिल हैं
  • C++11 ने C++ विकसित करने का तरीका पूरी तरह बदल दिया
    • यह TR1 के components के साथ-साथ move-semantic, perfect forwarding, variadic templates, constexpr आदि भी लाया
    • इसमें threading-आधारित memory model और Threading API शामिल थे

C++14

  • छोटा C++ standard। इसमें read-writer locks, generalized lambdas और constexpr functions जोड़े गए

C++17

  • न बहुत बड़ा, न बहुत छोटा
  • इसमें 2 बेहतरीन फीचर शामिल थे: Parallel STL और standardized filesystem
    • लगभग 80 STL algorithm execution policy के ज़रिए चलाए जा सकते हैं (parallel, sequential, vector)
  • इस पर Boost का काफी प्रभाव था। filesystem और 3 data types (std::optional, std::variant, std::any)

C++20

  • C++20 ने, C++11 की तरह, C++ programming करने का हमारा तरीका बदल दिया
  • खास तौर पर 4 बड़ी चीज़ें
    • Ranges : Ranges library का उपयोग करके container पर सीधे algorithm व्यक्त किए जा सकते हैं, और pipe symbol से algorithm को जोड़कर infinite data stream पर लागू किया जा सकता है
    • Coroutines: इसने C++ में asynchronous programming को मुख्यधारा में ला दिया। यह cooperative tasks, event loop, infinite data stream और pipeline की नींव बनता है
    • Concepts: इसने template के बारे में सोचने और programming करने का तरीका बदल दिया। template arguments पर constraints लगाए जा सकते हैं, type checks किए जा सकते हैं, और इन्हें compile time पर सत्यापित किया जा सकता है
    • Modules: यह header files की सीमाओं से आगे जाने देता है। यह कई वादे करता है। जैसे preprocessor की ज़रूरत खत्म हो सकती है, build time घट सकता है, और package को बनाना आसान हो सकता है

C++23

  • जुलाई 2023 तक C++23 अंतिम मतदान से पहले की अवस्था में था
  • इसमें छोटा लेकिन भाषा पर बहुत प्रभाव डालने वाला फीचर "Deducing this" जोड़ा गया
    • Python की तरह, member function में implicit रूप से पास होने वाले this pointer को explicit बनाया जा सकता है
    • इससे CRTP(Curiously Recurring Template Pattern) जैसी जटिल तकनीक, या Overload pattern का implementation सरल हो जाता है
  • C++23 library में भी महत्वपूर्ण additions हैं
    • import std; के साथ standard library को सीधे import किया जा सकता है, और std:print तथा std::println में C++20 format string लागू किए जा सकते हैं
    • performance के लिहाज़ से std::map का विकल्प std::flat_map
    • composability के लिए std::optional interface को monadic interface तक विस्तारित किया गया
    • नया data type std::expected
    • multidimensional span std::mdspan
    • संख्याओं की stream बनाने के लिए coroutine std::generator

2 टिप्पणियां

 
carnoxen 2023-07-13

लगता है अभी तक networking standard से जुड़ी कोई खबर नहीं है।

 
penza1 2023-07-20

अगले standard में भी;; मुझे लगता है कि यह पक्का नहीं होगा