टीएनएसडीएल

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

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

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

डिजाइन
टीएनएसडीएल एक बहुत ही सरल, सीखने में आसान प्रोग्रामिंग भाषा है।

मूल बातें
टीएनएसडीएल एक दृढ़ता से टाइप की जाने वाली प्रक्रियात्मक प्रोग्रामिंग भाषा है। इसकी मूल क्षमताएं C (प्रोग्रामिंग भाषा) और पास्कल (प्रोग्रामिंग भाषा) भाषाओं के बराबर हैं।

बहु-प्रसंस्करण
TNSDL में क्रिएट कमांड द्वारा प्रोसेस बनाए जाते हैं। (यह कुछ हद तक POSIX फोर्क (ऑपरेटिंग सिस्टम) या POSIX थ्रेड्स pthread_create कमांड के समान है।) CREATE कमांड या तो ऑपरेटिंग सिस्टम प्रक्रिया या सहकारी मल्टीटास्किंग बनाता है।

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

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

संदेश देना
टीएनएसडीएल की विशेषता अभिनेता मॉडल है। प्रक्रियाओं को घटना-संचालित परिमित स्टेट मशीनों के रूप में डिज़ाइन किया जाना है। अंतःप्रक्रम संचार  एसिंक्रोनस  मैसेज पासिंग द्वारा किया जाता है। OUTPUT कमांड एक संदेश भेजता है, जबकि INPUT स्टेटमेंट अपेक्षित संदेशों को परिभाषित करता है।

टीएनएसडीएल परिप्रेक्ष्य से काल समंजक विलंबित संदेश हैं। सामान्य संदेशों की तरह, काल समंजक की समाप्ति INPUT स्टेटमेंट द्वारा नियंत्रित की जाती है। SET कमांड शुरू होती है और RESET कमांड काल समंजक को रद्द कर देती है।

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

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

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

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

एसडीएल-88 से अंतर
नोकिया ने भाषा में कई संशोधन किए हैं, जिसमें मुख्य रूप से सरलीकरण और परिवर्धन शामिल हैं, जैसे:


 * चैनल और सिग्नल रूट जैसी सुविधाओं को अन्य तंत्रों द्वारा प्रतिस्थापित किया गया है।
 * TNSDL में मॉड्यूल और सेवाओं की अवधारणाओं को जोड़ा गया था (SDL-88 की सेवा अवधारणा TNSDL की सबऑटोमेटन विशेषता के समान है)।
 * कुछ तत्वों का नाम बदल दिया गया है (उदाहरण के लिए प्राथमिकता इनपुट को टीएनएसडीएल में इनपुट आंतरिक कहा जाता है)।
 * TNSDL में MACRO फीचर को छोड़ दिया गया है और WHILE कंस्ट्रक्शन को JOINs का उपयोग किए बिना संरचित तरीके से लूप की अनुमति देने के लिए जोड़ा गया है।

संकलन
टीएनएसडीएल को सीधे मशीन कोड में संकलित नहीं किया जाता है। इसके बजाय, TNSDL प्रोग्राम का C (प्रोग्रामिंग भाषा) स्रोत कोड में अनुवाद किया जाता है। टीएनएसडीएल का उत्तरदायित्व संदेश प्रबंधन, राज्य मशीन परिभाषाओं, समांतर निष्पादन को सिंक्रनाइज़ करना, "डेटा वार्मिंग" इत्यादि को आसानी से और सुरक्षित रूप से कोडित करने की अनुमति देना है। प्रोसेसर-विशिष्ट कोड जनरेशन और निम्न-स्तरीय अनुकूलन का कार्य उपयोग किए गए C कंपाइलर को सौंपा गया है।

टीएनएसडीएल को सी में अनुवाद करने के बाद, किसी भी मानक-अनुरूप सी कंपाइलर, लिंकर, कवरेज मापन और प्रोफाइलिंग टूल का उपयोग किया जा सकता है। स्रोत-स्तरीय डिबगिंग को संभव बनाने के लिए TNSDL उत्पन्न C कोड के लिए लाइन नंबर संदर्भ डालता है।

TNSDL कोड अन्य भाषाओं में कार्यान्वित रूटीन को कॉल कर सकता है, यदि उनके लिए ऑब्जेक्ट या लाइब्रेरी मौजूद हैं। ​​C हेडर फाइल मौजूद होने पर भी सी लैंग्वेज मैक्रोज़ का इस्तेमाल किया जा सकता है। बाहरी घोषणाएं टीएनएसडीएल अनुवादक को उपलब्ध कराई जानी चाहिए।

TNSDL अनुवादक एक सांपातिक उपकरण है। विशेष रूप से टीएनएसडीएल के लिए एक स्रोत कोड (पहुंच योग्यता) विश्लेषक भी विकसित किया गया है।

प्रयोग करें
उच्च-निष्पादन, उच्च-उपलब्धता अनुप्रयोगों के लिए आमतौर पर DX 200, IPA 2800 और Linux प्लेटफॉर्म पर TNSDL का उपयोग किया जाता है।

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

TNSDL का उपयोग मुख्य रूप से Nokia नेटवर्क में SGSN, बेस स्टेशन नियंत्रक, मोबाइल स्विचिंग सेंटर, अनुप्रयोग सर्वर दोनों के लिए पारंपरिक सेटअप में और नेटवर्क फ़ंक्शन वर्चुअलाइजेशन समाधान के वर्चुअल नेटवर्क फ़ंक्शंस (VNF) के रूप में सॉफ़्टवेयर विकसित करने के लिए किया जाता है।

समान प्रोग्रामिंग भाषाएँ
सिंटैक्स में अंतर के बावजूद, संभवतः TNSDL के निकटतम रिश्तेदार में से एक गो (प्रोग्रामिंग भाषा) है। दोनों भाषाओं में हल्के वजन की प्रक्रिया  है | लाइट-वेट प्रोसेस उनके फोकस में है। गो का चैनल टीएनएसडीएल इनपुट के समान है और चैनलों पर गो का चुनिंदा बयान बहुत समान कार्यक्रम डिजाइन की अनुमति देता है। हालांकि मतभेद हैं। TNSDL अभिनेता मॉडल के बीच अतुल्यकालिक संचार संदेश का उपयोग करता है, जबकि गो में चैनल या तो तुल्यकालिक या अतुल्यकालिक (बफर) हो सकते हैं। TNSDL एक ही या अलग कंप्यूटर नोड्स पर चलने वाली प्रक्रियाओं के बीच संदेशों को भेजने की अनुमति देता है। उस पहलू में TNSDL Erlang (प्रोग्रामिंग लैंग्वेज) का रिश्तेदार है।

भले ही टीएनएसडीएल में कोई ऑपरेटर को प्रकारों के लिए परिभाषित कर सकता है और केवल उन ऑपरेटरों के माध्यम से सुलभ होने के लिए संरचना विशेषताओं की रक्षा कर सकता है, टीएनएसडीएल ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग  नहीं है। ऑब्जेक्ट-ओरिएंटेड भाषा। उस पहलू में यह गैर-ओओपी प्रक्रियात्मक प्रोग्रामिंग भाषाओं, जैसे सी (प्रोग्रामिंग भाषा) के परिवार से संबंधित है।

इतिहास
1980 का दशक: शुरुआत में, ITU-T विशिष्टता और विवरण भाषा में एक ग्राफिकल सिंटैक्स था। शाब्दिक वाक्य-विन्यास बाद में पेश किया गया था। नोकिया के भीतर एक संबंधित ग्राफिकल टूल और कोड जनरेटर विकसित किए गए थे।

1990: ITU-T विशिष्टता और विवरण भाषा को पाठ-आधारित प्रतिनिधित्व की ओर स्थानांतरित किया गया। SDL-88 विशिष्टता के आधार पर TNSDL का जन्म हुआ। TNSDL SDL-88 का एक सरलीकृत और अत्यधिक अनुकूलित संस्करण है।