From Restructuring to Stabilization: A Large-Scale Experiment on Iterative Code Readability Refactoring with Large Language Models
यह शोध पत्र एक बड़े पैमाने के प्रयोग को प्रस्तुत करता है जो यह प्रदर्शित करता है कि लार्ज लैंग्वेज मॉडल्स का उपयोग करके पुनरावृत्ति कोड पठनीयता रिफैक्टरिंग (iterative code readability refactoring) एक पूर्वानुमेय पैटर्न का अनुसरण करती है, जिसमें प्रारंभिक पुनर्गठन के बाद स्थिरीकरण होता है, जो इष्टतम कोड शैली की एक आंतरिक समझ को प्रकट करता है जो विभिन्न वेरिएंट्स और प्रॉम्प्टिंग रणनीतियों में सुदृढ़ बनी रहती है।
मूल पेपर CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) के तहत लाइसेंस किया गया है। नीचे दिए गए पेपर की यह व्याख्या AI से तैयार की गई है। इसे लेखकों ने न तो लिखा है, न इसका समर्थन किया है। तकनीकी सटीकता के लिए मूल पेपर देखें। पूरा डिस्क्लेमर पढ़ें
कल्पना कीजिए कि आपके पास एक बिखरा हुआ, अस्त-व्यस्त गैरेज है। आप एक बहुत ही स्मार्ट, बहुत तेज़ रोबोट (एक लार्ज लैंग्वेज मॉडल, या LLM) को इसे व्यवस्थित करने के लिए काम पर रखते हैं। आप उसे कहते हैं, "इसे इस तरह से व्यवस्थित करो कि इसमें चीजें ढूँढना आसान हो जाए।"
रोबोट काम शुरू कर देता है। वह डिब्बे इधर-उधर करता है, जार पर नए लेबल लगाता है, और शेल्फ को फिर से व्यवस्थित करता है। लेकिन यहाँ एक मोड़ है: आप उसे सिर्फ एक बार नहीं कहते। आप उससे बार-बार पूछते हैं, "क्या तुम इसे और भी अधिक पठनीय (readable) बना सकते हो?" और ऐसा वह पाँच बार लगातार करता है।
यह पेपर उस कहानी के बारे में है जो तब हुई जब शोधकर्ताओं ने गैरेज के बजाय कंप्यूटर कोड के साथ बिल्कुल यही प्रयोग किया। वे देखना चाहते थे कि क्या रोबोट अंततः "परफेक्ट" व्यवस्था खोज लेगा, या वह बस चीजों को गोल-गोल घुमाता रहेगा, भ्रमित होता रहेगा।
यहाँ उनके प्रयोग और उनके निष्कर्षों का विवरण दिया गया, जिसे सरल उपमाओं (analogies) का उपयोग करके समझाया गया है:
प्रयोग: "गैरेज" सेटअप
शोधकर्ताओं ने जावा कोड के 230 टुकड़ों (जो कंप्यूटर के लिए छोटे निर्देश मैनुअल की तरह हैं) को लिया। उन्होंने प्रत्येक के तीन संस्करण बनाए:
- "अच्छा" गैरेज: वह कोड जो पहले से ही अच्छी तरह से लिखा गया था।
- "बकवास" गैरेज: वह कोड जहाँ सभी लेबल बदलकर अर्थहीन (nonsense) कर दिए गए थे (जैसे "कार" को "केला" कहना) और सभी नोट्स हटा दिए गए थे।
- "शांत" (Silent) गैरेज: वह कोड जहाँ सभी व्याख्यात्मक नोट्स (comments) हटा दिए गए थे।
फिर उन्होंने रोबोट (विशेष रूप से GPT-5.1 नामक मॉडल) से इन गैरेजों को पाँच बार लगातार रिफैक्टर (पुनर्गठित) करने के लिए कहा। उन्होंने यह भी आज़माया कि रोबोट को अलग-अलग निर्देश कैसे दिए जाएं:
- सामान्य: "बस इसे पठनीय बनाओ।"
- नामों पर ध्यान दें: "लेबल (वेरिएबल नाम) बेहतर बनाएं।"
- नोट्स पर ध्यान दें: "बेहतर नोट्स जोड़ें।"
बड़ी खोज: "पुनर्गठन करें, फिर स्थिर हों"
सबसे महत्वपूर्ण खोज यह है कि रोबोट एक अनुमानित पैटर्न का पालन करता है, जैसे कोई व्यक्ति कमरा साफ कर रहा हो:
- अराजकता का चरण (पुनर्गठन - Restructuring): पहले दौर में, रोबोट बड़े, व्यापक बदलाव करता है। वह भारी फर्नीचर हटाता है, पेंट का रंग बदलता है, और सब कुछ फिर से लेबल करता है। यदि कोड अव्यवस्थित था, तो वह गंदगी को ठीक करता है। यदि कोड पहले से ही साफ था, तो भी वह अनावश्यक रूप से चीजों को इधर-उधर करके उसे "सुधारने" की कोशिश करता है।
- शांत चरण (स्थिरीकरण - Stabilization): पहले या दूसरे दौर के बाद, रोबोट धीमा हो जाता है। वह बड़े बदलाव करना बंद कर देता है। वह केवल छोटी-मोटी चीजें ठीक करता है, जैसे किसी फोटो फ्रेम को सीधा करना। अंततः, वह लगभग पूरी तरह से बदलना बंद कर देता है।
उपमा: इसे गिटार ट्यून करने जैसा समझें। पेंच के पहले कुछ घुमाव बड़े और तेज़ होते हैं (पुनर्गठन)। एक बार जब सुर सही होने के करीब पहुँच जाता है, तो आप बहुत छोटे, लगभग अदृश्य समायोजन करते हैं जब तक कि आवाज़ एकदम सही और स्थिर न हो जाए।
मुख्य निष्कर्षों का सरल स्पष्टीकरण
1. रोबोट के पास एक "मानसिक आदर्श" है
भले ही उन्होंने "बकवास" कोड (अर्थहीन नाम) या "शांत" कोड (बिना नोट्स के) से शुरुआत की थी, रोबोट अंततः उन्हें ऐसे कोड में बदल देता है जो "अच्छे" शुरुआती बिंदु से बने कोड के बहुत समान दिखता है।
- इसका अर्थ है: रोबोट के पास एक आंतरिक "आदर्श संस्करण" है कि साफ कोड कैसा दिखता है। आप चाहे कितनी भी गंदगी से शुरुआत करें, वह कोड को उसी एक आदर्श मंजिल की ओर ले जाने की कोशिश करता है। यह वैसा ही है जैसे यदि आप तीन अलग-अलग लोगों को लेगो (LEGO) का ढेर दें और उनसे एक "परफेक्ट घर" बनाने को कहें, तो वे सभी एक बहुत ही समान दिखने वाला घर बनाएंगे, भले ही उन्होंने अलग-अलग रंगों की ईंटों से शुरुआत की हो।
2. "ओवर-रिफैक्टरिंग" का खतरा
जब कोड पहले से ही अच्छा था, तब भी रोबोट ने पहले दौर में उसे बदलने की कोशिश की। वह उन चीजों का नाम बदल देता था या नोट्स हटा देता था जो वास्तव में ठीक थे।
- सबक: यदि आप AI को ऐसा कोड ठीक करने के लिए कहते हैं जो पहले से ही परफेक्ट है, तो वह उसे बदलने या खराब करने की कोशिश कर सकता है क्योंकि उसे लगता है कि उसे "कुछ करना चाहिए"। यह एक ऐसे शेफ की तरह है जो एक बेहतरीन मसालेदार सूप को चखता है और उसमें नमक डाल देता है क्योंकि उसे लगता है कि उसे ऐसा करना चाहिए।
3. "नाम-दोलन" (Name-Oscillation) का जाल
जब शोधकर्ताओं ने रोबोट को विशेष रूप से "नामों पर ध्यान केंद्रित करने" के लिए कहा, तो कुछ अजीब हुआ। रोबोट नामों को बार-बार बदलता रहा।
- उपमा: कल्पना कीजिए कि रोबोट ने एक वेरिएबल का नाम "Car" रखा, फिर उसे "Vehicle" में बदला, फिर वापस "Car" किया, फिर "Automobile" कर दिया। वह एक नाम पर टिक नहीं पाया। वह निर्णय न ले पाने के चक्रव्यूह में फंस गया।
- तुलना: जब उन्होंने इसे "नोट्स पर ध्यान केंद्रित करने" के लिए कहा, तो रोबोट ने नोट्स जोड़े और फिर रुक गया। वह उन्हें बार-बार जोड़ता या हटाता नहीं रहा। वह जानता था कि कब रुकना है।
4. क्या यह कोड को तोड़ देता है?
शोधकर्ताओं ने यह जांचा कि क्या रोबोट गैरेज के अंदर की "मशीनरी" (कार्यात्मक तर्क/functional logic) को तोड़ देता है।
- परिणाम: आश्चर्यजनक रूप से, रोबोट ने शायद ही कभी कोड को तोड़ा। भले ही वह चीजों को इधर-उधर कर रहा था, इंजन चलता रहा। हालांकि, एक बहुत ही कम संभावना (1% से कम) थी कि वह कुछ तोड़ सकता है, जो आमतौर पर बहुत विशिष्ट मामलों में होता है।
मनुष्यों के लिए सीख
यह पेपर हमें सिखाता है कि कोडिंग के लिए AI टूल्स का उपयोग बिना हताश हुए कैसे किया जाए:
- अंतहीन सुधार के लिए न कहें: यदि आप AI को पांच बार कोड को रिफैक्टर करने के लिए कहते हैं, तो पहली दो बार सबसे उपयोगी होती हैं। उसके बाद, यह ज्यादातर केवल पहिये घुमाने या छोटे, अनावश्यक बदलाव करने जैसा है।
- निर्देशों के साथ सावधान रहें: यदि आप AI को "नाम ठीक करने" के लिए कहते हैं, तो यह नामों को बदलने के लूप में फंस सकता है। यदि आप इसे "नोट्स ठीक करने" के लिए कहते हैं, तो यह अच्छा काम करेगा और फिर रुक जाएगा।
- विश्वास करें, लेकिन जांचें: AI कोड लिखने का एक "मानक" तरीका खोजने में बहुत अच्छा है, लेकिन यह उन नोट्स को हटा सकता है या उन चीजों को बदल सकता है जिन्हें बदलने की आवश्यकता नहीं थी। आपको अंतिम निर्णय लेने वाला 'बॉस' होना चाहिए कि रोबोट ने कब पर्याप्त काम कर लिया है।
संक्षेप में: लार्ज लैंग्वेज मॉडल्स बहुत उत्साही इंटर्न की तरह होते हैं। वे एक बिखरी हुई मेज को साफ करने और चीजों को व्यवस्थित करने का एक मानक तरीका खोजने में बहुत अच्छे हैं। लेकिन यदि आप उन्हें बहुत लंबे समय तक अकेला छोड़ देते हैं, तो वे उत्पादक महसूस करने के लिए चीजों को इधर-उधर करने लग सकते हैं, या स्टेपलर को क्या कहें, इस बारे में भ्रमित हो सकते हैं। आपको उन्हें बताना होगा कि कब रुकना है।
अपने क्षेत्र के पेपरों की भीड़ में उलझे हुए हैं?
आपके रिसर्च कीवर्ड से मेल खाने वाले सबसे नए और अलग सोच वाले पेपरों का रोज़ाना Digest पाएँ—तकनीकी सारांश के साथ, आपकी भाषा में।