बड़े भाषा मॉडल प्रोग्रामिंग को बदल देंगे... थोड़ा

Feb 21 2023
मुझे प्रचार पसंद नहीं है। शायद यह मुझमें संशय है, हमेशा एक दावे पर सवाल उठाने की कोशिश करना, साक्ष्य की तलाश करना, निर्णय लेने से पहले बारीकी से जांच करना।
DALL•E 2 ने इसे "रोबोट लेखन कोड का एक नोयर चित्रण और गड़बड़ी पैदा करने" के जवाब में बनाया है (श्रेय: 1995 के बाद से इंटरनेट पर सभी का संयुक्त श्रम, लेकिन शायद कुछ विशिष्ट कलाकार जिनकी पहचान DALL•E 2 नहीं है साझा न करें या परवाह न करें।)

मुझे प्रचार पसंद नहीं है। शायद यह मुझमें संशय है, हमेशा एक दावे पर सवाल उठाने की कोशिश करना, साक्ष्य की तलाश करना, निर्णय लेने से पहले बारीकी से जांच करना। दुनिया पर इस रुख का मतलब है कि मैं अक्सर नाटकीय परिवर्तन को स्वीकार करने के लिए और उस पर सवाल उठाने के लिए सबसे पहले हूं। कंप्यूटर विज्ञान में इससे अधिक निंदनीय कुछ भी नहीं है, जो अक्सर मुझे इसके हाशिये पर रखता है।

और इसलिए पिछले एक दशक में, जैसा कि मैंने देखा है कि बड़े भाषा मॉडल (एलएलएम) मानव संचार की नकल करते हैं, जो कि संभाव्य पैमाने के माध्यम से है, मैंने संदेह के साथ देखा है। संदेह है कि वे कभी भी पूर्वाग्रह पर काबू पा लेंगे, संदेह है कि वे किसी भी प्रकार की बुद्धि प्राप्त कर लेंगे, और संदेह है कि उन्हें लाभ के अलावा किसी अन्य चीज़ के लिए लागू किया जाएगा। मुझे केवल एक ही बात का यकीन था: कि एक बार जब वे दुनिया के मेरे छोटे से विद्वानों के कोने से मुख्यधारा में आ जाएंगे तो प्रचार प्राथमिक लेंस होगा जिसके माध्यम से उन्हें देखा जाएगा। और मूल रूप से यही हुआ है।

जैसा कि LLMs ने GitHub CoPilot और ChatGPT जैसी प्रणालियों के माध्यम से प्रोग्रामिंग के लिए अपना रास्ता बनाया , हालाँकि, मैंने LLM को अधिक बारीकियों के साथ देखना शुरू किया। प्रोग्रामिंग उन लोगों के लिए है जो नहीं करते हैं, एक तरह की गड़बड़ है । भाषाएँ अजीब ऐतिहासिक संकेतन हैं जिनके साथ हम दशकों से रहते हैं और सबसे लोकप्रिय अक्सर सबसे बेतरतीब ढंग से डिजाइन किए जाते हैं। एपीआई अक्सर खराब डिजाइन और खराब दस्तावेज वाले होते हैं। कुछ सरल बनाने का लगभग हर प्रयास केवल अधिक जटिलता जोड़ता है, क्योंकि यह एक जटिल दुनिया के साथ इंटरऑपरेट करने की कोशिश करता है। और इसलिए जब मैं अभी भी एलएलएम को बड़े पैमाने पर समाज के लिए खतरा मानता हूं, प्रोग्रामिंग की दुनिया में, वे जटिलता के माध्यम से लोगों की मदद करने का कुछ वादा करते हैं।

लेकिन जैसा कि मैंने इसके बारे में अधिक सोचा है, और उनके साथ खेला है, मेरा संदेह वापस आ गया है। और इसलिए मैं निम्नलिखित भविष्यवाणियों पर पहुंचा हूं।

सबसे पहले, एलएलएम जटिलता को कम करेगा । और कुछ स्पष्ट कारणों के लिए: ओपन सोर्स की दुनिया प्रोग्रामिंग भाषाओं और एपीआई उपयोग में आम गड़बड़ समस्याओं के समाधान का एक विशाल संग्रह साझा करती है, और इसलिए इंटरनेट के पिछले दो दशकों से, समस्या उन समस्याओं को हल करने के बारे में इतनी अधिक नहीं रही है समस्याएं हैं, लेकिन समाधान ढूंढ रहे हैंकि किसी ने पहले ही लिख दिया है। यह स्टैक ओवरफ्लो की विस्फोटक लोकप्रियता और कोड खोज पर दशकों के शोध को सक्षम बनाता है। एलएलएम-संचालित कोड संश्लेषण होगा, और पहले से ही एक हद तक, उन समाधानों को खोजने के लिए बेहतर खोज इंजन हैं (यद्यपि किसी को श्रेय दिए बिना)। प्रोग्रामर के लिए यह भविष्य थोड़ा बेहतर होगा, जैसे बेहतर प्रलेखन और बेहतर खोज हमेशा से रही है। यह गलत उत्तरों के अनंत स्थान के बीच उपयोगी डिज़ाइन पैटर्न को खोजना आसान बना देगा।

बेशक, यह इसे सही ढंग से नहीं करेगा। क्योंकि उस कोड का अधिकांश भाग जिस पर वह प्रशिक्षित है? यह बुरा है। यह सुरक्षा दोषों, डिज़ाइन दोषों, प्रयोज्य समस्याओं, अभिगम्यता समस्याओं से भरा है। ये मॉडल इन खामियों के बारे में कुछ नहीं जानते हैं, क्योंकि वे डिजाइन या सॉफ्टवेयर इंजीनियरिंग के बारे में कुछ नहीं जानते हैं। और कोड की लोकप्रियता, जैसा कि स्टैक ओवरफ्लो पर अपवोट किए गए गलत उत्तरों से कोई भी जानता है, इसकी शुद्धता का एक विश्वसनीय संकेतक नहीं है। और इसलिए ये इंजन जो सबसे अच्छा कर सकते हैं वह एक अनुमान की पेशकश करता है जो एक डेवलपर को किसी समस्या पर कूदने या नई दिशा के बारे में सोचने में मदद करता है। लेकिन डेवलपर्स को अभी भी वह सब कुछ करना होगा जो उन्हें शुद्धता सुनिश्चित करने के लिए पहले से ही करना है: जैसे-जैसे दुनिया बदलती है, सत्यापित करना, एकीकृत करना, रिफैक्टर करना, नया स्वरूप देना, पुनर्रचना करना आदि। ये मॉडल, अधिक से अधिक, कोड के छोटे खंडों के लिए एक सहायक लेकिन कमजोर विचार-मंथन उपकरण होंगे।

बेशक, यह सबसे अच्छा मामला परिदृश्य है। कुछ डेवलपर इन उपकरणों का उपयोग करने जा रहे हैं और उन्हें मिलने वाले कोड पर भरोसा करते हैं । वे इसे प्रोडक्शन कोड में डालने जा रहे हैं। और उस कोड की समस्याएं पैदा करने वाली कई कहानियां होंगी। लेकिन आप शायद उन्हें नहीं सुनेंगे, क्योंकि विफलता और कुछ कोड के बीच की रेखा खींचना एक कठिन काम है, और समाज ने अभी भी डेवलपर्स को उनके द्वारा लिखे गए कोड के लिए जवाबदेह ठहराने का फैसला नहीं किया है। और इसलिए अधिकांश लोगों ने कभी ध्यान भी नहीं दिया होगा कि दुनिया में खराब कोड लीक हो रहा है, इन स्टोकेस्टिक तोतों द्वारा पुन: उत्पन्न किया जा रहा है । वे केवल सामान्य विफलताओं का अनुभव करेंगे जो सॉफ़्टवेयर में हमेशा होती हैं, केवल थोड़े अलग कारणों से, और थोड़ी अधिक गति से।

और फिर ऐसे शिक्षार्थी हैं, जिनमें वे छात्र भी शामिल हैं जिन्हें मैं पढ़ाता हूँ, वे युवा जो पहले कोड का सामना कर रहे हैं, शिक्षक जो इसे पढ़ाने के लिए कोड सीख रहे हैं। कोई कल्पना कर सकता है कि (वर्तमान में) मुफ्त और आसान कार्यक्रम संश्लेषण उन छात्रों और शिक्षकों के लिए एक बड़ा वरदान होगा जो अटके हुए हैं, जिससे उन्हें ऐसी चीजें बनाने की अनुमति मिलती है जो वे पहले नहीं बना सकते थे, और अधिक आसानी से चुनौतियों को दूर कर सकते थे। लेकिन वह प्रचार की बात होगी। वास्तविकता यह है कि कोड लिखना कठिन है, छात्रों (और वास्तव में किसी के लिए भी) के लिए कठिन हिस्सा समझ रहा हैयह कैसे क्रियान्वित करता है और फिर इसके बारे में निर्णय लेता है कि इसे अलग तरीके से क्या करना चाहिए। प्रोग्राम की समझ वह है जो एपीआई को उपयोग करने में कठिन बनाती है (क्योंकि वे जानबूझकर छिपाते हैं कि वे क्या करते हैं, केवल खराब लिखित प्राकृतिक भाषा के माध्यम से व्यवहार को कैप्चर करते हैं)। यह वही है जो प्रोग्रामिंग भाषाओं का उपयोग करना कठिन बनाता है (क्योंकि डिबगिंग टूल इतने खराब हैं कि सिखाने के लिए पर्याप्त धीमा हो जाते हैं)। यह वही है जो बड़े सॉफ्टवेयर सिस्टम को बदलने और विकसित करने के लिए कठिन बनाता है (क्योंकि समझने के लिए कोड की भारी मात्रा में)। एलएलएम इस समझ या निर्णय लेने को आसान बनाने के लिए कुछ नहीं करते हैं।

और एक विडंबनापूर्ण तरीके से, आपके लिए कुछ और कोड लिखने से प्रोग्राम की समझ कठिन हो जाती है । प्रत्येक डेवलपर पहले से ही यह जानता है: यदि आप स्वयं लिखते हैं, तो किसी और द्वारा लिखे जाने की तुलना में आप इसके व्यवहार को समझने की कहीं अधिक संभावना रखते हैं। यदि आपने इसे लिखा है तो यह और भी सच है, लेकिन बहुत पहले। और इसलिए कुछ ऐसा कोड प्राप्त करना जिसे कोई नहीं समझता है, क्योंकि यह एक संभाव्य मशीन से निकाला गया था, कोड को समझने में कुछ सबसे कठिन उत्पन्न हो सकता है, कुछ हद तक तर्क या संदर्भ प्रदान करने के लिए स्टैक ओवरफ्लो जैसी साइटों पर होने वाली मानवीय बातचीत के साथ . (और, ज़ाहिर है, अगर लोग स्टैक ओवरफ़्लो जैसी साइटों के लिए सामग्री लिखना बंद कर देते हैं, तो एलएलएम के पास प्रशिक्षित करने और उपयोगी होने से रोकने के लिए कुछ भी नहीं होगा)।

लेकिन शिक्षार्थियों पर समझ केवल नया बोझ नहीं होगा। कुछ शिक्षार्थी एलएलएम-संचालित प्रोग्राम सिंथेसिस को सीखने के कठिन कार्य से बचने के लिए एक और शॉर्टकट के रूप में भी देखेंगे, जैसा कि वे अब स्टैकऑवरफ्लो के साथ करते हैं। ऐसा इसलिए नहीं है क्योंकि वे आलसी हैं, यह इसलिए है क्योंकि सीखना कठिन है, और जब किसी समस्या को हल करने के आसान तरीके होते हैं तो हम इससे बचने के लिए हर संभव प्रयास करते हैं। चूंकि एलएलएम इस तरह के कम प्रतिरोध के साथ एक रास्ता प्रदान करते हैं, मुझे विश्वास है कि यह होगा, और शायद पहले से ही अनुमान लगाने और जांचने के अत्यधिक अनुत्पादक चक्रों की ओर अग्रसर है जो योजना और सत्यापन के कठिन कार्यों से बचते हैं। स्टैक ओवरफ्लो में कम से कम इतने सारे मृत सिरे हैं कि शिक्षार्थियों को अंततः एहसास होता है कि यह अधिकांश समस्याओं के लिए एक महान संसाधन नहीं है और खोज के बजाय तर्क और योजना पर वापस जाएं। लेकिन एलएलएम संभवतः सही उत्तरों का भ्रम पैदा करके ऊपर की समझ की समस्याओं को बढ़ा देगा। मुझे डर है कि यह सीखने के लिए जो असंतोष पैदा करता है, वह अंततः अधिक संघर्ष, अधिक ड्रॉप आउट, और अंततः कम लोग जो गड़बड़ी को समझने के लिए तैयार होंगे, का परिणाम होगा।

क्या एलएलएम मौजूद होना चाहिए? मुझे लगता है कि मैं एलएलएम-संचालित प्रोग्राम सिंथेसिस के बारे में वैसा ही महसूस करता हूं जैसा कि मैं किसी भी डेवलपर टूल के बारे में करता हूं: हमने यह गड़बड़ी की है, इसलिए हमें इसे साफ करना चाहिए। शायद एलएलएम मदद कर सकता है। लेकिन यह एक ऐसे उपकरण की तरह महसूस होता है जो उत्पादकता की अंतहीन खोज में सिर्फ एक गड़बड़ करता है और इसे दूसरी गड़बड़ी में बदल देता है। यह एक क्रांति की तरह महसूस नहीं करता है। और सबसे खराब स्थिति में, उस नई गड़बड़ी को समझना और भी कठिन हो सकता है।

क्या मैं गलत हो सकता हूँ? बिल्कुल! प्रोग्रामिंग और प्रोग्रामर का अध्ययन करने के बीस वर्षों से ऊपर मेरा घिनौना काम आता है , लेकिन वह सारा शोध और अनुभव मुझे गलत दिशा में इंगित कर सकता है। शायद एलएलएम मूल रूप से प्रोग्रामिंग को बदलते हैं और मैं इसे नहीं देख सकता। अगर ऐसा है, तो मुझे यकीन है कि मैं नोटिस करने वाला आखिरी व्यक्ति बनूंगा :)