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

Go मेरा हथौड़ा है, और हर चीज़ एक कील

परिचय

  • Markus एक solo developer और digital product creator हैं
  • वे टीम के बिना अकेले काम करते हैं और लचीले कामकाजी तरीके को पसंद करते हैं
  • वे जटिल tech stack से बचते हैं और ग्राहकों को value देने पर ध्यान केंद्रित करते हैं

Go चुनने के कारण

कारण 1: Go लगभग सब कुछ कर सकता है

  • Go सरल, पढ़ने में आसान और सुसंगत है
  • इसका उपयोग CLI, cloud infrastructure, HTTP server, network tasks जैसी कई तरह की जरूरतों के लिए किया जा सकता है
  • Nintendo Switch games, GUI apps, terminal string synthesizer जैसी चीज़ें भी Go में विकसित की जा सकती हैं

कारण 2: context switching में कमी

  • कई programming languages इस्तेमाल करने पर syntax बदलने की वजह से कठिनाई होती है
  • सिर्फ एक language इस्तेमाल करने से इस समस्या से बचा जा सकता है
  • language, compiler, IDE, toolchain, community जैसी कई चीज़ों को manage करना आसान हो जाता है

कारण 3: गहरी समझ

  • एक ही language पर फोकस करने से अधिक गहरी समझ विकसित की जा सकती है
  • कई languages संभालने की तुलना में एक language पर ध्यान देना अधिक productive होता है
  • यह software development की जटिलता कम करने में मदद करता है

निष्कर्ष

  • Markus, Go का उपयोग करके अलग-अलग projects सफलतापूर्वक पूरा कर रहे हैं
  • Go की गहरी समझ के ज़रिए वे अपनी productivity बढ़ा रहे हैं
  • Go के माध्यम से वे विभिन्न चुनौतियों का समाधान कर सकते हैं

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

  • Markus, एक solo developer के रूप में Go चुनकर जटिलता कम करते हैं और productivity बढ़ाते हैं
  • Go कई तरह के उपयोगों के लिए उपयुक्त है, और इसकी सादगी व सुसंगतता इसे manage करना आसान बनाती है
  • एक language पर ध्यान केंद्रित करने से गहरी समझ विकसित की जा सकती है, और यह कई languages इस्तेमाल करने से अधिक efficient हो सकता है
  • Go के जरिए अलग-अलग projects सफलतापूर्वक पूरे किए जा सकते हैं, और यह दूसरे developers के लिए भी उपयोगी हो सकता है

1 टिप्पणियां

 
GN⁺ 2024-08-13
Hacker News राय
  • वित्तीय डेटा प्रोसेस करने वाली एक कंपनी में Go का उपयोग करके काम करने का अनुभव है

    • सहकर्मियों का CSV फ़ाइलों को एग्रीगेट करने या डेटाबेस अपडेट करने जैसे one-off कामों के लिए Go इस्तेमाल करना असहज लगा
    • Pandas का उपयोग किए बिना बेसिक algorithm खुद implement करने वाले सहकर्मियों को देखकर उन पर भरोसा करना मुश्किल था
    • लगा कि यह कंपनी के समय की बर्बादी थी, और यह दिखाने की अहंकार वाली बात थी कि Go ही काफ़ी है
  • बहुत से लोग किसी भाषा को सही तरह से सीखने की लागत को कम आँकते हैं

    • उस स्तर तक पहुँचने में 2-4 साल लगते हैं जहाँ आप कह सकें कि आप उस भाषा को "जानते हैं"
    • भाषा, compiler, runtime, standard library और idiomatic तरीकों को समझने में 8-10 साल लगते हैं
    • इस अवधि में आप भाषा के उपयोग के तरीकों को विकसित कर सकते हैं और शुरुआती लोगों को जल्दी प्रशिक्षित कर सकते हैं
  • लगता है कि Go लगभग हर काम के लिए उपयुक्त है

    • Go का उपयोग करते समय उत्पादकता बहुत अधिक होती है
    • अगर project 100 lines से ज़्यादा हो, तो यह Python से बेहतर है
    • Go के फ़ायदे:
      • भाषा बहुत सरल है
      • core library अच्छी तरह design की गई है
      • toolchain और core library से ही ज़्यादातर काम किए जा सकते हैं
  • लगता है कि Go personal projects के लिए उपयुक्त नहीं है

    • कोड verbose हो जाता है और साधारण कामों के लिए भी बहुत कोड लिखना पड़ता है
    • proper enum, union type, null safety जैसी चीज़ों की कमी है
    • इन वजहों से personal projects में मज़ा नहीं आता
  • Typescript और Rust को प्राथमिकता देते हैं

    • Deno और Typescript, Go की तुलना में ज़्यादा versatile tools हैं
    • Typescript ज़्यादा safe और ergonomic है, लेकिन थोड़ा धीमा है
    • Rust ज़्यादा safe और तेज़ है, लेकिन सीखना कठिन है
    • Typescript के फ़ायदे:
      • null safety
      • व्यापक रूप से supported generics
      • discriminated union types
      • safe concurrency
      • collection/iterator methods
    • Go के फ़ायदे:
      • size और memory usage के लिहाज़ से ज़्यादा efficient है
      • Go का GC, V8 से बेहतर है
      • CPU-bound कामों में ज़्यादा तेज़ है
      • standard library बड़ी है
  • Go और Typescript दोनों का उपयोग किया है, लेकिन Kotlin/JVM को प्राथमिकता देते हैं

    • Gradle/Maven के दोराहे और build system को लेकर असहजता है, लेकिन language features और runtime के लिहाज़ से बहुत संतुष्ट हैं
  • लगता है कि Go एक all-round tool है

    • सब कुछ सरल है और इस्तेमाल करना आसान है
    • ज़्यादा external tools के बिना भी सरल commands से compile और deploy किया जा सकता है
    • दूसरी भाषाओं के भी अपने फ़ायदे हैं, लेकिन Go जितनी सरल और बिना झंझट वाली नहीं हैं
  • Go पसंद है, लेकिन उससे प्यार नहीं है

    • लगता है कि tooling बिखरी हुई है
    • Go modules अधूरे लगते हैं
    • generics अभी भी primitive लगते हैं
    • ecosystem अधूरा महसूस होता है
  • Go के ज़्यादातर पहलू पसंद हैं, लेकिन बहुत numerical code लिखने वाले व्यक्ति के रूप में operator overloading का न होना एक कमी है

    • Python और C++ का उपयोग जारी है
    • Rust, C++ के विकल्प के रूप में आकर्षक है, लेकिन Python के विकल्प के लिए उसमें नियम बहुत ज़्यादा हैं
  • ज़िंदगी इतनी छोटी है कि एक ही चीज़ में माहिर होना भी कठिन है, इसलिए सावधानी से चुनना चाहिए

    • Go चुनने के कारण:
      • शानदार standard library
      • पढ़ना और लिखना आसान
      • single static binary build
      • container की ज़रूरत नहीं
      • हर जगह इस्तेमाल किया जा सकता है (web development, desktop apps, game development, embedded आदि)