1 पॉइंट द्वारा GN⁺ 2024-10-19 | 1 टिप्पणियां | WhatsApp पर शेयर करें

आधार

  • C भाषा CHAR_BIT macro के ज़रिए byte में bit की संख्या को implementation-defined रूप में उपलब्ध कराती है, और C++ ने भी इसे वैसा ही अपनाया है
  • आधुनिक hardware का अधिकांश हिस्सा इस धारणा पर आकर ठहर चुका है कि byte 8-bit का होता है
  • यह दस्तावेज़ प्रस्ताव करता है कि C++ में आधिकारिक रूप से स्पष्ट किया जाए कि byte 8-bit है
  • प्रमुख compiler पहले से ही 8-bit byte को support करते हैं
    • GCC default मान 8 पर सेट करता है
    • LLVM __CHAR_BIT__ को 8 पर सेट करता है
    • MSVC CHAR_BIT को 8 के रूप में define करता है
  • POSIX 2001 से 8-bit byte की मांग करता आ रहा है
  • जो software 8-bit byte को support नहीं करता, वह compatible नहीं है

C पर प्रभाव

  • यह प्रस्ताव इस बात की पड़ताल करता है कि क्या 8-bit के अलावा किसी और byte का उपयोग करने वाली architecture के लिए C++ की प्रासंगिकता है
  • C भाषा समिति किसी अलग निष्कर्ष पर पहुँच सकती है, और आदर्श स्थिति यह होगी कि दोनों समितियाँ सहमत हों

भाषा

  • C++ memory model में storage की मूल इकाई byte है, और byte 8-bit से बना होता है
  • CHAR_BIT macro climits header में रिपोर्ट किया जाता है

लाइब्रेरी

  • climits header, C standard library header limits.h की तरह, सभी macro define करता है
  • cstdint header निर्दिष्ट width वाले integer types और integer types की सीमाएँ बताने वाले macro उपलब्ध कराता है
  • सभी types और macro केवल तभी non-optional होते हैं जब byte 8-bit का हो

GN⁺ का सार

  • यह दस्तावेज़ C++ में byte के 8-bit होने को आधिकारिक रूप से स्पष्ट करने का प्रस्ताव है
  • आधुनिक hardware और software platform का अधिकांश हिस्सा 8-bit byte का उपयोग करता है, इसलिए इसे standardize करना तर्कसंगत है
  • non-8-bit byte architecture आधुनिक C++ के साथ compatible नहीं हैं, और ऐसी architecture का महत्व घट रहा है
  • यह प्रस्ताव C++ की complexity को कम करता है और नए programmer के लिए भाषा को समझना आसान बनाता है
  • समान प्रकृति वाले अन्य project में POSIX standard शामिल है

1 टिप्पणियां

 
GN⁺ 2024-10-19
Hacker News की राय
  • JF की "Can we acknowledge that every real computer works this way?" सीरीज़ में "Signed Integers are Two’s Complement" का उल्लेख था

    • 1986 की इंटर्नशिप के दौरान 10-bit byte इस्तेमाल करने वाली BBN C/70 मशीन पर C code लिखने का अनुभव था
    • यह ऐसी मशीन थी जो नकारात्मक ब्रह्मांड की सोच की वजह से अस्तित्व में थी
  • D language ने निम्न बिंदुओं में बड़ा सुधार किया

    • byte 8-bit है
    • short 16-bit है
    • int 32-bit है
    • long 64-bit है
    • arithmetic two’s complement है
    • IEEE floating point
    • इन abstractions को आज़माने और गलत नतीजे पाने में बर्बाद होने वाला समय बचा
    • Unicode को character set के रूप में इस्तेमाल किया गया
  • कुछ लोग अब भी DSP के साथ काम कर रहे हैं

  • व्यक्तिगत रूप से, "प्रतिद्वंद्वियों की तुलना में प्रति byte 50% अधिक bits" देने वाले 12-bit fantasy console को document करने में मज़ा आ रहा है

  • यह सवाल था कि C++ क्या हटा सकता है या सरल बना सकता है

    • सुना था कि rand() function टूटा हुआ है और इसे ठीक नहीं किया जा सकता, और यह भी सुना कि अब तक इसे deprecated नहीं किया गया है
  • इस बात को लेकर मिश्रित भावनाएँ हैं कि CHAR_BIT का 8 के अलावा कुछ और होना किसी सार्थक उपयोग में नहीं आता

    • व्यक्तिगत रूप से, कंप्यूटर के अंदर क्या हो रहा है इसे एक सरल मॉडल से समझने की कोशिश आखिरकार अपनी सीमा से टकराएगी
    • शुरुआती लोगों के बीच physical electronics projects की लोकप्रियता बढ़ रही है
  • प्रस्ताव में रुचि के लिए धन्यवाद, और feedback के आधार पर एक updated draft लिखा गया

  • 6-bit byte retro microcomputer का विचार पसंद है

    • microcomputer आमतौर पर कम संख्या में objects संभालते हैं, और arrays को pointers पर प्राथमिकता देते हैं
    • VGA हर color के लिए 6 bits इस्तेमाल करता था, और 6x4 bit matrix में पढ़े जा सकने वाले alphabet हो सकते हैं
    • 12MiB memory और स्वतंत्र रूप से address की जा सकने वाली 6 bits पर्याप्त होंगी
  • int8_t == char == 8 bits को मजबूर करने से सहमत हूँ, लेकिन यह गलतफहमी फैलाने को लेकर आश्वस्त नहीं हूँ कि byte 8-bit होता है

    • byte पहले से ही C++17 के बाद से char का "alias" है