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

MetaWare के High C compiler के खोए हुए language extensions

1980 के दशक के C compiler

  • 1980 के दशक में कई छोटी कंपनियाँ प्रतिस्पर्धा कर रही थीं और अलग-अलग language extensions दे रही थीं
  • Phar Lap ने DOS extender विकसित किया, जिससे 32-bit 80386 processor का उपयोग किया जा सकता था, और MetaWare ने इसके लिए High C compiler को port किया
  • Fujitsu ने Phar Lap के DOS extender को FM TOWNS platform में एकीकृत किया, और High C इस platform का default C compiler बन गया

High C के अनोखे language extensions

  • High C में सिर्फ DOS-specific extensions ही नहीं, बल्कि उपयोगकर्ता-केंद्रित कई language extensions भी शामिल थे
  • इनमें से कुछ features कई दशकों बाद जाकर official standard में शामिल हुए, और कुछ आज भी C या C++ में मौजूद नहीं हैं

Numeric literals में underscore का उपयोग

  • लंबे numeric literals को पढ़ने में आसान बनाने के लिए underscores का उपयोग किया जा सकता था
  • C++ ने यह feature C++14 में जोड़ा, और C ने C23 में

Labeled arguments

  • बहुत सारे arguments वाले function calls में arguments को label किया जा सकता था
  • यह Python के लोकप्रिय feature जैसा है, और argument labels होने पर arguments को क्रम से स्वतंत्र होकर दिया जा सकता था
  • Standard C या C++ में अब भी यह feature नहीं है

Range cases

  • Pascal की तरह values की range को match करने की सुविधा देता था
  • Standard C या C++ में यह feature नहीं है

Nested functions

  • किसी function के भीतर दूसरे functions को nested declaration के रूप में घोषित किया जा सकता था
  • Nested functions को "whole function value" type के रूप में declare किया जा सकता था, जो non-escaping closure की तरह काम करता था
  • यह GCC के nested function extension से अधिक पूर्ण implementation देता था
  • Standard C में अब भी आधिकारिक nested function feature नहीं है

Generators

  • Python-style generator coroutines को support करता था
  • Generator functions कई बार values produce कर सकते थे, और नए for loop syntax का उपयोग करके हर value को क्रम से process किया जा सकता था
  • यह nested function feature के साथ जटिल interaction की अनुमति देता था
  • Standard C में इस feature के शामिल होने की संभावना कम है

GN⁺ की संक्षिप्त प्रस्तुति

  • MetaWare का High C compiler 1980 के दशक में तरह-तरह के language extensions देता था, जिससे C भाषा की expressiveness काफी बढ़ गई
  • कुछ features कई दशकों बाद जाकर official standard में शामिल हुए, और कुछ आज भी C या C++ में मौजूद नहीं हैं
  • Generators और nested functions जैसे advanced features आज की कई programming languages में भी मुश्किल से मिलते हैं
  • यह लेख C भाषा के इतिहास और उसके विकास को समझने में मदद करता है, और programming language design पर दिलचस्प insights देता है

1 टिप्पणियां

 
GN⁺ 2024-09-27
Hacker News की राय
  • 2011 में iterator-driven for लिखा था। उस समय कल्पना की थी कि यह C++ standard में शामिल हो सकता है

  • मेरे पास High C/C++ Language Reference है

  • D language (या Das BetterC) में उपलब्ध फीचर्स:

    • literals में underscore का उपयोग किया जा सकता है
    • case range निर्दिष्ट किए जा सकते हैं
    • named arguments का उपयोग किया जा सकता है
    • nested functions का उपयोग किया जा सकता है
    • static nested functions का उपयोग किया जा सकता है
    • generators जैसे फीचर्स उपलब्ध हैं
  • 'lcc-win' C compiler ने operator overloading, default function arguments, और function overloading जोड़े थे

  • Plan 9 C compiler ने कई language extensions पेश किए थे, जिनमें से कुछ C standard में शामिल हुए

  • आज GCC -fplan9-extensions flag को support करता है, जो struct pointers को anonymous fields में अपने-आप convert करने जैसी सुविधाएँ देता है

  • इन फीचर्स को लाने वाला व्यक्ति अपने समय से बहुत आगे था। लेकिन अफ़सोस है कि इसका standard पर असर नहीं पड़ा

  • इससे जुड़ी बात Hacker News पर पहले भी आ चुकी है

  • कोई पूछ रहा है कि क्या इसकी PDF copy उपलब्ध है

  • example code में string literals \n की जगह ¥n पर ख़त्म होने का कारण Shift-JIS code page है

  • generators वाली बात Rust के internal/external iteration सवाल और try_fold() की याद दिलाती है

  • किताब की typography एक साथ सुंदर भी लगती है और भयानक भी

  • मुझे Japanese notation या kerning rules की ज़्यादा जानकारी नहीं है, लेकिन ऐसा लगता है जैसे variable-width font को fixed-width cells में ज़बरदस्ती फिट किया गया हो

  • यह अच्छा है कि code examples 8pt font में नहीं हैं

  • कोई पूछ रहा है कि किताब मूल रूप से Japanese में लिखी गई थी या पहले English में लिखकर फिर Japanese में अनुवाद की गई थी

  • अगर यह Fujitsu की है, तो संभव है कि इसे Japanese में ही लिखा गया हो। किसी non-native speaker के printf statements और code comments में English की गुणवत्ता प्रभावशाली है

  • खासकर generators से जुड़े फीचर्स उस समय के हिसाब से बहुत आगे थे

  • यह शायद इसलिए भी संभव हुआ क्योंकि Fujitsu standardization process से नहीं गुज़री। लेकिन यही कारण है कि ऐसी extensions आज के C/C++ में फिर से खोजी और फिर से आविष्कृत की गई लगती हैं