Goose प्रोग्रामिंग भाषा: C++ और Rust को पछाड़ने का दावा करने वाली इस नई भाषा के बारे में सब कुछ
Goose एक नई सिस्टम्स भाषा है जिसमें न तो हीप है, न गारबेज कलेक्टर और न ही लाइफटाइम एनोटेशन। इसके निर्माता का कहना है कि यह सामान्य C++ से 3 गुना से अधिक तेजी से चलती है। जानिए यह कैसे काम करती है और क्या इसे आज़माना चाहिए।

हाल के हफ़्तों में डेवलपर्स के बीच सबसे चर्चित विषयों में से एक Goose प्रोग्रामिंग भाषा रही है। इसे एक अनुभवी प्रोग्रामर और Lobster भाषा के रचयिता Wouter van Oortmerssen ने बनाया है। Goose Apache 2.0 लाइसेंस के तहत ओपन सोर्स है, और सबसे दिलचस्प बात यह है कि इसके लेखक का कहना है कि इसका कंपाइलर मानव-निर्मित भाषा विनिर्देश (specification) के आधार पर लगभग पूरी तरह से AI द्वारा तैयार किया गया था।
मुख्य विचार: कोई हीप नहीं
अधिकांश भाषाओं में, डायनेमिक डेटा जैसे अरे और स्ट्रिंग्स हीप पर रहते हैं और उन्हें मैनेज करने के लिए गारबेज कलेक्टर (Java, Go), रेफरेंस काउंटिंग (Swift) या लाइफटाइम नियमों (Rust) की आवश्यकता होती है। Goose इनमें से किसी का भी उपयोग नहीं करती है। इसके डॉक्यूमेंटेशन के अनुसार, हर डायनेमिक वैल्यू कंपाइलर द्वारा प्रबंधित डेटा स्टैक पर रहती है।
- प्रत्येक स्टैक एक सरल बंप पॉइंटर के साथ एक बड़ा एड्रेस-स्पेस रिजर्वेशन (डिफ़ॉल्ट रूप से 2GB) होता है
- प्रति स्टैक एक समय में केवल एक ही आकार बदलने योग्य (resizable) वैल्यू लाइव होती है, और यह हमेशा सबसे ऊपर होती है
- एक अरे को बड़ा करने से केवल पॉइंटर आगे बढ़ता है — कुछ भी इधर-उधर नहीं होता है
- स्कोप खत्म होने पर मेमोरी खाली करना एक सिंगल स्टोर होता है
कंपाइलर इन नियमों को कंपाइल-टाइम पर साबित करता है; रनटाइम पर केवल बंप पॉइंटर्स को ट्रैक किया जाता है।
सुरक्षा (Safety) कैसे काम करती है
प्रत्येक रेफरेंस का एक स्टैटिक "रूट" होता है — वह वेरिएबल जो उसके लाइफटाइम को बांधता है। कंपाइलर खुद ही रूट्स का अनुमान लगाता है और उन रेफरेंस को अस्वीकार कर देता है जो अपने ओनर से ज़्यादा समय तक जीवित रहते हैं। Rust के विपरीत, प्रोग्रामर्स को कोई लाइफटाइम एनोटेशन नहीं लिखना पड़ता है, और इसमें कोई 'unsafe' कोड नहीं होता है।
सिंटैक्स की एक झलक
Goose का सिंटैक्स कॉम्पैक्ट और C जैसा है। वेरिएबल-साइज़ डेटा वाले स्ट्रक्चर को इस तरह घोषित किया जाता है: struct Item { sku: u8[varint], qty: varint, cents: varint }। इसमें तीन तरह के अरे होते हैं: फ़िक्स-साइज़, ग्रो-ओनली और ग्रो-श्रिंक।
स्पीड: लेखक के आंकड़े
लेखक ने 16 बेंचमार्क (ज्यामितीय माध्य) के परिणाम प्रकाशित किए हैं। उनके अनुसार, Goose:
- सामान्य C++ से लगभग 3.3–3.5 गुना तेज़ है
- हाथ से ऑप्टिमाइज़ किए गए C++ से 1.16–1.26 गुना तेज़ है
- सबसे अच्छे सेफ़ Rust से 1.12–1.19 गुना तेज़ है
- 1.2–1.9 गुना कम मेमोरी का उपयोग करती है
उदाहरण के लिए, Goose में एक ऑर्डर रिकॉर्ड 29 बाइट्स लेता है और शून्य एलोकेशन करता है, जबकि C++ में 160 बाइट्स और एक एलोकेशन तथा Rust में 153 बाइट्स और चार एलोकेशन होते हैं। ध्यान रखें कि ये लेखक के अपने बेंचमार्क हैं; स्वतंत्र सत्यापन अभी सीमित है।
सीमाएं
- रिकर्सिव फ़ंक्शन रिकर्सिव कॉल के दौरान ग्रो करने योग्य डेटा को सुरक्षित नहीं रख सकते
- कोई एस्केपिंग क्लोजर या फ़ंक्शन पॉइंटर्स नहीं
- केवल संपूर्ण-कार्यक्रम (whole-program) संकलन
- लाइब्रेरी इकोसिस्टम अभी बहुत छोटा है
इसे कैसे आज़माएं
Windows x64, Linux x64 और macOS (Apple सिलिकॉन और Intel) के लिए प्रीबिल्ट कंपाइलर उपलब्ध हैं। Goose एक सिंगल C फ़ाइल में संकलित (compile) होती है, इसलिए यह किसी भी ऐसी जगह चलती है जहाँ C कंपाइलर काम करता है। GitHub पर aardappel/goose पेज से रिलीज़ डाउनलोड करें, फ़ोल्डर को अपने PATH में जोड़ें और goose samples/01_tour.goose के साथ एक सैंपल चलाएं।アーカイブ में एक VS Code एक्सटेंशन भी शामिल है।
निष्कर्ष
Goose मेमोरी मैनेजमेंट के लिए एक नए दृष्टिकोण के साथ एक आकर्षक प्रयोग है। प्रदर्शन की परवाह करने वाले सिस्टम्स प्रोग्रामर को इस पर नज़र रखनी चाहिए और इसे आज़माना चाहिए। लेकिन यह भाषा नई है: प्रोडक्शन उपयोग के लिए, स्वतंत्र बेंचमार्क और एक बड़े इकोसिस्टम का इंतज़ार करना समझदारी होगी।
स्रोत: Goose (aardappel)



