रूबी एक गतिशील, ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग भाषा है जो अपनी सरलता और उत्पादकता के लिए जानी जाती है। इसे डेवलपर्स के लिए सहज और आनंददायक बनाने के लिए डिज़ाइन किया गया है, रूबी मानव-पठनीय सिंटैक्स पर जोर देती है, जिससे यह शुरुआती लोगों के लिए सुलभ और अनुभवी प्रोग्रामर्स के लिए प्रभावी बनती है। यह एक सामान्य-उद्देश्य की भाषा है, जिसका व्यापक उपयोग वेब विकास में किया जाता है, विशेष रूप से रूबी ऑन रेल्स फ्रेमवर्क के साथ, जिसने वेब अनुप्रयोगों के परिदृश्य पर महत्वपूर्ण प्रभाव डाला है।
रूबी का निर्माण 1990 के दशक के मध्य में जापान में युकीहिरो मात्सुमोतो द्वारा किया गया था। मात्सुमोतो ने एक ऐसी भाषा विकसित करने का लक्ष्य रखा जो उनकी पसंदीदा प्रोग्रामिंग भाषाओं के सर्वश्रेष्ठ पहलुओं को मिलाती हो, जिसमें पर्ल, स्मॉलटॉक, आइफेल, अदा और लिस्प शामिल हैं। पहला सार्वजनिक रिलीज, रूबी 0.95, 1995 में हुआ, लेकिन इसे 1996 में 1.0 रिलीज के साथ व्यापक ध्यान मिला।
2000 का दशक रूबी के लिए एक महत्वपूर्ण मोड़ था, विशेष रूप से 2004 में डेविड हाइनमेयर हैनसन द्वारा रूबी ऑन रेल्स के रिलीज के साथ। रेल्स एक वेब एप्लिकेशन फ्रेमवर्क है जो कॉन्फ़िगरेशन के बजाय परंपरा पर जोर देता है, जिससे डेवलपर्स को वेब एप्लिकेशन तेजी से और प्रभावी ढंग से बनाने की अनुमति मिलती है। परिणामस्वरूप, रूबी की लोकप्रियता आसमान छू गई, और यह स्टार्टअप्स और वेब डेवलपर्स के लिए पसंदीदा भाषा बन गई।
आज, रूबी के पास एक जीवंत समुदाय और पुस्तकालयों और फ्रेमवर्क का समृद्ध पारिस्थितिकी तंत्र है। जबकि अन्य भाषाएँ वेब विकास के परिदृश्य में हावी हो सकती हैं, रूबी विशेष रूप से तेजी से एप्लिकेशन विकास और प्रोटोटाइपिंग के लिए प्रासंगिक बनी हुई है। यह भाषा विकसित होती रहती है, जिसमें नवीनतम स्थिर संस्करण 3.1.2 है, जिसमें प्रदर्शन सुधार और नए फीचर्स शामिल हैं जो डेवलपर अनुभव को अनुकूलित करने के लिए लक्षित हैं।
रूबी एक शुद्ध ऑब्जेक्ट-ओरिएंटेड भाषा है, जिसका अर्थ है कि रूबी में सब कुछ एक ऑब्जेक्ट है, जिसमें बुनियादी डेटा प्रकार जैसे पूर्णांक और स्ट्रिंग शामिल हैं।
class Dog
def bark
"Woof!"
end
end
dog = Dog.new
puts dog.bark # आउटपुट: Woof!
रूबी गतिशील टाइपिंग का उपयोग करती है, जिससे वेरिएबल किसी भी प्रकार के डेटा को बिना स्पष्ट प्रकार की घोषणा के रख सकते हैं।
x = 10
x = "Hello" # कोई प्रकार की घोषणा की आवश्यकता नहीं
रूबी ब्लॉक्स और इटरेटर का समर्थन करती है, जो कार्यात्मक प्रोग्रामिंग शैलियों और संग्रहों को आसानी से संभालने के लिए आवश्यक हैं।
[1, 2, 3].each do |number|
puts number
end
रूबी कक्षाओं में मॉड्यूल को शामिल करने की अनुमति देती है, जिससे कोड पुन: उपयोग और मिक्सिन्स संभव होते हैं।
module Swimmable
def swim
"I can swim!"
end
end
class Fish
include Swimmable
end
रूबी begin
, rescue
, और ensure
कीवर्ड का उपयोग करके एक मजबूत अपवाद प्रबंधन तंत्र प्रदान करती है।
begin
1 / 0
rescue ZeroDivisionError
puts "Cannot divide by zero."
end
रूबी का सिंटैक्स पढ़ने और लिखने में सुखद होने के लिए डिज़ाइन किया गया है, जो अक्सर प्राकृतिक भाषा के समान होता है।
if x > 10
puts "Greater than ten"
else
puts "Ten or less"
end
रूबी डक टाइपिंग का उपयोग करती है, जो अधिक लचीलापन प्रदान करती है, यह देखते हुए कि क्या एक ऑब्जेक्ट एक विधि का उत्तर दे सकता है, न कि उसकी कक्षा।
def quack(animal)
animal.quack if animal.respond_to?(:quack)
end
रूबी में फ़ंक्शन पहले श्रेणी के नागरिक होते हैं, जिससे उन्हें वेरिएबल में असाइन किया जा सकता है या तर्क के रूप में पास किया जा सकता है।
def greet
"Hello"
end
hello = method(:greet)
puts hello.call # आउटपुट: Hello
रूबी विधियों को डिफ़ॉल्ट पैरामीटर रखने की अनुमति देती है, जिससे विधि कॉल को सरल बनाया जा सकता है।
def greet(name = "World")
"Hello, #{name}!"
end
puts greet # आउटपुट: Hello, World!
puts greet("Ruby") # आउटपुट: Hello, Ruby!
रूबी में शर्तीय अभिव्यक्तियों के लिए एक संक्षिप्त टर्नरी ऑपरेटर शामिल है।
status = (x > 10) ? "Greater" : "Lesser"
puts status
रूबी मुख्य रूप से इंटरप्रेटेड है, जिसका अर्थ है कि यह कोड को लाइन-दर-लाइन निष्पादित करती है। सबसे सामान्य रूप से उपयोग किया जाने वाला इंटरप्रेटर CRuby (MRI) है, जबकि अन्य कार्यान्वयन जैसे JRuby (जावा प्लेटफॉर्म पर रूबी) और Rubinius भी मौजूद हैं।
रूबी के लिए कुछ लोकप्रिय एकीकृत विकास वातावरण (IDEs) में शामिल हैं:
रूबी जेम निर्भरताओं को प्रबंधित करने के लिए बंडलर का उपयोग करती है, और एक सामान्य परियोजना संरचना में एक Gemfile
शामिल हो सकता है जहाँ सभी निर्भरताएँ निर्दिष्ट की जाती हैं। एक रूबी परियोजना बनाने के लिए, इन चरणों का पालन करें:
bundle init
चलाएँ ताकि एक Gemfile
बनाया जा सके।bundle install
चलाएँ।app.rb
या समान होती है।रूबी का सबसे प्रमुख उपयोग वेब विकास में होता है, विशेष रूप से रूबी ऑन रेल्स फ्रेमवर्क के साथ, डेटाबेस-समर्थित वेब अनुप्रयोग बनाने के लिए। अन्य उल्लेखनीय अनुप्रयोगों में शामिल हैं:
रूबी कई प्रोग्रामिंग भाषाओं के साथ समानताएँ और भिन्नताएँ साझा करती है:
C# और Java: इन भाषाओं की तरह, रूबी ऑब्जेक्ट-ओरिएंटेड है, लेकिन रूबी अधिक गतिशील और लचीली है क्योंकि इसमें डक टाइपिंग और सरल सिंटैक्स है।
Python: रूबी और पायथन दोनों पठनीयता और सरलता पर जोर देते हैं। हालाँकि, रूबी का सिंटैक्स अक्सर अधिक सुरुचिपूर्ण माना जाता है, जबकि पायथन की ताकत इसके व्यापक पुस्तकालयों और सामुदायिक समर्थन में है।
JavaScript: रूबी का ऑब्जेक्ट-ओरिएंटेड दृष्टिकोण जावास्क्रिप्ट के प्रोटोटाइप-आधारित मॉडल के विपरीत है। रूबी वेब विकास के लिए अधिक अंतर्निहित सुविधाएँ प्रदान करती है, विशेष रूप से रूबी ऑन रेल्स के साथ।
C++ और Rust: दोनों भाषाएँ प्रदर्शन और सिस्टम-स्तरीय प्रोग्रामिंग को प्राथमिकता देती हैं, जबकि रूबी उपयोग में आसानी और तेजी से विकास पर ध्यान केंद्रित करती है, जिसके परिणामस्वरूप कुछ प्रदर्शन का त्याग होता है।
PHP: जबकि रूबी और PHP दोनों वेब विकास के लिए लोकप्रिय हैं, रूबी, विशेष रूप से रेल्स के साथ, PHP की अधिक प्रक्रियात्मक शैली की तुलना में एक अधिक संरचित और सुरुचिपूर्ण दृष्टिकोण प्रदान करती है।
डेवलपर्स के लिए जो रूबी कोड को किसी अन्य भाषा में अनुवादित करने की कोशिश कर रहे हैं, यह समझना आवश्यक है कि दोनों भाषाओं के पैराज़ाइम क्या हैं। रूबी की ऑब्जेक्ट-ओरिएंटेड, गतिशील, और अभिव्यक्तिपूर्ण सिंटैक्स का हमेशा स्थिर रूप से टाइप की गई भाषाओं जैसे C++ या Java में सीधे समकक्ष नहीं हो सकता है। डेवलपर्स को सिंटैक्स के 1:1 अनुवाद का प्रयास करने के बजाय मूल तर्क और कार्यक्षमता की पहचान करने पर ध्यान केंद्रित करना चाहिए।
हालांकि रूबी के लिए विशेष रूप से सीधे स्रोत से स्रोत अनुवाद उपकरण सीमित हो सकते हैं, कुछ उपकरण और पुस्तकालय, जैसे "R2C" रूबी स्क्रिप्ट को C या LLVM-आधारित लक्ष्यों में परिवर्तित करने के लिए, अधिक कुशल कोड उत्पन्न करने में मदद कर सकते हैं। इसके अतिरिक्त, व्यापक परिदृश्यों के लिए ट्रांसपिलर्स का उपयोग करना, जैसे रूबी को जावास्क्रिप्ट में परिवर्तित करना (उदाहरण के लिए, ओपल), कुछ संदर्भों में भी उपयोगी हो सकता है।