• प्रोग्रामिंग उत्पादकता का मूल भाषा से अधिक समृद्ध लाइब्रेरी ecosystem में है
  • Ruby on Rails जैसे भाषा की उन्नत सुविधाओं का उपयोग करने वाले framework गैर-विशेषज्ञों को भी उच्च उत्पादकता देते हैं
  • लेकिन भाषा की संरचनात्मक सीमाओं के कारण Rails स्तर का framework Java या C में लागू करना कठिन है
  • भाषा डिज़ाइन सीधे यह तय करती है कि किस रूप और जटिलता की लाइब्रेरी लिखी जा सकती है, और यही भाषा विकास का मूल उद्देश्य है
  • Stanza भाषा इस दृष्टिकोण से दिखाती है कि शक्तिशाली और उपयोग में आसान लाइब्रेरी बनाना संभव करने के लिए भाषा डिज़ाइन कितना महत्वपूर्ण है

प्रोग्रामिंग भाषाओं और लाइब्रेरी का संबंध

  • अधिकांश प्रोग्रामिंग भाषाओं में variables, arrays, loops, functions जैसे समान बुनियादी तत्व होते हैं
    • कुछ भाषाएँ first-class functions या coroutines जैसी उन्नत सुविधाएँ देती हैं, लेकिन गैर-विशेषज्ञ आमतौर पर उनका अच्छा उपयोग नहीं करते
  • कई डेवलपर्स के लिए उत्पादकता बढ़ाने वाला कारक भाषा नहीं बल्कि लाइब्रेरी है
    • उदाहरण के लिए, Ruby on Rails डेटाबेस-आधारित web applications को आसानी से बनाने देता है
    • Rails की वजह से Ruby भाषा से अधिक framework के प्रति पसंद बनती है

Ruby on Rails और भाषा सुविधाओं की परस्पर क्रिया

  • Rails, Ruby की metaprogramming, runtime evaluation, first-class functions, garbage collection जैसी कई सुविधाओं का उपयोग करता है
    • उदाहरण: ActiveRecords metaprogramming का उपयोग करता है, और template system runtime evaluation का
    • event handling, callback के रूप में first-class functions पास करके लागू की जाती है
  • Java या C में ये सुविधाएँ पर्याप्त नहीं हैं, इसलिए Rails स्तर का framework लागू करना संभव नहीं
    • Java की metaprogramming, ActiveRecords लागू करने जितनी शक्तिशाली नहीं है
  • इसलिए Rails, Ruby भाषा की संरचना की वजह से संभव है, और भाषा डिज़ाइन लाइब्रेरी की संभावनाएँ तय करती है

भाषा डिज़ाइन लाइब्रेरी के रूप को तय करती है

  • C भाषा केवल function declarations और calls के जरिए पुन: उपयोग का समर्थन करती है, इसलिए अधिकतर C libraries functions के संग्रह के रूप में होती हैं
  • Ruby, first-class functions का समर्थन करती है, इसलिए “button click होने पर चलने वाला action” को संक्षेप में व्यक्त किया जा सकता है
    • जबकि Java में handler class परिभाषित करनी पड़ती है, जिससे कोड जटिल हो जाता है
  • भाषा की अभिव्यक्त क्षमता सीधे लाइब्रेरी की संरचना और उपयोगिता को निर्धारित करती है

इंटरैक्टिव software और विस्तार योग्य frameworks का उदय

  • 1970 के दशक की batch computing में function-केंद्रित libraries पर्याप्त थीं
  • आधुनिक इंटरैक्टिव software में extensible libraries की आवश्यकता होती है
    • GUI या event-based systems में “user click करने पर मेरा code चलाओ” जैसी संरचना चाहिए
  • Java और C++ inheritance और method overriding के जरिए विस्तार का समर्थन करते हैं, और यही संरचना आगे frameworks में विकसित हुई

Stanza डिज़ाइन की पृष्ठभूमि और भाषा की सीमाएँ

  • Stanza के डिज़ाइन की प्रेरणा Java में उपयोग में आसान game programming library लिखने की कठिनाई से शुरू हुई
    • Java में concurrency को state machine के रूप में व्यक्त करना पड़ता था
    • Scheme, continuation का समर्थन करता है, इसलिए अधिक सहज implementation संभव है
  • लेकिन Scheme static type checking का समर्थन नहीं करता, इसलिए debugging की दक्षता कम होती है
    • वर्तमान में अधिकांश भाषाएँ type system को library के रूप में extend नहीं कर सकतीं
  • Stanza, optional type system, garbage collection, multimethod-based object system प्रदान करता है
    • लेकिन नया user-defined object system फिर से लिखना संभव नहीं है

भाषा का उद्देश्य और शोध की दिशा

  • सामान्य-उद्देश्य प्रोग्रामिंग भाषा का उद्देश्य शक्तिशाली और उपयोग में आसान libraries के निर्माण का समर्थन करना है
    • भाषा जितनी शक्तिशाली होगी, library का उपयोग उतना ही संक्षिप्त होगा
  • जब code अच्छी तरह डिज़ाइन की गई library का उपयोग करता है, तो उसमें सहकर्मी को निर्देश देने वाले वाक्य जैसी स्वाभाविकता होती है
  • Racket, Shen, meta object protocol पर शोध आदि विस्तार योग्य type और object systems की खोज कर रहे हैं
  • अंततः भाषाओं का अंतर इस बात से तय होता है कि “कौन-सी libraries इस्तेमाल की जा सकती हैं, और कौन-सी नहीं
  • सुंदर libraries के पीछे दशकों का भाषा अनुसंधान और डिज़ाइन प्रयास मौजूद होता है

अभी कोई टिप्पणी नहीं है.

अभी कोई टिप्पणी नहीं है.