"प्राकृतिक भाषा प्रोग्रामिंग" की मूर्खता (1978)

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

“प्राकृतिक भाषा प्रोग्रामिंग” का दायरा

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

LLMs: कम्पाइलर, डेवलपर, या कुछ और?

  • मज़बूत मत: LLMs कम्पाइलरों की जगह नहीं लेते; वे सॉफ़्टवेयर डेवलपरों की जगह लेते हैं (या उन्हें पूरक बनाते हैं) जो अनौपचारिक विनिर्देशों को कोड में बदलते हैं।
  • कुछ लोग LLMs को एक अस्पष्ट-निर्दिष्ट भाषा (प्रॉम्प्ट्स) के लिए नए प्रकार के इंटरप्रेटर के रूप में देखते हैं, यानी प्रोग्रामिंग का ही एक रूप, बस संभाव्यतामूलक अर्थ-व्यवस्था के साथ।
  • इस पर बहस है कि क्या प्रॉम्प्टिंग सच में “प्रोग्रामिंग” है या बस किसी दूसरे प्रोग्रामर-जैसी इकाई को निर्देश देना।

नियतत्व, अर्थविज्ञान, और विश्वसनीयता

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

विनिर्देश, बैठकें, और सिस्टम की समझ

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

कोड, प्रॉम्प्ट्स, और सत्य का स्रोत

  • कई लोग ज़ोर देते हैं कि version control में मौजूद भाषा (Java/Python/etc.) ही यह तय करती है कि सिस्टम किस भाषा में “प्रोग्राम्ड” है, चाहे वह कोड कैसे भी बना हो।
  • कुछ लोग अनुमान लगाते हैं कि प्रॉम्प्ट्स या वार्तालापों को अंततः प्राथमिक कलाकृतियों के रूप में माना जाएगा, जिससे रखरखाव-क्षमता और ओपन-सोर्स लाइसेंसिंग से जुड़े प्रश्न उठते हैं।
  • LLM आउटपुट की तुलना किसी भी एक-बार के कोड जनरेटर से की जाती है: रखरखाव-क्षमता और पुनरुत्पादनीयता अब भी समस्याएँ बनी रहती हैं।

अनुभवजन्य अनुभव और विशेष अपवाद

  • उपयोगकर्ता एजेंटों के माध्यम से ऐप्स को “vibe coding” करके सफलता की रिपोर्ट करते हैं, लेकिन गैर-कार्यात्मक आवश्यकताओं, इन्फ्रास्ट्रक्चर विवरणों, और सूक्ष्म बगों के छूट जाने को नोट करते हैं।
  • Inform7 और कानूनी ड्राफ़्टिंग को अर्ध-प्राकृतिक भाषाओं के उदाहरणों के रूप में उद्धृत किया जाता है: पढ़ने योग्य, लेकिन फिर भी अत्यधिक सीमित, जो इस बात को रेखांकित करता है कि सच्ची NL प्रोग्रामिंग कितनी कठिन है।