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

Go भाषा के ओपन सोर्स प्रोजेक्ट रिलीज़ के 14 साल पूरे होने पर

  • Go भाषा के सह-निर्माताओं में से एक ने 10 नवंबर 2023 को सिडनी में आयोजित GopherConAU कॉन्फ्रेंस में अपना अंतिम व्याख्यान दिया।
  • इस व्याख्यान में Go भाषा के ओपन सोर्स प्रोजेक्ट के रूप में रिलीज़ हुए 14 वर्ष पूरे होने का स्मरण किया गया और इस दौरान मिली सफलताओं तथा आत्ममंथन के बिंदुओं पर चर्चा की गई।
  • वक्ता ने स्पष्ट किया कि वे Go टीम या Google का प्रतिनिधित्व नहीं कर रहे हैं, बल्कि अपनी व्यक्तिगत राय रख रहे हैं, और Go भाषा की सफलता में योगदान देने वाले समुदाय के प्रति आभार व्यक्त किया।

Go भाषा की सफलता के कारण और सुधार के बिंदु

  • Go भाषा का मूल लक्ष्य एक नई programming language बनाना नहीं था, बल्कि software लिखने के तरीके को बेहतर बनाना था।
  • Go भाषा ने dependency management, बड़े टीमों के साथ collaboration, maintenance की सरलता, efficient testing, multi-core CPU और networking के प्रभावी उपयोग जैसी आधुनिक server software निर्माण की जटिलताओं को हल करने का प्रयास किया।
  • Go भाषा सिर्फ एक programming language नहीं, बल्कि production software को अधिक आसान और उत्पादक तरीके से बनाने का एक प्रोजेक्ट है।

Go भाषा का मैस्कॉट, gopher

  • Go भाषा का मैस्कॉट gopher, Go भाषा की सफलता में महत्वपूर्ण भूमिका निभाता है।
  • gopher, Go programmers का प्रतीक और community का ध्वज रहा है, और प्रोजेक्ट की वृद्धि के लिए यह आवश्यक था।
  • gopher डिज़ाइन को Creative Commons Attribution लाइसेंस के तहत जारी करने से community spirit को बढ़ावा मिला, लेकिन copyright समस्याओं के कारण कुछ कठिनाइयाँ भी आईं।

Go भाषा की तकनीकी सफलता के कारण

  • आधिकारिक specification का निर्माण, multiple implementations की उपलब्धता, portability, compatibility की गारंटी, समृद्ध libraries, tools विकसित करने की सरलता, और automatic code formatting tool gofmt जैसी चीज़ों ने Go भाषा की सफलता में योगदान दिया।
  • gofmt ने पूरे programming community पर प्रभाव डाला, जिससे अधिकांश भाषाओं में standard formatter होने की दिशा बनी।

concurrency और interfaces

  • Go भाषा ने concurrency को भाषा का प्रमुख घटक बनाया, जिससे server software की संरचना को सरल बनाने में मदद मिली।
  • interfaces, Go भाषा की विशिष्ट अवधारणाओं में से एक हैं; यह object-oriented design के प्रति Go का उत्तर है और standard library तथा dependency management आदि में महत्वपूर्ण भूमिका निभाते हैं।

generics और compiler

  • interfaces की मौजूदगी, Go भाषा में generics जोड़ने में लंबा समय लगने के कारणों में से एक थी।
  • शुरुआती Go compiler का C में लिखा जाना programming language community में विवाद का विषय था, लेकिन Go भाषा के विकास के लिए यह उपयुक्त विकल्प था।

project management और package management

  • ओपन सोर्स प्रोजेक्ट के रूप में Go भाषा का शुरुआती विकास निजी रूप से किया गया, लेकिन सार्वजनिक होने के बाद community के योगदान में विस्फोटक वृद्धि हुई।
  • package management का विकास-प्रक्रिया सुचारु नहीं रही, और community के साथ collaboration के तरीकों की समझ अपर्याप्त थी।

documentation और examples

  • शुरुआती Go documentation community की अपेक्षाओं पर खरी नहीं उतरी, लेकिन बाद में web पर executable examples उपलब्ध कराने जैसे सुधार किए गए।

GN⁺ की राय

  • Go भाषा की सफलता के पीछे मजबूत standard library, concurrency support, interface-आधारित design, स्पष्ट package management, तेज़ build और testing tools, consistent code formatting, readability पर ज़ोर, और compatibility guarantee जैसे तत्व रहे हैं।
  • Go भाषा ने सिर्फ programming language के रूप में ही नहीं, बल्कि software development के तरीके में भी बदलाव लाया, और यह community की विविधता तथा समर्थन की बदौलत संभव हुआ।
  • Go भाषा की विकास-प्रक्रिया और उस पर किया गया आत्ममंथन, ओपन सोर्स प्रोजेक्ट चलाने के लिए महत्वपूर्ण सबक प्रदान करता है।

1 टिप्पणियां

 
GN⁺ 2024-01-05
Hacker News प्रतिक्रियाएँ
  • प्रोजेक्ट रेट्रोस्पेक्टिव के लिए समय देने वाले प्रमुख लोगों के प्रति आभार

    • सिस्टम प्रोग्रामिंग पर फोकस रखने वाली भाषा-सीमाएँ
    • भाषा और सिद्धांतों को स्पष्ट रूप से परिभाषित करना, ताकि अस्पष्टता और अलग उद्देश्य वाले डिज़ाइन पर होने वाली बर्बादी से बचा जा सके
    • क्वालिटी को प्राथमिकता देना, ताकि समस्याओं को डिप्लॉयमेंट से पहले हल करना सभी हितधारकों के लिए कम खर्चीला हो
    • कम्युनिटी शेयरिंग और कड़े भाषा तथा रिलीज़ प्रबंधन के बीच संतुलन बनाए रखना
    • Google का गैर-हस्तक्षेप Go की सफलता में योगदानकारी रहा, और यह सवाल उठता है कि क्या यह दूसरे प्रोजेक्ट्स में भी संभव है
    • Go सर्वर-साइड सॉफ़्टवेयर को Java से native container की ओर ले जाने वाली एक प्रमुख तकनीक थी, और पिछले 10 वर्षों में इसने वेब एप्लिकेशन इन्फ्रास्ट्रक्चर के बड़े हिस्से को सहारा दिया
  • Go भाषा और कम्युनिटी के प्रति लगाव

    • 2012 में एक Python डेवलपर के रूप में Go से परिचय हुआ और bit manipulation की आसानी देखकर आश्चर्य हुआ
    • 10 साल बाद भी Go की अधिकांश सुविधाएँ अब भी अच्छी तरह काम कर रही हैं, यह देखकर हैरानी होती है
    • Rob, Ian, Russ आदि ने Go के लिए जो किया और कम्युनिटी के साथ "सड़क की ऊबड़-खाबड़ियों" को लेकर उनकी ईमानदारी के लिए आभार
    • package management समस्याओं पर आलोचनात्मक नज़रिया है, लेकिन माना जाता है कि अब एक अच्छा समाधान मिल चुका है
  • Go की package management system पर आलोचनात्मक अनुभव साझा

    • 10 साल पहले go-nuts में Go के package management तरीके पर आलोचनात्मक राय रखने पर Rob Pike द्वारा नज़रअंदाज़ किए जाने का अनुभव
  • Go भाषा पर आलोचनात्मक दृष्टिकोण

    • भाषा की गहरी समस्याओं को स्वीकार करने की कमी
    • type system, error handling, असुरक्षित concurrency, और अत्यधिक साधारण syntax के कारण Go की सिफारिश नहीं की जाती
    • Rust को मुख्य भाषा के रूप में इस्तेमाल करते हैं, और जो विज़न Go में नहीं मिला वह Rust में दिखा
  • Ken Thompson के C compiler उपयोग के फैसले पर दिलचस्प बात

    • LLVM की जगह Ken Thompson के C compiler का उपयोग करने के फैसले पर असंतोष, और शुरुआती संस्करणों में non-optimized code generation का उल्लेख
    • इस फैसले की वजह से segmented stack को जल्दी लागू किया जा सका
  • gofmt के सफल अपनाने पर ज़ोर

    • प्रोजेक्ट के शुरुआती दौर से ही code formatting पर होने वाली बहस को पूरी तरह हटाकर इसने बहुत बड़ा मूल्य दिया
    • कई नई भाषाओं को gofmt की नकल करते हुए या वैसा ही टूल बनाते हुए देखा गया
  • GopherConAU आयोजक के रूप में पूरी playlist साझा

    • समझ नहीं आता कि playlist को सार्वजनिक क्यों नहीं किया जा सकता
  • Go का उपयोग करके monorepo आसानी से बनाना और ऐप्स को तेज़ी से बिल्ड करने के फायदे

    • Go से CLI tools बनाना आसान है और उन्हें Unix pipeline के हिस्से के रूप में इस्तेमाल किया जा सकता है
    • Go बड़े पैमाने के log analysis आदि में उपयोगी है
  • Go की interoperability और C FFI पर किए गए विकल्पों का पर्याप्त उल्लेख नहीं

    • "Go में फिर से लिखो" जैसा जवाब दूसरे विकल्पों को बाहर कर देता है
  • compiler को उसी की अपनी भाषा में लिखने पर राय

    • यह सवाल कि जो भाषा खुद अपनी भाषा में compile नहीं होती, क्या वह compiler लिखने के लिए उपयुक्त नहीं है
    • इस निहितार्थ को समझना कठिन है कि compiler के लिए उपयुक्त भाषा अन्य applications के लिए उपयुक्त नहीं होगी, और इस पर अधिक संदर्भ की आवश्यकता है