Ruby 3 में टाइप्स - नए type distinction language RBS का परिचय
(developer.squareup.com)Ruby 3 से TypeScript जैसी type annotation जोड़ी जा रही है। यह लेख बताता है कि Matz और Ruby Committer Team ने Ruby में static types लाते समय किन बातों पर विचार किया और कौन-से समाधान अपनाए। नीचे इसका सारांश है।
Ruby 3 में RBS नाम की एक नई भाषा जोड़ी गई है, और यह Ruby 3 के साथ ही उपलब्ध कराई जाती है।
RBS, Ruby की type annotation के लिए बनाई गई भाषा है।
- इसे लाने की पृष्ठभूमि
(untype को dynamic type के रूप में अनुवाद किया गया है.)
प्रोग्रामिंग भाषाओं में types और dynamic typing के बीच बहस बहुत पुरानी है। Dynamic typing से तेज़ development संभव होता है, लेकिन team और codebase को scale करने में दिक्कत होती है। वहीं types बड़े scale के लिए उपयुक्त होते हैं, लेकिन उनमें flexibility कम होती है.
इन दोनों तरीकों के फायदे पाने के लिए C# ने dynamic फीचर अपनाया, जो type check को runtime तक टाल देता है; PHP और Python ने type checking options दिए; और TypeScript ने बिना types वाली भाषा के लिए एक type language चुनने का रास्ता लिया।
Ruby ने भी दोनों तरीकों के फायदे लेने के लिए standard type distinction language, यानी RBS, बनाया।
- RBS कैसा दिखता है?
RBS, C/C++/ObjC की .h फ़ाइलों या TypeScript की .d.ts जैसी है। इस तरीके का फायदा यह है कि पहले से लिखी गई Ruby फ़ाइलों को बदले बिना type checking के लाभ लिए जा सकते हैं।
RBS में किसी class के attributes और methods के types परिभाषित किए जाते हैं। RBS, Ruby प्रोग्राम की संरचना का वर्णन करने वाली भाषा है, और यह developers को code overview तथा परिभाषित classes और methods की जानकारी देती है। इसका सबसे बड़ा फायदा यह है कि implementation और execution, दोनों के लिए type definitions की जाँच की जा सकती है।
- RBS की मुख्य विशेषताएँ
Dynamic language के लिए type system बनाना, पहले से statically typed भाषाओं से अलग होता है। दुनिया में पहले से बहुत सारा Ruby code मौजूद है, इसलिए Ruby के type system को यथासंभव अधिक code को support करना था।
इसीलिए Ruby code की दो महत्वपूर्ण विशेषताओं और उनके लिए RBS के समाधान यहाँ बताए गए हैं।
- Duck typing
Duck typing वह तकनीक है जिसमें type का ठीक-ठीक पता न होने पर भी यह मानकर code लिखा जाता है कि कोई खास method मौजूद होगा। इसे support करने के लिए RBS ने interface जोड़ा, ताकि यह जाँचा जा सके कि argument में वह method मौजूद है या नहीं।
- गैर-एकरूपता
यह एक और code pattern है, जिसमें expressions अलग-अलग types के values रख सकते हैं। यह Ruby में भी लोकप्रिय है, और RBS इसे union types और method overloading के support से संभव बनाता है।
- types के साथ Ruby programming
यह RBS के मुख्य फायदों का परिचय देता है।
-
अधिक bugs खोजे जा सकते हैं.
-
Nil safety
-
बेहतर IDE integration.
-
Duck Typing guide
3 टिप्पणियां
https://crystal-lang.org - यह जानना दिलचस्प होगा कि Crystal का RBS के साथ रिश्ता कैसे बनेगा। (Crystal, Ruby सिंटैक्स को अपनाने वाली एक compiled language है.)
; m; पोस्ट बार-बार बीच में कट रही थी, इसलिए मैंने सारे code हटा दिए हैं। अनजाने में spam करने के लिए माफ़ी चाहता/चाहती हूँ T_T..
आह, लगता है कि यह कोड में मौजूद < की वजह से हुआ है। हमने यह अनुमान नहीं लगाया था कि यह कोड लेख की सामग्री में आ जाएगा ^^;
बाद में हम शायद Markdown का सिर्फ़ कुछ हिस्सा अपनाकर इसे विस्तार देने की कोशिश करें, तब इस पर विचार करेंगे.