रूबी पायथन की तुलना में रूबी के लिए अधिक उपयुक्त क्यों है? [बन्द है]


90

पायथन और रूबी को आमतौर पर समान अभिव्यंजना और शक्ति के साथ (हालांकि काफी अलग ऐतिहासिक सामान के साथ) करीबी चचेरे भाई माना जाता है। लेकिन कुछ लोगों ने तर्क दिया है कि रेल ढांचे की अपार सफलता वास्तव में उस भाषा के साथ बहुत कुछ करती है जो उस पर बनी है: रूबी ही। तो पाइथन की तुलना में रूबी ऐसे ढांचे के लिए अधिक उपयुक्त क्यों होगा?


44
अनुप्रास। _
जिमी


105
@ कुशल: मेरा मानना ​​है कि यह विमानों पर पायथन होगा।
जिमी

37
@ जिमी: विमानों की जरूरत किसे है? आयात
प्रतिपदार्थ

157
क्या जेलों में जावा है?
नोसरेडना

जवाबों:


170

संभवतः दो प्रमुख अंतर हैं:

रूबी में सुरुचिपूर्ण, अनाम क्लोजर हैं।

रेल उन्हें अच्छे प्रभाव के लिए उपयोग करती है। यहाँ एक उदाहरण है:

class WeblogController < ActionController::Base
  def index
    @posts = Post.find :all
    respond_to do |format|
      format.html
      format.xml { render :xml => @posts.to_xml }
      format.rss { render :action => "feed.rxml" }
    end
  end
end

बेनामी क्लोजर / लैम्ब्डा से नई भाषा की विशेषताओं का अनुकरण करना आसान हो जाता है जो ब्लॉक ले जाएगा। पायथन में, क्लोजर मौजूद हैं, लेकिन उनका उपयोग करने के लिए उनका नाम होना चाहिए। इसलिए नई भाषा सुविधाओं का अनुकरण करने के लिए क्लोजर का उपयोग करने में सक्षम होने के बजाय, आप इस तथ्य के बारे में स्पष्ट होने के लिए मजबूर हैं कि आप एक क्लोजर का उपयोग कर रहे हैं।

रूबी में क्लीनर है, मेटाप्रोग्रामिंग का उपयोग करना आसान है।

यह रेल में बड़े पैमाने पर उपयोग किया जाता है, मुख्य रूप से इसका उपयोग करने के लिए कितना आसान है। विशिष्ट होने के लिए, रूबी में, आप वर्ग के संदर्भ में मनमाना कोड निष्पादित कर सकते हैं। निम्नलिखित स्निपेट समतुल्य हैं:

class Foo
  def self.make_hello_method
    class_eval do
      def hello
        puts "HELLO"
      end
    end
  end
end

class Bar < Foo # snippet 1
  make_hello_method
end

class Bar < Foo; end # snippet 2
Bar.make_hello_method

दोनों मामलों में, आप तब कर सकते हैं:

Bar.new.hello  

जो "HELLO" प्रिंट करेगा। class_evalविधि के रूप में भी एक वर्ग बनाया जा रहा है, एक स्ट्रिंग लेता है तो यह मक्खी पर तरीकों बनाने के लिए संभव है, यह है कि पैरामीटर में पारित कर रहे हैं के आधार पर अर्थ विज्ञान भिन्न है।

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

यह रेल्स में डिक्लेरेशनिटी की डिग्री के लिए जिम्मेदार बड़ी डिग्री है, और जिस आसानी से हम नए डिक्लेक्टिव फीचर्स को लागू करने में सक्षम हैं, जो कीवर्ड या नए ब्लॉक लैंग्वेज फीचर्स की तरह दिखते हैं।


40
पायथन में, सब कुछ वस्तुओं है और कोड की सभी लाइनों को सीधे भी निष्पादित किया जाता है। ;) लेकिन, आपके पास क्लास बॉडी में क्लास की ओर इशारा करते हुए एक "सेल्फ" नहीं है, जो क्लास डेफिनेशन के बाद तक नहीं बनता है, इसलिए आपको उस कोड को पाइथन में बाद में डालना होगा, जो कि कम सुरुचिपूर्ण है , लेकिन कार्यात्मक रूप से समकक्ष।
लेन्नर्ट रेगेब्र जूल 8'09

31
@ लेन्नर्ट उस बिंदु की तरह है। पायथन आपको लैंबडास, डेकोरेटर्स के साथ एक ही तरह के काम करने की अनुमति देता है, और कक्षाएं बनने के बाद कोड डालते हैं, लेकिन लालित्य में नुकसान जल्दी से जुड़ जाता है और अंत उपयोगकर्ताओं के लिए या तो विशेष रूप से लागू करने या विशेष रूप से कम सुरुचिपूर्ण जैसे पटरियों को कुछ और ही बनाता है।
येहुदा काट्ज़

9
वे वास्तव में मेरे लिए बड़े अंतर की तरह नहीं दिखते।
डिट्रिच एप्प जूल

10
@ मैं कुछ उलझन में हूँ। मैंने कहा कि आपको पायथन में उनकी ज़रूरत नहीं थी - लेकिन यह कि उन्हें कोड उपयोगकर्ताओं को लागू करने या कम सुरुचिपूर्ण (एक या दूसरे) के लिए कम कठिन नहीं बना। भाषाएँ पूरी तरह से ख़त्म हो रही हैं - आप चाहें तो रेल को C में लिख सकते हैं।
येहुदा काट्ज़

5
@ लेन्नर्ट अब हम व्यक्तिपरक क्षेत्र में आ रहे हैं, लेकिन जिन दो विशेषताओं के बारे में मैंने बात की है, वे घोषणात्मक और प्रक्रियात्मक प्रोग्रामिंग के मिश्रण के साथ फ्रेमवर्क का निर्माण करते समय काफी सुविधाजनक हैं। विशेष रूप से, अनाम लंबोदर की कमी, पायथन की एक अभिव्यक्ति सीमा है। एकरूपता की कमी (केवल कक्षाएँ बनाने के लिए बनाई गई कक्षाओं के साथ काम करने की आवश्यकता) काफी सीमित है।
येहुदा काट्ज़

58

जिन्होंने यह तर्क दिया है

रेल ढांचे की अपार सफलता वास्तव में जिस भाषा पर बनी है, उसके साथ बहुत कुछ करना है

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


10
खैर, हम यहाँ व्यक्तिपरक क्षेत्र में आ रहे हैं। यदि आपको लगता है कि व्यवस्थापक एक "केवल" है, तो शायद यह इसलिए है क्योंकि आपने समय-बचत वाले लाभों का आनंद नहीं लिया है। क्या कोई ऐसा क्षेत्र है जो आपको लगता है कि रूंगो की तुलना में Django बदतर करता है, जो कि रूबी के पास है और पायथन नहीं है? बिंदु वास्तव में यह नहीं है कि कौन सा ढांचा बेहतर है - यह है कि क्या (जैसा कि इस प्रश्न में कहीं और बताया गया है) पायथन में कुछ भी कमी है जो इसे किक-गधा ढांचे को विकसित करने में कम सक्षम बनाता है। सबूत पर, ऐसी कोई कमी नहीं है।
विनय साजिप

18
@ डाउनवोटर्स में: मैं वास्तव में बुरा नहीं मानता, लेकिन मैं यह जानने के लिए उत्सुक हूं कि आपने ऐसा क्यों सोचा कि मेरा जवाब बेकार था । मुझे इस बात का अहसास नहीं था कि किसी ने किसी की स्थिति से असहमति जताई है - मैं आमतौर पर केवल उसी जगह पर हतोत्साहित होता हूं, जहां मुझे लगता है कि एक प्रश्न या उत्तर किसी तरह चीजों को बदतर बना रहा था।
विनय साजिप

5
मैं अपना खुद का एडमिन सेक्शन लिख सकता हूं, मुझे इसकी जरूरत नहीं है। मैं अपने आवेदन को लिखने में आसान बनाने के अन्य तरीकों को पसंद करता हूं।
नाइटकोडर

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

6
@ मैट: उनका सवाल है कि क्यों रूबी अजगर से अधिक उपयुक्त है .. और जवाब, काफी सही है, यह नहीं है।
लेनार्ट रेगेब्र जूल

54

अजगर समुदाय का मानना ​​है कि चीजों को सबसे सरल और सीधे आगे करना संभव है, लालित्य का उच्चतम रूप है। माणिक समुदाय का मानना ​​है कि चालाक तरीके से चीजें करना जो शांत कोड की अनुमति देता है, लालित्य का उच्चतम रूप है।

रेल सभी के बारे में है यदि आप कुछ सम्मेलनों का पालन करते हैं, तो अन्य चीजों का भार आपके लिए जादुई रूप से होता है। यह वास्तव में दुनिया को देखने के रूबी मार्ग के साथ अच्छी तरह से रहता है, लेकिन वास्तव में अजगर के तरीके का पालन नहीं करता है।


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

4
पटरियों में शून्य जादू है, यह स्रोत में वहीं है। यदि आप जानना चाहते हैं कि कैसे, अपने गधे से उतरो और पता करो।
नाइटेकोडर

21
"कोई भी पर्याप्त रूप से उन्नत तकनीक जादू से अलग करने योग्य नहीं है।" - आर्थर सी। क्लार्क
विनय साजिप

1
"जादू" का अर्थ है कि फ्रेमवर्क आपके लिए बहुत सी चीजों की एक बिल्ली है जो सीधे पूछे बिना है। फिर से, मैं मूल्य निर्णय नहीं कर रहा हूं, यह उन चीजों को करने की एक शैली है जिनमें अच्छे पक्ष और बुरे पक्ष हैं। निजी तौर पर, मुझे लगता है कि यह रेल में शानदार काम करता है।
मैट ब्रिग्स

2
लालित्य और परंपराएं जादू को निरूपित नहीं करती हैं।
बीजे क्लार्क

26

क्या यह बहस एक नई "विम बनाम एमएसीएस" बहस है?

मैं एक पायथन / Django प्रोग्रामर हूं और इस तरह अब तक मुझे उस भाषा / ढांचे में कोई समस्या नहीं मिली है जो मुझे रूबी / रेल पर स्विच करने के लिए प्रेरित करेगी।

मैं कल्पना कर सकता हूं कि अगर मैं रूबी / रेल के साथ अनुभवी था तो यह वही होगा।

दोनों का दर्शन समान है और काम को तेज और सुरुचिपूर्ण तरीके से करते हैं। बेहतर विकल्प वह है जो आप पहले से जानते हैं।


25

व्यक्तिगत रूप से, मैं कई मायनों में अजगर से बेहतर होना चाहता हूं जिसमें यह शामिल है कि मैं 'सुसंगत अभिव्यक्ति' को क्या कहूंगा। उदाहरण के लिए, रूबी में, ज्वाइन ऑब्जेक्ट पर एक विधि है जो स्ट्रिंग को आउटपुट करता है, इसलिए आपको कुछ इस तरह मिलता है:

numlist = [1,2,3,4]
#=> [1, 2, 3, 4]
numlist.join(',')
#=> "1,2,3,4"

अजगर में, तार स्ट्रिंग ऑब्जेक्ट पर एक विधि है, लेकिन एक त्रुटि फेंकता है यदि आप इसे जोड़ने की चीज के रूप में स्ट्रिंग के अलावा कुछ और पास करते हैं, तो वही निर्माण कुछ इस तरह है:

numlist = [1,2,3,4]
numlist
#=> [1, 2, 3, 4]
",".join([str(i) for i in numlist])
#=> '1,2,3,4'

इन छोटे प्रकार के बहुत सारे मतभेद हैं जो समय के साथ जुड़ते हैं।

इसके अलावा, मैं व्हाट्सएप को महत्वपूर्ण बनाने के लिए अदृश्य तर्क त्रुटियों को पेश करने के लिए बेहतर तरीके के बारे में नहीं सोच सकता।


29
मेरा अनुभव है कि व्हाट्सएप को महत्वपूर्ण बनाने से तर्क त्रुटियों को दूर होने में मदद मिलती है। स्पेसिंग और सिंटैक्स असहमति के लिए यह बहुत अधिक भ्रमित है।
नोसरेडना

5
शुरुआत और अंत वाली भाषाओं में और ब्रेसिज़ और असेंबली वाली भाषाओं में, मैंने कोड को गलत तरीके से चिपकाया हुआ देखा और बाद में परेशानी का कारण बना। वह हमेशा एक समस्या है। क्या आप लोगों को अजगर से बुरी तरह परेशान थे?
नोसरेडना

5
पायथन में व्हॉट्सएप महत्वपूर्ण नहीं है: secnetix.de/~olli/Python/block_indentation.hawk । पायथन में इंडेंटेशन के कारण "अदृश्य त्रुटियों" को लागू करना लगभग असंभव है (आपको अपनी संपादक सेटिंग्स को ठगना पड़ता है) जबकि निश्चित रूप से किसी अन्य भाषा में इंडेंटेशन के कारण अदृश्य त्रुटियों का परिचय देना पूरी तरह से गलत है। @ फ़ील्ड: तो स्काइप या HTML के माध्यम से कोड को कॉपी न करें, फिर। गीज़।
लेन्नर्ट रेग्रोब

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

8
भगवान सर्वशक्तिमान ... आप का अर्थ है सांख्यिकीय रूप से टाइप किया गया है, दृढ़ता से टाइप नहीं किया गया है। अजगर दृढ़ता से टाइप किया गया है, तो रूबी है: stackoverflow.com/questions/520228/… रूबी में एक पूर्णांक के लिए आप एक स्ट्रिंग नहीं जोड़ सकते। मैं आपको सही करने के लिए थक गया हूं, कृपया भविष्य में जवाब देने से पहले अपने तथ्यों की जांच करें।
लेन्नर्ट रेग्रोब

15

असली जवाब न तो पायथन है या रूबी वेब फ्रेमवर्क के लिए बेहतर / बदतर उम्मीदवार हैं। यदि आप वस्तुनिष्ठता चाहते हैं, तो आपको दोनों में कुछ कोड लिखने की जरूरत है और देखें कि आपकी व्यक्तिगत प्राथमिकता सबसे उपयुक्त है, जिसमें समुदाय शामिल है।

ज्यादातर लोग जो एक या दूसरे के लिए बहस करते हैं, उन्होंने कभी भी अन्य भाषा का गंभीरता से उपयोग नहीं किया है या अपनी व्यक्तिगत पसंद के लिए 'मतदान' कर रहे हैं।

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

अगर मुझे पहले पायथन और उसके एमवीसी ढांचे में से एक मिला है, तो मैं इसके बजाय उस भाषा की प्रशंसा करने की संभावना से अधिक होगा!


11

पायथन में रेल-जैसी चौखटों की पूरी मेजबानी है। इतने सारे हैं कि एक चुटकुला चला जाता है कि पाइकॉन में विशिष्ट बातचीत के दौरान कम से कम एक वेब फ्रेमवर्क प्रकाश को देखेगा।

रूबी मेटा प्रोग्रामिंग को बेहतर बनाने के तर्क को आईएमओ गलत है। आप इस तरह चौखटे के लिए metaprogramming की जरूरत नहीं है।

इसलिए मुझे लगता है कि हम निष्कर्ष निकाल सकते हैं कि रूबी इस संबंध में पायथन से बेहतर (और न ही खराब होने की संभावना) नहीं है।


8

क्योंकि Rubys फीचर सेट का लाभ उठाने के लिए रेल विकसित की गई है।

इसी तरह का एक नितांत भ्रामक प्रश्न यह होगा कि "रूबी की तुलना में Django के लिए पायथन अधिक उपयुक्त क्यों है?"।


4

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


1

कुछ लोगों ने कहा है कि ActiveRecord (रेल का एक प्रमुख घटक) बनाने के लिए आवश्यक रूपक मेटाग्रामिंग का प्रकार संभव है कि अजगर की तुलना में रूबी में करना अधिक आसान और स्वाभाविक है - मैं अभी तक अजगर को नहीं जानता;), इसलिए मैं व्यक्तिगत रूप से इस कथन की पुष्टि नहीं कर सकता हूं।

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


3
वास्तव में, इस तरह का "जादू" अक्सर पायथन में होता है; उदाहरण के लिए, code.djangoproject.com/wiki/RemovingTheM दुखद
भावुक

2
मुझे लगता है कि "जादू" के लिए "जादू" (मेटाप्रोग्रामिंग ट्रिक्स) को हमेशा - सरल कोड पर समान रूप से शक्तिशाली और अभिव्यंजक होना चाहिए, हमेशा जीतना चाहिए - लेकिन ऐसे मामले हैं जब सटीक कार्यक्षमता और वाक्यविन्यास प्रदान करने का एकमात्र तरीका है आपको "जादू" की आवश्यकता है - और उन मामलों में, "जादू" अपरिहार्य है;)
फैसल वली

1

मुझे लगता है कि वाक्यविन्यास क्लीनर है और रूबी, मेरे लिए कम से कम, बस बहुत अधिक "सुखद" है - जैसा कि व्यक्तिपरक है!


-1

दो उत्तर:

ए। क्योंकि माणिक के लिए रेल लिखी जाती थी।

ख। उसी कारण C, रूबी की तुलना में लिनक्स के लिए अधिक उपयुक्त है


प्रश्न उत्तर के संदर्भ को देखते हुए बिल्कुल कोई मतलब नहीं है।
लॉरफॉन

-6

यह सब पूरी तरह से "IMHO" है

रूबी में वन वेब-एप्लिकेशन फ्रेमवर्क है, इसलिए यह एकमात्र फ्रेमवर्क है जो उस भाषा के लिए विज्ञापित है।

पायथन की स्थापना के बाद से कई हैं, बस कुछ का नाम: Zope, Twisted, Django, TurboGears (यह स्वयं अन्य फ्रेमवर्क घटकों का मिश्रण है), Pylons (रेल ढांचे का एक प्रकार-क्लोन), और इसी तरह। उनमें से कोई भी अजगर-समुदाय-व्यापी के रूप में "एक का उपयोग करने के लिए" के रूप में समर्थित है, इसलिए सभी "ग्राउंडवेल" कई परियोजनाओं में फैले हुए हैं।

रेल का सामुदायिक आकार पूरी तरह से है, या कम से कम विशाल बहुमत में, रेल के कारण।

पायथन और रूबी दोनों एक वेब एप्लिकेशन फ्रेमवर्क के रूप में काम करने में पूरी तरह से सक्षम हैं। आप (और आपकी संभावित विकास टीम) का उपयोग करें और जैसे संरेखित कर सकते हैं।


7
नाइट्रो, MerB, कैम्पिंग .. कुछ नाम हैं: माणिक कई वेब एप्लीकेशन फ्रेमवर्क है
Corban ब्रूक

5
जोड़ें: सिनात्रा और यहां तक ​​कि बहुत तेजी से बहुत कम से कम वेब ऐप्स के लिए एक नंगे रैक ऐप।
क्रिश

2
-1 "रूबी में एक वेब-एप्लिकेशन ढांचा है" एक गलत बयान के लिए भी स्पष्ट ...। नाइट्रो, मेरब, कैंपिंग, सिनात्रा
मैक्सिमिलियानो गुज़मैन

2
दोनों तरफ से असंबद्ध राय बिल्कुल नए लोगों के लिए भ्रम का कारण है जो यह सब छांटने की कोशिश कर रहे हैं। इसका मतलब यह भी है कि किसी को कुछ याद नहीं हो सकता है, अगर वे बेहतर जानते हैं तो वे वास्तव में सराहना करेंगे।
वॉल्ट जोन्स

3
मुझे लगता है कि उनकी बात यह थी कि
रेलों में प्याऊ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.