36 पॉइंट द्वारा GN⁺ 2025-01-08 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • पिछले 1 साल में LLM (Large Language Model) का उपयोग करके प्रोग्रामिंग करने के अनुभव का सारांश
  • LLM ने productivity बढ़ाई है, और अब इसके बिना प्रोग्रामिंग पर लौटना मुश्किल लगता है
  • मुख्य रूप से Go प्रोग्रामिंग environment पर फोकस करते हुए sketch.dev नाम का एक tool विकसित किया जा रहा है

पृष्ठभूमि

  • शुरुआत नई तकनीक के प्रति जिज्ञासा से हुई।
  • सवालों के जटिल जवाब बनाने और प्रोग्रामिंग कोड लिखने की LLM की क्षमता ने आकर्षित किया।
  • इससे वैसा ही उत्साह और संभावनाएँ महसूस हुईं जैसी इंटरनेट के शुरुआती दौर में हुई थीं।
  • जब tool “ज्यादातर सही” कोड बनाता है, तो उससे मिलने वाले शुद्ध लाभ को पहचानकर उसे व्यावहारिक रूप से उपयोग करने की कोशिश की गई।

मुख्य उपयोग के मामले

  1. ऑटो-कम्प्लीट (Autocomplete)

    • बार-बार दोहराए जाने वाले coding कामों को ऑटो-कम्प्लीट से संभालकर productivity बढ़ती है
    • खासकर FIM (Fill-In-the-Middle) मॉडल रोज़मर्रा के कामों में अनिवार्य हैं
  2. सर्च का विकल्प (Search)

    • खास प्रोग्रामिंग सवालों (जैसे CSS में button transparency सेट करना) का जवाब search engine से अधिक सटीक रूप में देता है
    • LLM के जवाब गलत हो सकते हैं, लेकिन इस सीमा को स्वीकार करते हुए इसका उपयोग किया जाता है
  3. संवाद-आधारित प्रोग्रामिंग (Chat-driven Programming)

    • यह सबसे कठिन, लेकिन सबसे मूल्यवान क्षेत्र है।
    • नई files बनाना, libraries खोजना जैसे शुरुआती कामों को अपने ऊपर ले लेता है।
    • संवादात्मक प्रोग्रामिंग का लक्ष्य मौजूदा असुविधाओं को कम करना और LLM की क्षमताओं को अधिक user-friendly बनाना है

संवादात्मक प्रोग्रामिंग का मूल

  • संवाद का उपयोग क्यों करें?

    • दिन बीतने के साथ ऊर्जा कम होने पर पहला draft देने में यह उपयोगी है
    • शुरुआती draft को देखकर उसमें बदलाव करना, शुरू से लिखने की तुलना में अधिक प्रभावी है
  • LLM के साथ काम करने का तरीका

    1. स्पष्ट और संक्षिप्त task goal सेट करना
    2. कोड को पढ़ना, verify करना और सुधारना
    3. compiler errors का उपयोग करके जल्दी समस्या हल करना
  • प्रभावी tests लिखना

    • LLM tests लिखने में उत्साही होता है और अधिक thorough test environment बना सकता है
    • example-based tests के अलावा इसे fuzz test तक बढ़ाया जा सकता है

उदाहरण: fraction sampler

  • लक्ष्य: Go भाषा में data stream के quartiles को sample करने वाला algorithm लिखना
  • प्रक्रिया
    1. LLM के जरिए पहला draft तैयार करना
    2. compile errors ठीक करते हुए कोड को बेहतर बनाना
    3. test code को फिर से लिखकर अधिक पढ़ने योग्य structure बनाना

नए code structure की संभावनाएँ

  • छोटे packages, ज़्यादा tests

    • छोटे packages code context को अधिक स्पष्ट बनाते हैं, इसलिए वे LLM और इंसानों दोनों के लिए अधिक उपयोगी हैं
    • इससे स्वतंत्र tests और compilation की संभावना बढ़ती है
  • उदाहरण: API wrapper

    • बड़े official library की जगह केवल ज़रूरी हिस्सों को लागू करने वाले पतले wrapper के उपयोग की सिफारिश की जाती है
    • maintenance और learning cost कम होती है

आगे की दिशा: sketch.dev

  • LLM के लिए Go IDE
    • LLM-केंद्रित प्रोग्रामिंग environment प्रदान करता है
    • automated test feedback, compiler error fixes, Go module integration आदि का समर्थन करता है
    • इंसान और LLM के बीच सहयोग को मज़बूत करके अधिक productive environment प्रदान करता है

1 टिप्पणियां

 
GN⁺ 2025-01-08
Hacker News राय
  • लेखक पहले से ही विश्व-स्तरीय software engineer हैं, Google के पूर्व कर्मचारी और Tailscale के co-founder/CTO भी हैं। यह प्रभावशाली है कि LLMs उन्हें और अधिक productive बनाते हैं.

    • LLMs नए ideas का draft तैयार करने में उपयोगी हैं.
    • पहले implementation database से लाया जाता था, लेकिन अब LLMs उसे real time में generate कर देते हैं.
  • LLMs काम शुरू करने की शुरुआती energy को कम कर देते हैं.

    • वे कुछ नया आज़माने की बाधा को कम करते हैं.
    • इनमें इंसानी स्तर की गहराई नहीं होती, लेकिन ज्ञान का दायरा व्यापक होता है.
    • अलग-अलग तरह की programming करने वाले लोगों के लिए उपयोगी हैं.
  • LLMs का उपयोग करते समय इन्हें सिर्फ उन्हीं क्षेत्रों में इस्तेमाल करना चाहिए जिन्हें आप अच्छी तरह जानते हों.

    • समय की बचत तभी होती है जब आप गलत हिस्सों को आसानी से पहचान सकें.
    • ये search में मदद करते हैं.
  • LLMs में software development tool के रूप में संभावना है.

    • sketch.dev पहली कोशिश में साफ-सुथरे examples देता है.
    • ऐसे LLMs की ज़रूरत है जिन्हें language के official documentation के अनुसार train किया गया हो.
    • LLMs का human-like बनाया जाना असहज लगता है.
  • यह search engine इस्तेमाल करने जैसा है.

    • सही keywords का इस्तेमाल महत्वपूर्ण है.
  • LLMs इस्तेमाल करने की कोई खास इच्छा महसूस नहीं होती.

    • सीधे coding करने की प्रक्रिया का आनंद आता है.
    • LLMs लागत बढ़ा सकते हैं.
  • जो लोग programmer नहीं हैं, उनके लिए LLMs बहुत मददगार हैं.

    • ये code लिखने का समय काफी कम कर देते हैं.
    • personal projects के लिए उपयोगी हैं.
  • सरल applications लिखने में LLMs उपयोगी हैं.

    • minimum viable product का वर्णन करें तो ये code generate कर सकते हैं.
    • technical debt तेज़ी से बढ़ सकता है.
  • शौकिया programming करने वालों के लिए LLMs मददगार हैं.

    • ये project structure सेट करने और code generate करने में मदद करते हैं.
    • लेकिन अस्पष्ट निर्देशों की वजह से समस्याएँ हो सकती हैं.
  • LLMs का उपयोग मुख्य रूप से autocomplete और search के लिए होता है.

    • ChatGPT मौजूदा code को optimize करने में उपयोगी है.