2009-10-14 15 views
9

मैं यूनिट परीक्षण की अवधारणा को समझता हूं क्योंकि आपके कोड को आउटपुट के बारे में सरल विचारों के साथ आने के बाद - इसे आउटपुट करना। इसलिए यह सोच रहा है कि आप कोड का एक टुकड़ा क्या करना चाहते हैं - फिर यह सुनिश्चित करने के लिए एक परीक्षण करना कि यह काम करता है।क्या किसी ने प्रोग्रामिंग सीखने के तरीके के रूप में यूनिट परीक्षण का उपयोग किया है?

शिक्षण प्रोग्रामिंग में किस बिंदु पर टीडीडी (इकाई परीक्षण) शामिल किया जाना चाहिए?

संपादित करें: मुझे उपकरण परीक्षण के बारे में टिप्पणी पसंद है जैसे ही उपकरण इसे जादुई बनना बंद कर देते हैं।

मूल रूप से सवाल आया क्योंकि मुझे एहसास हुआ कि मेरे पास अभी तक एक बड़ा कार्यक्रम विकसित करने के लिए कौशल नहीं है, लेकिन कोड के कुछ टुकड़े/क्या करना चाहिए इसके विचारों के साथ आना सीखना चाहते हैं।

मैं कर कर सीखना चाहता हूं और ऐसा करने के लिए एक संरचित तरीका यह मदद करेगा। पायथन वह भाषा है जिसका मैं उपयोग कर रहा हूं। अब तक सभी इनपुट के लिए धन्यवाद।

+1

एक सॉफ्टवेयर इंजीनियरिंग दृष्टिकोण से में नीचे drilled? कंप्यूटर विज्ञान छात्र परिप्रेक्ष्य से? एक शौकिया परिप्रेक्ष्य से? – Alex

+3

यूनिट परीक्षण! = टीडीडी। वे मेरे दिमाग में काफी अलग अवधारणाएं हैं। –

+1

क्या आप शीर्षक या शरीर में सवाल पूछ रहे हैं? वे दो अलग-अलग चीजें हैं। –

उत्तर

7

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

+4

+1 - ग्रेट पॉइंट। यह विशेष रूप से वेब विकास या उन प्रणालियों में सच है जिनके लिए लॉग इन/पासवर्ड और परीक्षण के लिए कोड प्राप्त करने के लिए कुछ नेविगेशन की आवश्यकता होती है। परीक्षण लिखना बहुत आसान है और फिर (मेरे मामले में) बस परीक्षण पर राइट-क्लिक करें और उस कोड का प्रयोग करने के लिए कहें जो आप लिख रहे हैं। यह एक बड़ा वरदान है और एक जिसे टीडीडी की चर्चा में पर्याप्त मान्यता नहीं मिलती है। –

5

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

+0

+1 उत्कृष्ट बिंदु। –

2

क्या हम कुल नौसिखिया या प्रोग्रामर से बात कर रहे हैं जो नई भाषा सीखते हैं? अगर उत्तरार्द्ध - मैं तुरंत कहूंगा। क्यों? चूंकि सीखने का सबसे अच्छा तरीका कोड है, और यदि आप कोड करते हैं तो आपको परीक्षण करना चाहिए। हालांकि, जिसने प्रोग्रामिंग की कोई धारणा नहीं है, उसे संभवतः प्रोग्रामिंग की मूल बातें सीखनी चाहिए

+0

आप मूलभूत सीखने से मूल बातें सीख सकते हैं ... मुझे जावा की मूल बातें सीखने के लिए उन सभी बॉयलरप्लेट्स को लिखना याद है। –

1

टीडीडी आपको कोडिंग से पहले बहुत कुछ सोचता है - कुछ ऐसा जो मैं अपने करियर की शुरुआत में कमी करता था। मैं आईडीई में उठने और दौड़ने के लिए उपयोग करता था और टाइप लिखना शुरू करता था - कोड और ठीक कहता है।

अगर मैं इकाई परीक्षण और TDD का इस्तेमाल किया था एक प्रोग्रामर के रूप में मेरे विकास में पहले, तो मुझे पूरा विश्वास है कि मैं बेहतर गुणवत्ता कोड जल्दी ही उत्पादित किया जा सकता था (ऐसा नहीं है कि उस समय मेरे कोड था कुल बकवास मन :)

+0

+1 - अच्छा बिंदु। –

1

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

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

1

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

परीक्षण संरचना को परिभाषित करने से पहले कोडिंग के लक्ष्य को परिभाषित किया जाता है और जहां यह गलत हो सकता है (किनारे & नकारात्मक परीक्षण मामलों)। इसके अतिरिक्त, यह जांचना कि लक्ष्य प्राप्त किया गया है या नहीं।

2

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

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

2

एक साइडेनोट के रूप में, टीडीडी और/या यूनिट परीक्षण सीखने में बहुत देर हो सकती है प्रक्रिया। यहां तक ​​कि अनुभवी प्रोग्रामर से सीख सकते हैं सीखने के टेस्ट जब एक नई भाषा, या एक नई एपीआई के साथ काम करना शुरू करते हैं।

केंट बेक टेस्ट-संचालित विकास में "रेड बार पैटर्न" में "Learning test" नाम के तहत इसकी सिफारिश करता है: उदाहरण के लिए।

बस एक नई विधि या एक नया वर्ग उपयोग करने के बजाय

, हम एक छोटे से परीक्षण कि पुष्टि करता है कि एपीआई की उम्मीद के रूप में काम में लिखें।

इसी तरह, माइक क्लार्क ने 400+ परीक्षणों का एक सूट लिखा जबकि learning Ruby

लेखन सीखने के परीक्षण पर एक मजेदार तरीका है किसी भी नई भाषा या एपीआई को पोक और प्रोड करें। और आपके द्वारा लिखे गए प्रत्येक परीक्षण के साथ आप निष्पादन योग्य ज्ञान आधार पर निवेश कर रहे हैं।

+1

ओह! क्या एक अच्छी अवधारणा है। यह आपके द्वारा सीखा गया एक जर्नल रखने जैसा है, लेकिन एक निष्पादन योग्य पत्रिका है। – jcdyer

1

मुझे लगता है कि यूनिट परीक्षण की आपकी अवधारणा सही नहीं है। तकनीकी रूप से बोलते हुए, "यूनिट परीक्षण" एक सॉफ्टवेयर सत्यापन और सत्यापन विधि है जिसमें एक प्रोग्रामर परीक्षण करता है यदि स्रोत कोड की अलग-अलग इकाइयां उपयोग के लिए उपयुक्त हों। एक इकाई एक आवेदन का सबसे छोटा टेस्टेबल हिस्सा है। प्रक्रियात्मक प्रोग्रामिंग में एक इकाई एक व्यक्तिगत कार्य या प्रक्रिया हो सकती है और ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में यह कक्षा का एक तरीका हो सकता है।

आप जो करना चाहते हैं वह मूल रूप से "छोटे कार्यक्रमों को पहले और फिर धीरे-धीरे जटिल बनाते हैं (और निश्चित रूप से आप अंततः प्रोग्रामिंग सीखेंगे)"। इस प्रकार के सॉफ्टवेयर विकास "सरल से शुरू होते हैं और फिर इसे धीरे-धीरे जटिल बनाते हैं" को तकनीकी रूप से "सॉफ्टवेयर प्रोटोटाइप" कहा जाता है। यहां इसकी परिभाषा है:

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

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

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

यह सुनिश्चित करने के लिए टिकाऊ प्रक्रिया को लागू करना भी आवश्यक है कि टेस्ट केस विफलताओं की प्रतिदिन समीक्षा की जाए और तुरंत संबोधित किया जाए। यदि ऐसी प्रक्रिया को लागू नहीं किया गया है और टीम के वर्कफ़्लो में शामिल किया गया है, तो एप्लिकेशन यूनिट टेस्ट सूट के साथ सिंक से बाहर हो जाएगा, झूठी सकारात्मक वृद्धि और परीक्षण सूट की प्रभावशीलता को कम करेगा।

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

विकल्प (क) विशेषज्ञ के रास्ते पर आप प्राप्त करने के लिए कम समय लगता है और यह भी वहाँ गलत प्रथाओं है कि आप "स्व सीखने प्रोग्रामिंग 'के दौरान विकसित कर सकते हैं अपनाने के लिए एक कम मौका है

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

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

हैप्पी प्रोग्रामिंग!पागल समुदाय में आपका स्वागत है!

+0

आपको प्रयास करने का एक बिंदु मिलता है जिसे मैंने गलत होने के लिए लिया - मुझे नहीं लगता कि मैंने कभी भी किसी को यह कहते हुए देखा है कि यूनिट परीक्षण "अंत में किया जाता है"। –

+0

शब्द "एंड" का अर्थ कुछ डेवलपर्स को "सॉफ़्टवेयर के अंत में" हो सकता है या इसका अर्थ हो सकता है कि "टुकड़े या मॉड्यूल के अंत में" दूसरों के लिए। जो भी अर्थ आप साथ जाते हैं, इसका हमेशा मतलब है कि सॉफ़्टवेयर टेस्टिंग हमेशा किया जाता है जब कुछ विकसित होता है। जिस व्यक्ति ने इस प्रश्न से पूछा वह इस तथ्य की कुछ गलतफहमी है कि यूनिट परीक्षण करना सीखने का एक तरीका है, जबकि सॉफ़्टवेयर विकास पुस्तकों का इस शब्द "यूनिट परीक्षण" का अलग अर्थ है। – user189439

+0

यूनिट परीक्षण सॉफ्टवेयर प्रोटोटाइप से अलग है। ब्रायन क्या करना चाहता है सॉफ्टवेयर प्रोटोटाइप है ... गलतियों से सीखें ... सुधार करें ... करें ... सुधार करें .... करें ... सुधार करें ... जब तक आप वांछित नहीं हो जाते। इस बात को यूनिट परीक्षण नहीं कहा जाता है, इसे सॉफ्टवेयर प्रोटोटाइप कहा जाता है। अगर आपने सॉफ्टवेयर विकास पर अभी तक कोई पुस्तक नहीं पढ़ी है तो कृपया विकिपीडिया की जांच करने में संकोच न करें। – user189439

1

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

1

विशेष रूप से संदर्भ पर विचार - अजगर इकाई परीक्षण लिखने के लिए बहुत आसान कर रहे हैं और बहुत कम समझ की आवश्यकता होती है - मैं कहेंगे यह के लिए जाने के लिए और अपनी समझ और परीक्षण के साथ अन्वेषणों कंबल।

के बाद आप थोड़ी देर के लिए यह कर रहे हैं, एक समीक्षा मंच है जहाँ आप वापस जाएं और अपने पहले परीक्षण पढ़ सकते हैं और देखते हैं कि कैसे आप उन्हें अपने वर्तमान समझ के साथ फिर से लिखा है | शामिल हैं। प्रत्येक टेस्ट परिभाषा के अंदर दस्तावेज़ों में स्वयं को लिखने के लिए टिप्पणियां हैं और प्रश्नों की समीक्षा करें।

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

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

0

मेरी राय में यह जानने के लिए एक बहुत बड़ा और शक्तिशाली उपकरण है। मैं जावास्क्रिप्ट और पायथन सीखने के लिए उपयोग कर रहा हूं और उत्कृष्ट परिणाम प्राप्त कर रहा हूं।

मैं इकाई परीक्षण के बारे में बात नहीं कर रहा हूँ, मैं babysteps लाल, हरे refactor ... उन सभी pratices है कि एक आसानी से प्रक्रिया के लिए एक जानने प्रक्रिया बारी के उपयोग के बारे में बात कर रहा हूँ।

तो मैं छोटे टुकड़ों के साथ शुरू हो, dummies के सामान कर रही कोशिश करते हैं और मैं भाषा की कड़ी टुकड़े का उपयोग कर मुश्किल में वृद्धि होगी।

तो मैं या कि मैं पीछे के अध्ययन के लिए एक उत्कृष्ट स्रोत लेखन खत्म नोटिस, इसलिए मैं अपने tddlearn वापस आने अगर मैं कोई संदेह है और इसे हल, अगर मैं कुछ सामान करने के लिए एक बेहतर रास्ता मिल गया है या एक सीमा पाया , मैं इसके लिए परीक्षण लिखता हूं ...

इसका शानदार !!!

तुम मेरी प्रगति देख सकते हैं here

0

विश्वास नहीं कर सकता कि कोई भी उल्लेख किया katas:

https://github.com/gamontalvo/awesome-katas

और समान koans:

https://github.com/ts25504/awesome-koans

दोनों अवधारणा के माध्यम से सिखाने लिखने तक परीक्षण और निष्पादन परीक्षण करके स्वयं सीखना।

TDD के नीचे दृष्टिकोण के लिए शीर्ष वास्तव में बारीकी से बुनियादी शैक्षिक दृष्टिकोण जैसा दिखता है; जहां एक विषय है, अक्सर एक अनुमान सामान्य रूप में पहले शुरू की है, और बाद में विशिष्ट विवरण

संबंधित मुद्दे

 संबंधित मुद्दे