एक प्रोग्रामिंग भाषा का दस्तावेजीकरण: संदर्भ मैनुअल


12

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

जब एक प्रोग्रामिंग भाषा के लिए एक संदर्भ मैनुअल लिखते हैं, तो भाषा के नए लोगों के लिए अधिकतम प्रयोज्यता के लिए इसे तैयार करने का सबसे अच्छा तरीका क्या है?

प्रलेखित प्रत्येक खोजशब्द के मुख्य पहलू क्या हैं ?

  • वाक्य - विन्यास
  • विवरण
  • तर्क - यदि लागू हो
  • वापसी मान - यदि लागू हो
  • उपयोग का उदाहरण?
  • कोई अन्य जो मुझे याद आ रहा है?

क्या इस संदर्भ पुस्तिका में अवधारणाओं (जैसे लॉकिंग रणनीति, प्रदर्शन संबंधी विवरण) को भी प्रलेखित किया जाना चाहिए या यह एक अलग दस्तावेज है?


यह बाहरी खपत के लिए है। हमारे पास पहले से ही पूर्ण डॉक्टर सेट हैं (देखें: http://www.rocketsoftware.com/u2/resources/technical-resources )। काम करते हुए हमें क्या करना चाहिए - मेरे पास पहले से ही मेरे विचार हैं, लेकिन हमेशा की तरह, मैं पूरी तरह से अपनी राय पर भरोसा नहीं करने की कोशिश करता हूं।

श्रोता: तकनीकी डेवलपर्स हमारे डेटाबेस (एस) और टूल्स का उपयोग करके कई उद्योगों में सॉफ़्टवेयर का उत्पादन करते हैं।


आपको भाषा का दस्तावेज बनाने की आवश्यकता क्यों होगी? क्या यह एक गूढ़ या कस्टम निर्मित भाषा है? क्या इसके पास पहले से दस्तावेज नहीं है? और यदि नहीं, तो आपने इसे पहले स्थान पर क्यों चुना?
यानिस

@YannisRizos - मुझे लगता है कि आप मान सकते हैं कि यह एक कस्टम स्क्रिप्टिंग / मैक्रो भाषा है, न कि वे C ++ का दस्तावेजीकरण करने का इरादा रखते हैं। आम तौर पर इस तरह की भाषा के लिए डॉक्स पार्सर स्रोत है - चूंकि भाषा का कार्यान्वयन करने वाला अक्सर मुख्य उपयोगकर्ता होता है
मार्टिन बेकेट

2
@DanMcGrath खैर, हां, दर्शकों और मौजूदा प्रलेखन के स्तर / मात्रा को जानने से प्रभावित होगा कि मैं एक संदर्भ पुस्तिका कैसे लिखूंगा। क्या यह केवल आंतरिक उपयोग के लिए होगा?
यनीस

1
@Telastyn - हाँ, यह सार्वजनिक है। हमारे पास संदर्भ संदर्भों की तुलना में बहुत अधिक है, लेकिन यह सवाल विशेष रूप से उस पहलू पर था: rocketsoftware.com/u2/resources/technical-resources
Dan McGrath

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

जवाबों:


16

लक्षित दर्शकों की जरूरतों के अनुसार प्रलेखन व्यवस्थित करें।

आपके मामले में, प्राथमिक दर्शक जाहिरा तौर पर सॉफ़्टवेयर डेवलपर हैं। यहाँ पर विचार करने वाले भाग इस एक के विभिन्न "उप-श्रोताओं" को संबोधित करने के लिए हैं:

  1. नमस्ते दुनिया।
    जो लोग इसका स्वाद जल्दी से प्राप्त करने के लिए तैयार हैं, बस नमूना आवेदन बनाएं और देखें कि यह कैसा दिखता है।
    MySQL के "15 मिनट के नियम" से संबोधित किए गए दर्शकों की तरह सोचें :

    ... एक उपयोगकर्ता को MySQL को डाउनलोड करने और उसे डाउनलोड करने के 15 मिनट बाद चलाने में सक्षम होना चाहिए।

  2. बुनियादी बातों।
    काम करने वाले सॉफ्टवेयर का उत्पादन शुरू करने के लिए आवश्यक चीजों को जल्दी से जानने के इच्छुक लोगों के लिए।
  3. उन्नत विषय।
    डेवलपर्स के लिए पहले से ही अच्छी तरह से परिचित और मूल सिद्धांतों के साथ अभ्यास किया गया है, यह जानने के लिए दिलचस्पी है कि क्या है। मुख्यधारा के विषय जो बुनियादी बातों में शामिल नहीं किए गए हैं ।
  4. स्टाइल गाइड / अनुशंसित अभ्यास।
    जिस तरह से आप चीजों को करने की सलाह देते हैं, उसके लिए विशेष सलाह और मार्गदर्शन।
    यह सवाल इंगित नहीं करता है कि क्या यह आपके मामले में पर्याप्त दर्शक हो सकता है, इसलिए विचार करने के लिए विकल्प इसे उन्नत विषयों के एक भाग / परिशिष्ट के रूप में शामिल करने के लिए हैं या यहां तक ​​कि इसे पूरी तरह से छोड़ देते हैं।
  5. क्वर्क्स।
    अस्पष्ट विषयों, मुख्यधारा के बाहर, जो आपके दर्शकों के सुंदर सीमित अंश के लिए रुचि हो सकती है। उदाहरण के लिए, यदि आपके पास विरासत लाइन है, या विरासत के साथ अपग्रेड / माइग्रेशन / इंटरऑपरेबिलिटी जैसे सामान - इसे यहां रखें। यदि विशेष रूप से "विदेशी" वातावरण में कुछ फ़ंक्शन के लिए कुछ दुष्प्रभाव हैं, तो यह इस भाग में जाता है।
आपके द्वितीयक ऑडियंस मैनुअल के अनुरक्षक हैं। ये लोग आपके प्राथमिक दर्शकों के लिए कैसे काम करते हैं या बना सकते हैं, इसलिए आप उनकी जरूरतों और मुद्दों का बेहतर तरीके से ध्यान रखते हैं।

क्या होगा अगर मैनुअल में कुछ संदिग्ध / अस्पष्ट है? क्या होगा अगर यह पता चलता है कि विशेष अवधारणाओं की गहन व्याख्या से उस मैनुअल को पढ़ना बहुत मुश्किल हो जाएगा? क्या होगा अगर यह पता चला है कि मैनुअल के विशेष संस्करण में गलतियां हैं?

अनुरक्षकों के लिए विचार करने के लिए दो चीजें हैं:

  1. तकनीकी / औपचारिक विनिर्देश।
    जब भी मैनुअल में कोई संदिग्ध / अस्पष्ट / कठिन विषय की व्याख्या करने के लिए होता है, तो उस पर सख्त और स्पष्ट, "आधिकारिक" बयान के लिए पाठक को विनिर्देश में विशेष पैराग्राफ के लिए भेजा जा सकता है। भाषा वाक्य रचना का सख्त और पूर्ण (और सबसे अधिक संभावना उबाऊ) विवरण वहां बेहतर होगा। विशिष्टता के
    लिए सर्वोपरि विचार तकनीकी सटीकता और पूर्णता हैं, भले ही ये पठनीयता की कीमत पर हों।
  2. ऑनलाइन पूरक।
    बस कुछ URL आरक्षित करें और इसे आपके द्वारा जारी किए गए प्रत्येक दस्तावेज़ की शुरुआत में डालें, ताकि लोग सोचें कि उन्होंने अभी जो नरक पढ़ा है, वह वहां जा सकता है (मैनुअल अनुरक्षकों के बजाय) और गलती से बताई गई गलती को ढूंढ सकते हैं।

    इरेटा> फंडामेंटल> रिलीज 2.2> टाइपो पृष्ठ 28 पर, दूसरा वाक्य भाग्य के साथ शुरू होता है , इसके बजाय लॉक पढ़ें ।

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

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


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

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


@DanMcGrath डॉक विकास प्रक्रिया के लिए एक और टिप: पुश-ट्रैक-बैकआउट-रिपीट दृष्टिकोण पर विचार करें। 1) ज़ोर देने की प्रक्रिया के लिए टेक लेखकों को धक्का दें 2) 3 को धक्का देते हुए डॉक्टर की गुणवत्ता को ट्रैक करें) यदि गुणवत्ता में गिरावट है, तो कुछ समय बाद "नरम" प्रक्रिया के लिए बैकआउट करें - वर्तमान स्तर के लिए उपयोग किए जाने के बाद - एक को कड़ी करने के लिए पुश को दोहराएं। और इसी तरह, और इसी तरह जब तक आप वहां 100% हैं। :)
कुटकी

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

@ गिल्बर्टलेबैंक प्रश्न "संदर्भ मैनुअल" के बारे में था, जिसे मैं (और मुझे लगता है कि विकिपीडिया ) मेरे उत्तर में सामान को कवर करने के लिए पर्याप्त रूप से पर्याप्त है
gnat

5

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

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

अपने कार्यों के किसी भी दुष्प्रभाव के विवरण को शामिल करना सुनिश्चित करें ।

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

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

लेखक पांच टेक लेखकों की एक टीम के प्रबंधन की जिम्मेदारी के साथ 1987 से 1991 के बीच रेडी सिस्टम्स इंक के विकास केंद्र में इंजीनियरिंग सेवा प्रभाग के प्रबंधक थे।

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