यूनिवर्सिटी में स्कीम मेरी पहली भाषा क्यों है?


80

मैं सी, सी ++, जावा के बारे में हर दिन सुनता हूं जब भी लोग कंप्यूटर साइंस के बारे में बात करना शुरू करते हैं, लेकिन मेरी पहली कंप्यूटर साइंस क्लास में हमें स्कीम (DrRacket) में लिखने के लिए कहा जाता है।

ऐसा क्यों है?

प्रोग्रामिंग की मेरी भविष्य की समझ में क्या अंतर होगा?

अद्यतन: मैंने अपना पहला कार्यकाल पूरा कर लिया है, लेकिन पूरी तरह से योजना के साथ नहीं किया है। मेरे दूसरे कार्यकाल में (जो अब है) हम C प्रोग्रामिंग में आ गए। यह पहली बार में संकेत जानने के लिए निराश था, लेकिन अब मैं बहुत बेहतर महसूस करता हूं।

इससे ज्यादा नहीं कहना चाहिए। मैं अपने आप को जावा (या C ++?) को OOP भाग के लिए सिखाने की कोशिश कर रहा हूं जो मुझे याद आ रही है। अब तक, मुझे अभी भी कार्यात्मक प्रोग्रामिंग सबसे अच्छी लगती है। लाम्बा बस आकर्षक है। :)


148
बधाई हो, ऐसा लगता है (मेरे लिए) कि आप उन कुछ स्कूलों में से एक में जा सकते हैं जो वास्तव में कंप्यूटर विज्ञान सिखाने की कोशिश करते हैं। पहली भाषा के रूप में सीखना योजना (IMO) एक बहुत अच्छी बात है। नहीं, यह अन्य लोगों की तरह वाणिज्यिक नहीं है, लेकिन यह कंप्यूटर विज्ञान के वास्तविक सार को सीखने के लिए एक उत्कृष्ट भाषा है।
जेरी कॉफिन

21
C, C ++ और Java कंप्यूटर विज्ञान के उद्योग उप-उत्पाद हैं। योजना की पूरी जड़ें कंप्यूटर विज्ञान में हैं। व्यावसायिक उपयोग की भाषाओं का कंप्यूटर विज्ञान के साथ उतना ही लेना-देना है जितना कि मैकडॉनल्ड्स के व्यंजनों का।
जेसनट्र्यू

33
ये लोग सही हैं; आप कंप्यूटर विज्ञान के साथ कंप्यूटर प्रोग्रामिंग को भ्रमित कर रहे हैं - जैसा कि दिक्जस्त्र ने कहा, यह खगोल विज्ञान के साथ टेलीस्कोप निर्माण को भ्रमित करने जैसा है। योजना कंप्यूटर विज्ञान में बुनियादी अवधारणाओं को सीखने के लिए सबसे अच्छी भाषा है । यदि आप उम्मीद कर रहे हैं कि कंप्यूटर विज्ञान की डिग्री लेना जावा में लाइन-ऑफ-बिजनेस ऐप लिखना सीखना है, तो आप गलत प्रोग्राम में नामांकित हो सकते हैं।
एरिक लिपर्ट

29
एक ही कारण है कि प्राणी शास्त्र पाठ्यक्रम कैसे बाहर एक हाथी स्टाल गोबर के लिये बजाय विकासवादी जीव विज्ञान, शरीर रचना विज्ञान और पशुओं के व्यवहार सिखाने के लिए
जे।

4
एक बार जब आप स्कीम के आधार वाक्य रचना को समझने के साथ अपने पैरों के नीचे होते हैं, तो "द लिटिल स्कीमर" पढ़ने की कोशिश करें। यह एक पतली किताब है, लेकिन अगर आप इसमें सब कुछ समझ सकते हैं, तो आपके पास कार्यात्मक प्रोग्रामिंग भाषाओं के मूल सिद्धांतों पर वास्तव में ठोस पकड़ होगी।
एरिक लिपर्ट

जवाबों:


91

एक महान स्कूल की तरह लगता है! लिस्प की बोलियाँ एल्गोरिदम के गणितीय प्रतिमान का बहुत अधिक बारीकी से अनुसरण करती हैं। वे प्रोग्रामर को पुनरावृत्ति और कार्यात्मक शैली सीखने के लिए मजबूर करते हैं। यह उत्कृष्ट अनुभव है। आपका स्कूल MIT के साथ रैंक में है, जो अभी भी आवश्यक CS 6.001 के लिए Abelson और Sussman का उपयोग करता है ।

आप इस लेख को प्रोत्साहित करने और समस्या को समझने में मददगार हो सकते हैं ।


6
"फोर्स" शायद उपयोग करने के लिए एक अच्छा शब्द नहीं है। "ट्रेन" के बारे में कैसे?
बैरी ब्राउन

4
दरअसल, पिछले कुछ वर्षों में MIT के EECS पाठ्यक्रम में व्यापक बदलाव हुए हैं। उनका इंट्रो कोर्स अब दो पाठ्यक्रमों में विभाजित है ( पहली छमाही के लिए mit.edu/6.01/mercurial/fall11/www/index.html देखें ), और भाषा निर्देश का अधिकांश भाग पायथन में है।
जोंस्का

4
मैं मानता हूं कि योजना एक महान भाषा है और इसे सीखना एक अच्छा विचार है। हालाँकि, इसका सामना करते हैं; लगभग हर वास्तविक-विश्व प्रोग्रामिंग नौकरी एक अनिवार्य भाषा को रोजगार देती है; वास्तव में गंभीर प्रोग्रामिंग नौकरियों के लिए C ++ की आवश्यकता होती है, और C ++ प्रोग्रामर आमतौर पर एक कारण या किसी अन्य के लिए प्रोग्राम डिजाइन के लिए सभी अच्छे गणितीय-आधारित विचारों का उपयोग करने से आपको सक्रिय रूप से हतोत्साहित करते हैं। पुनरावर्तन आपके अनिवार्य कार्यक्रमों में बड़ी भूमिका नहीं निभाएगा।
फेलिक्स डॉमबेक

4
@FelixDombek, क्या आप सुनिश्चित हैं? सभी विचारों? वास्तव में? एक अनिवार्य लूप एक गणितज्ञ विचार भी है, तुम मन हो।
तर्क

3
@ फेलिक्सडॉम्बक, मैं केवल C ++ में एक पूंछ पुनरावृत्ति के बजाय पुनरावृत्ति का उपयोग करने का एक कारण देख सकता हूं । पुनरावृत्ति के अन्य सभी रूपों को ठीक उसी तरह से कार्य किया जाता है जैसे कार्यात्मक भाषाओं के कार्यान्वयन में। इसलिए मैं आपकी टिप्पणी से बिल्कुल सहमत नहीं हो सकता। जितना अधिक गणित आप अपने C ++ कोडिंग में डालेंगे, उतना बेहतर होगा। मुझे लगता है कि आप पुनरावृत्ति के बिना C ++ में लाल-काले पेड़ों को लागू करने की कोशिश करने जा रहे हैं।
एसके-लॉजिक

37

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

चिंता मत करो; आप अंततः जावा / सी / सी ++ सीखेंगे, संभवतः अपना दूसरा वर्ष शुरू कर रहे हैं। यदि आपने अभी जावा 6 सीखना शुरू किया है, तब तक आप जावा 8 से स्नातक हो जाएंगे। या इसे अजगर द्वारा प्रतिस्थापित किया गया होगा। या कुछ अन्य भाषा जो अभी तक ईजाद नहीं की गई है लेकिन तूफान से उद्योग लेता है। जब तक आप कार्यबल में बाहर निकलते हैं, तब तक "लोकप्रिय" सामान को सीखना बंद करना बेहतर है, क्योंकि यह अप्रचलित नहीं है।

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


36

बधाई हो, अब आप कंप्यूटर की दुनिया में एक शाकाहारी के बराबर में बदल रहे हैं , और दो साल में आप लोगों को बिना किसी नैतिक विचार के किसी भी चर्चा को समाप्त नहीं कर पाएंगे । ;)

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

कई बुरे कोड-बंदर-फार्म आपको शिल्प सिखाते हैं, और फिर आप इससे विज्ञान का अनुमान लगाने के लिए हो सकते हैं, लेकिन इसकी गारंटी नहीं है। (और आप इसके बारे में बहुत अजीब गलतफहमियों के साथ समाप्त हो सकते हैं)

वैसे भी, कार्यात्मक भीड़ के एक सम्मानित सदस्य के रूप में, जब आप वहां से निकलते हैं, तो आपको हमेशा गलत समझा जाएगा और सराहना की जाएगी

जो, चलो इसे स्वीकार करते हैं, औसत कंप्यूटर के लिए यह कोई नई बात नहीं है।

अब आप उच्च जोखिम में हैं:

  • एक अकादमिक कैरियर में लपेटने की कोशिश कर रहा है ,
  • एक पीएचडी की खोज में लगना ,
  • ... क्षीण

आप शायद खुले स्रोत को भी पसंद करेंगे, लेकिन आपको अपनी कार्यात्मक परियोजनाओं के लिए पर्याप्त सहयोगी कभी नहीं मिलेंगे।


2
क्षमा करें, necro- टिप्पणी करने के लिए, लेकिन emacs क्यों? मैं उत्सुक हूँ। मैं उसी नाव में हूं, जैसे ओपी था (कॉलेज के फ्रेशमैन शुरू करना) और हम रैकेट (स्कीम के समान) का उपयोग करने जा रहे हैं।
केविन जॉनसन

2
@KevinJohnson emacs को अक्सर LISP में लिखे गए ऑपरेटिंग सिस्टम के रूप में संदर्भित किया जाता है जो गलती से बहुत से लोगों को कोड को संपादित करने में मदद करता है । यदि आप LISP जैसे सिंटैक्स की अश्लीलता की तरह कार्यात्मक प्रतिमान ( और सिखाया जाता है) करते हैं, तो यह संभवतः आपके पसंदीदा पाठ संपादक के रूप में आप पर बढ़ेगा।
ZJR

1
"आपको विज्ञान पढ़ाता है, जिसमें से आप शिल्प प्राप्त करते हैं": +1
जियोर्जियो

23

प्रोग्रामिंग की मेरी भविष्य की समझ में क्या अंतर होगा?

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

कक्षा में पूरा ध्यान दें - आप इस सेमेस्टर में बहुत सारी दिलचस्प चीजें सीखेंगे।


14

ऐसा लगता है कि आप प्रोग्रामिंग में बहुत नए हैं, जिसमें पहले से कोई अनुभव नहीं है। तो यहाँ कुछ स्पष्टीकरण दिए गए हैं:

योजना और C / C ++ / Java क्यों नहीं ...?

जब आप एक प्रोग्रामिंग भाषा सीखते हैं (अंग्रेजी भाषा के साथ एक सादृश्य बनाया जा सकता है) तो आप उस वाक्य रचना को सीखते हैं जिसका आपको अनुसरण करने की आवश्यकता होती है ताकि आपका कोड ग्रामिक रूप से सही हो। हालाँकि एक भाषा आपको समस्याओं को हल करने के पीछे तर्क नहीं सिखाएगी । उस तर्क को सीखने के लिए, आप विभिन्न प्रोग्रामिंग प्रतिमानों को सीखते हैं ।

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

तो असली सवाल आप पूछ रहे हैं: एफपी क्यों?

जैसा कि आपने उल्लेख किया है, सी, सी ++ और जावा (जो एफपी को लागू नहीं करते हैं) कहीं अधिक लोकप्रिय हैं। तथ्यों के रूप में, (और विभिन्न कारणों से, सभी की अपनी राय है) एफपी उद्योग में बहुत लोकप्रिय नहीं है।

दूसरी ओर, शैक्षिक हलकों में FP को बहुत माना जाता है। यह आम गणितीय दृष्टिकोण के करीब है, एल्गोरिदम की उपयोगिता और अनुकूलन पर अधिक ध्यान केंद्रित करता है, और अधिकांश लोग इस बात से सहमत होंगे कि यह आपको सामान्य रूप से बेहतर प्रोग्रामर बना देगा।

यह अंग्रेजी लिटरेचर का अध्ययन करने के लिए स्कूलों को लैटिन सिखाने के समान है।


1
योजना को कार्यात्मक रूप से उपयोग करने की आवश्यकता नहीं है, हालांकि यह अधिक संभावना है कि आप सी, सी ++ और जावा की तुलना में ऐसा करेंगे।
रिकी क्लार्कसन

"यह उन स्कूलों के समान है जो अंग्रेजी साहित्य का अध्ययन करने के लिए लैटिन सिखाते हैं।": या ऑपरेटिंग सिस्टम की कक्षाओं में जो अन्य, अधिक विस्तृत प्रसार वाले ओएस के बजाय एक यूनिक्स जैसे ओएस को सिखाते हैं।
जियोर्जियो

11

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

एक बार जब आप अवधारणाओं को समझ लेते हैं, तो उन्हें अन्य भाषाओं में लागू करना आसान होता है।


4
"अधिकांश व्यवसायों में उपयोग की जाने वाली रोजमर्रा की भाषाएं आज आवश्यक सॉफ़्टवेयर के निर्माण के लिए अच्छी तरह से अनुकूल हो सकती हैं" - विशिष्ट लागत, गुणवत्ता और सफलता दर को ध्यान में रखते हुए, यह एक आशावादी वक्तव्य है :-)
जोर्ग डब्ल्यू मित्तग

यह निश्चित रूप से सच है! इसीलिए मैंने
पेर्डियन

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

9

यदि आप DrRacket के साथ सीख रहे हैं, तो मैं शर्त लगा सकता हूँ कि आप भी कैसे डिजाइन कार्यक्रम पाठ्यक्रम का उपयोग कर रहे हैं।

यहां बताया गया है कि HtDP के लेखकों में से एक ने ( शिक्षण पक्षपाती) कहा है कि सहकारी शिक्षा कार्यक्रम ("सह-ऑप") के लिए नॉर्थईस्टर्न विश्वविद्यालय में स्नातक शिक्षण योजना कैसे तैयार की गई है: छात्र पूर्णकालिक सेमेस्टर के लिए शैक्षणिक अध्ययन के वैकल्पिक सेमेस्टर रोजगार)।

मेरे आने से पहले, नॉर्थईस्टर्न दो दशकों के लिए एक मानक पाठ्यक्रम का उपयोग कर रहा था: वर्तमान में फैशनेबल भाषा के तीन शब्द (पास्कल, सी ++, जावा), व्यावहारिक अनुप्रयोगों पर पाठ के साथ इंटरव्यू किए गए बेहद ग्राफिक्स-समृद्ध अभ्यास के एक सेट का उपयोग करते हुए। पाठ्यक्रम व्यापक रूप से SIGCSE और संबंधित समुदायों में प्रकाशित किया गया था, लेकिन यह काम नहीं किया। वेब बुलबुले की ऊंचाई पर, लगभग एक तिहाई छात्रों को प्रोग्रामिंग सह-ऑप्स मिला; अधिकांश लोग "तकनीकी" के रूप में समाप्त हो गए क्योंकि उन्होंने खुद को फोन किया: कंप्यूटर हिलाना, स्क्रिप्ट चलाना, राउटर और नेटवर्क स्थापित करना, आदि। और इस शिक्षा के सभी की लागत $ 150,000 ट्यूशन थी।

पूर्वोत्तर में एक साल के बाद, हमारे डीन ने मुझे पहला कोर्स संभालने के लिए कहा। पहला उदाहरण एक सफलता थी - कुछ स्थानीय संकाय की भविष्यवाणियों के विपरीत। भले ही यह एक परीक्षण माना गया था, हमने टीचस्केमे को स्विच कर दिया! पाठ्यक्रम स्थायी रूप से; डीन ने सुझाव दिया कि मैं एचटीडीपी पाठ्यक्रम को बाकी पाठ्यक्रम से जोड़ने के लिए एक ब्रिज कोर्स डिजाइन करता हूं; इसने Vta Proulx के साथ HtDC पर मेरा सहयोग शुरू किया। पोस्टस्क्रिप्ट नीचे देखें। कुछ वर्षों के भीतर, मैंने हमारे सह-ऑप संकाय से यह सुनना शुरू कर दिया कि प्रोग्रामिंग पदों की हिस्सेदारी बढ़ रही है। 2007 तक - आखिरी बार जब मैं पाठ्यक्रम में शामिल था - मुझे बताया गया था कि पहले सह-ऑप पर प्रोग्रामिंग का अनुपात दो तिहाई और अधिक था। इस बीच में, सभी शिक्षक! पाठ्यक्रमों को कई संकाय सदस्यों द्वारा पढ़ाया जाता है, बल्कि विभिन्न शिक्षण शैलियों और व्यक्तित्वों की तुलना में। प्रोग्रामिंग को-ऑप का अनुपात तीन तिमाहियों और उससे अधिक हो गया है, और सभी डाउनस्ट्रीम संकाय छात्रों के प्रोग्रामिंग कौशल के बारे में खुश हैं।

संपादित करें: पाठ्यक्रम के पीछे तर्कसंगत रूप से दिलचस्पी रखने वालों के लिए, यहाँ मुख्य वास्तुकार का स्पष्टीकरण है - http://www.youtube.com/watch?v=m3be1PHW5X0


6

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


4
मैं सहमत हूँ; मैंने CS को पास्कल, सी, बेसिक, x86 असेंबलर जानना शुरू कर दिया, जबकि अन्य के पास अलग-अलग भाषाओं में अनुभव थे या कोई भी नहीं था। हमें एमएल के लिए पेश किया गया था, जिसके पास न केवल किसी के पास पहले से कोई अनुभव नहीं था, बल्कि जिसके पास इतना विदेशी था कि यह हमारे बीच सबसे अनुभवी के लिए भी शुरू करने जैसा था। बाद में, मुझे लगता है कि एमएल (कार्यात्मक प्रतिमान) सबसे उपयोगी चीज है जिसे मैंने सीएस में सीखा है।
KaptajnKold

6

दरअसल, लिस्प के रूप में (योजना एक बोली होने के नाते) कार्यात्मक भाषाओं की ग्रांडे डेम है (एफ #, ग्रूवी, क्लोजर, हास्केल आदि के बारे में सोचें), तो यह प्रशिक्षण आपको किसी भी तरह के व्यावसायिक नुकसान में नहीं छोड़ता है, क्योंकि यह सबसे गर्म है अभी विकास खंड पर विषय।


4

योजना आपको अच्छा लाने और कार्यात्मक प्रोग्रामिंग भाषाओं का उपयोग करने के उचित तरीके से सोचने में मदद करेगी। उदाहरण के लिए स्केला एक कार्यात्मक / ऊ संकर है जो काफी शानदार है, हालांकि थोड़ा घना है। इस तरह की भाषाएं हालांकि भविष्य को चिह्नित करती हैं - उम्मीद है।

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


3

हमने दूसरे सेमेस्टर की पहली और पहली छमाही में स्कीम को पूरा किया। यह तब तक नहीं था जब तक कि हम वास्तव में सी के साथ काम करने के लिए नीचे नहीं उतरे कि मुझे योजना की शक्ति का एहसास होना शुरू हो गया।

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

  1. ऐसे लोग जिनके पास प्रोग्रामिंग अनुभव नहीं है, उनके लिए सीखना आसान है। कई तकनीकी विवरण और बस कुछ विशेष रूप नहीं हैं।
  2. यह उच्च स्तर के अमूर्तता के लिए अनुमति देता है। एक अच्छा पाठ्यक्रम शिक्षण प्रोग्रामर्स पर ध्यान केंद्रित कर सकता है कि तकनीकी विवरणों पर ध्यान केंद्रित करने के बजाय कैसे सोचें जो छात्रों को बेहतर प्रोग्रामर बनने की अनुमति देता है।
  3. सूचियां अद्भुत हैं। इतना कुछ है कि आप उनके साथ क्या कर सकते हैं। कार और सीडीआर शक्तिशाली उपकरण साबित होते हैं और यह केवल तभी होता है जब आप ऐसे पॉइंटर्स के साथ काम करना शुरू करते हैं जो आपको पता चलता है कि स्कीम हैंडलिंग सूचियों में अद्भुत थी।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.