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 टिप्पणियां
Hacker News की राय
2011 में iterator-driven for लिखा था। उस समय कल्पना की थी कि यह C++ standard में शामिल हो सकता है
मेरे पास High C/C++ Language Reference है
D language (या Das BetterC) में उपलब्ध फीचर्स:
'lcc-win' C compiler ने operator overloading, default function arguments, और function overloading जोड़े थे
Plan 9 C compiler ने कई language extensions पेश किए थे, जिनमें से कुछ C standard में शामिल हुए
आज GCC
-fplan9-extensionsflag को 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 के
printfstatements और code comments में English की गुणवत्ता प्रभावशाली हैखासकर generators से जुड़े फीचर्स उस समय के हिसाब से बहुत आगे थे
यह शायद इसलिए भी संभव हुआ क्योंकि Fujitsu standardization process से नहीं गुज़री। लेकिन यही कारण है कि ऐसी extensions आज के C/C++ में फिर से खोजी और फिर से आविष्कृत की गई लगती हैं