एडा (प्रोग्रामिंग भाषा)

Ada एक संरचित प्रोग्रामिंग है, स्थिर रूप से टाइप किया गया, अनिवार्य प्रोग्रामिंग और वस्तु उन्मुख कार्यकर्म | ऑब्जेक्ट-ओरिएंटेड उच्च स्तरीय प्रोग्रामिंग भाषा, पास्कल (प्रोग्रामिंग भाषा) और अन्य भाषाओं से विस्तारित है। इसमें 'अनुबंध द्वारा डिजाइन' (DbC), बेहद मजबूत और कमजोर टाइपिंग, स्पष्ट समरूपता, कार्यों, सिंक्रोनस मैसेज पासिंग, संरक्षित वस्तुओं और गैर-नियतात्मक प्रोग्रामिंग के लिए अंतर्निहित भाषा समर्थन है। एडा रनटाइम (प्रोग्राम जीवनचक्र चरण) त्रुटियों के पक्ष में त्रुटियों को खोजने के लिए संकलक का उपयोग करके कोड सुरक्षा और रखरखाव में सुधार करता है। Ada एक अंतर्राष्ट्रीय मानक तकनीकी मानक है, जिसे अंतर्राष्ट्रीय मानकीकरण संगठन (ISO) और अंतर्राष्ट्रीय इंटरनेशनल इलेक्ट्रोटेक्नीकल कमीशनIEC) द्वारा संयुक्त रूप से परिभाषित किया गया है।, मानक, जिसे Ada 2012 अनौपचारिक रूप से कहा जाता है, आईएसओ/आईईसी 8652:2012 है। एडा का नाम लवलेस है (1815-1852) के नाम पर रखा गया था, जिन्हें पहले कंप्यूटर प्रोग्रामर के रूप में श्रेय दिया जाता है। रेफरी>

सुविधाएँ
एडा मूल रूप से अंतः स्थापित प्रणाली और रीयल-टाइम कंप्यूटिंग | रीयल-टाइम सिस्टम के लिए डिज़ाइन किया गया था। 1992 और 1995 के बीच इंटरमेट्रिक्स के एस. टकर टाफ़्ट द्वारा डिज़ाइन किया गया Ada 95 संशोधन, सिस्टम, संख्यात्मक, वित्तीय और ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग (OOP) के लिए बेहतर समर्थन करता है।

एडीए की विशेषताओं में शामिल हैं: मजबूत और कमजोर टाइपिंग, मॉड्यूलर प्रोग्रामिंग मैकेनिज्म (पैकेज), रन-टाइम जाँच, समानांतर कंप्यूटिंग (टास्क (कंप्यूटिंग), सिंक्रोनस संदेश देना, प्रोटेक्टेड ऑब्जेक्ट्स और नॉनडेटर्मिनिस्टिक स्विच स्टेटमेंट), एक्सेप्शन हेंडलिंग और सामान्य प्रोग्रामिंग। Ada 95 ने गतिशील प्रेषण सहित ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग के लिए समर्थन जोड़ा।

Ada का सिंटैक्स बुनियादी संचालन करने के तरीकों के विकल्पों को कम करता है, और अंग्रेजी कीवर्ड (जैसे या और और फिर) को प्रतीकों (जैसे || और &&) के लिए पसंद करता है। एडा बुनियादी अंकगणितीय ऑपरेटरों का उपयोग करता है +, - , * , और / , लेकिन अन्य प्रतीकों का उपयोग करने से बचता है। कोड ब्लॉक को डिक्लेयर, स्टार्ट और एंड जैसे शब्दों द्वारा सीमांकित किया जाता है, जहां अंत (ज्यादातर मामलों में) ब्लॉक के पहचानकर्ता के बाद बंद हो जाता है (जैसे, अगर ... अंत अगर, लूप ... एंड लूप). सशर्त ब्लॉक के मामले में यह एक और झूलने से बचता है जो सी या जावा जैसी अन्य भाषाओं में गलत नेस्टेड इफ-एक्सप्रेशन के साथ जुड़ सकता है।

Ada को बहुत बड़े सॉफ्टवेयर सिस्टम विकसित करने के लिए डिज़ाइन किया गया है। Ada संकुल को अलग से संकलित किया जा सकता है। एडीए पैकेज विनिर्देशों (पैकेज इंटरफ़ेस) को भी कार्यान्वयन के बिना स्थिरता की जांच के लिए अलग से संकलित किया जा सकता है। इससे कार्यान्वयन शुरू होने से पहले, डिजाइन चरण के दौरान समस्याओं का जल्द पता लगाना संभव हो जाता है।

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

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

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

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

अर्धविराम एक बयान टर्मिनेटर है, और अशक्त या नो-ऑपरेशन स्टेटमेंट है. एक भी  एक बयान के बिना समाप्त करने की अनुमति नहीं है।

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

[[GNAT प्रोग्रामिंग स्टूडियो]] और GNAT GNU कम्पाइलर संग्रह का एक भाग है, GNAT प्रोग्रामिंग स्टूडियो और GNAT एक उल्लेखनीय मुफ्त सॉफ्टवेयर टूल है जिसका उपयोग कई Ada प्रोग्रामर उन्हें Ada स्रोत कोड लिखने में सहायता करने के लिए करते हैं।

इतिहास
1970 के दशक में यूनाइटेड स्टेट्स डिपार्टमेंट ऑफ डिफेंस (DoD) अपने एम्बेडेड कंप्यूटर सिस्टम प्रोजेक्ट्स के लिए उपयोग की जा रही विभिन्न प्रोग्रामिंग भाषाओं की संख्या से चिंतित हो गया, जिनमें से कई अप्रचलित या हार्डवेयर-निर्भर थे, और इनमें से कोई भी सुरक्षित मॉड्यूलर प्रोग्रामिंग का समर्थन नहीं करता था। 1975 में, एक कार्यकारी समूह, हाई ऑर्डर लैंग्वेज वर्किंग ग्रुप (HOLWG) का गठन किया गया था, जो इस संख्या को कम करने के इरादे से विभाग और रक्षा मंत्रालय (यूनाइटेड किंगडम) की आवश्यकताओं के लिए आमतौर पर उपयुक्त प्रोग्रामिंग भाषा खोज या बना रहा था।. मूल स्ट्रॉ मैन प्रस्ताव से शुरू होने वाले कई पुनरावृत्तियों के बाद अंतिम प्रोग्रामिंग भाषा का नाम एडा रखा गया। ऐसी परियोजनाओं के लिए उपयोग की जाने वाली उच्च-स्तरीय प्रोग्रामिंग भाषाओं की कुल संख्या 1983 में 450 से गिरकर 1996 तक 37 हो गई।

HOLWG ने स्टीलमैन भाषा की आवश्यकताओं को तैयार किया, दस्तावेजों की एक श्रृंखला जिसमें उन आवश्यकताओं को बताया गया है जो उन्हें लगा कि एक प्रोग्रामिंग भाषा को संतुष्ट करना चाहिए। कई मौजूदा भाषाओं की औपचारिक रूप से समीक्षा की गई, लेकिन टीम ने 1977 में निष्कर्ष निकाला कि कोई भी मौजूदा भाषा विनिर्देशों को पूरा नहीं करती है।

एक नई प्रोग्रामिंग भाषा के प्रस्तावों के लिए अनुरोध जारी किए गए थे और रेड (बेंजामिन ब्रोसगोल के नेतृत्व में इंटरमेट्रिक्स), ग्रीन (जीन इचिबिया के नेतृत्व में सीआईआई हनीवेल बुल), ब्लू (सोफटेक, इंक।, जॉन गुडइनफ के नेतृत्व में) और येलो (श्री इंटरनेशनल, जे स्पिट्जन के नेतृत्व में)। अप्रैल 1978 में, सार्वजनिक जांच के बाद, लाल और हरे रंग के प्रस्ताव अगले चरण में पारित हो गए। मई 1979 में, CII हनीवेल बुल में जीन इचिबियाह द्वारा डिजाइन किए गए ग्रीन प्रस्ताव को चुना गया और एडा लवलेस के बाद एडा नाम दिया गया। ऑगस्टा एडा, काउंटेस ऑफ लवलेस। यह प्रस्ताव उस भाषा LIS (प्रोग्रामिंग लैंग्वेज) से प्रभावित था जिसे इचबियाह और उनके समूह ने 1970 के दशक में विकसित किया था। प्रारंभिक एडीए संदर्भ मैनुअल जून 1979 में एसीएम सिगप्लान नोटिस में प्रकाशित हुआ था। सैन्य मानक संदर्भ मैनुअल को 10 दिसंबर, 1980 (एडा लवलेस का जन्मदिन) पर अनुमोदित किया गया था, और एडा लवलेस के जन्म वर्ष के सम्मान में नंबर एमआईएल-एसटीडी-1815 दिया गया था। 1981 में, C. A. R. होरे ने अपने ट्यूरिंग अवार्ड भाषण का लाभ उठाते हुए एडा की अत्यधिक जटिल होने और इसलिए अविश्वसनीय होने की आलोचना की, लेकिन बाद में ऐसा लगा जैसे उसने एक ऐडा पाठ्यपुस्तक के लिए लिखी गई प्रस्तावना में फिर से लिखा हो। एडा ने अपने शुरुआती दिनों में प्रोग्रामिंग समुदाय का बहुत ध्यान आकर्षित किया। इसके समर्थकों और अन्य लोगों ने भविष्यवाणी की कि यह सामान्य प्रयोजन प्रोग्रामिंग के लिए एक प्रमुख भाषा बन सकती है, न कि केवल रक्षा संबंधी कार्य। इचबिया ने सार्वजनिक रूप से कहा कि दस वर्षों के भीतर, केवल दो प्रोग्रामिंग भाषाएं रह जाएंगी: एडा और लिस्प (प्रोग्रामिंग भाषा)। प्रारंभिक एडीए संकलक बड़ी, जटिल भाषा को लागू करने के लिए संघर्ष करते थे, और संकलन-समय और रन-टाइम प्रदर्शन दोनों ही धीमे और उपकरण आदिम थे। कंपाइलर विक्रेताओं ने अपने अधिकांश प्रयासों को बड़े पैमाने पर, भाषा-अनुरूपता-परीक्षण, सरकार द्वारा आवश्यक ACVC सत्यापन सूट को पारित करने में खर्च किया, जो कि Ada भाषा के प्रयास की एक और उपन्यास सुविधा में आवश्यक था। 1975-1983 में शुरू हुई कंप्यूटर हैकर स्लैंग की डिक्शनरी, जारगॉन फाइल, on Ada में नोट करती है कि यह ठीक वही है जिसकी कोई उम्मीद कर सकता है। फिएट द्वारा उस तरह का समर्थन; समिति द्वारा डिज़ाइन किया गया ... उपयोग करने में मुश्किल, और कुल मिलाकर एक विनाशकारी, बहु-अरब-डॉलर का वरदान ... एडा लवलेस ... लगभग निश्चित रूप से उसके नाम का उपयोग करने पर ब्लैंक हो जाएगा; इसके बारे में जो सबसे अच्छी बात कही गई है, वह यह है कि इसके विशाल, हाथी के झुंड के अंदर से बाहर निकलने के लिए शायद एक अच्छी छोटी भाषा चिल्ला रही है।

पहला मान्य Ada कार्यान्वयन NYU Ada/Ed अनुवादक था, 11 अप्रैल, 1983 को प्रमाणित। NYU Ada/Ed उच्च-स्तरीय सेट भाषा SETL में लागू किया गया है। कई वाणिज्यिक कंपनियों ने एडा कम्पाइलर और संबद्ध विकास उपकरणों की पेशकश शुरू की, जिसमें अलसिस, टेलीसॉफ्ट, डीडीसी-I, उन्नत कंप्यूटर तकनीक, टार्टन प्रयोगशालाएं, इरविन संकलक, टीएलडी सिस्टम्स और वेदिक्स शामिल हैं। कंप्यूटर निर्माता जिनका रक्षा, एयरोस्पेस, या संबंधित उद्योगों में महत्वपूर्ण व्यवसाय था, उन्होंने भी अपने प्लेटफॉर्म पर एडा कंपाइलर और टूल्स की पेशकश की; इनमें समवर्ती कंप्यूटर कॉर्पोरेशन, क्रे रिसर्च, इंक., हैरिस कंप्यूटर सिस्टम्स, और सीमेंस निक्सडॉर्फ सूचना प्रणाली एजी शामिल हैं।

1991 में, अमेरिकी रक्षा विभाग ने सभी सॉफ्टवेयर के लिए एडीए (एडीए मैंडेट) के उपयोग की आवश्यकता शुरू की, हालांकि इस नियम के अपवाद अक्सर दिए गए थे। 1997 में डिपार्टमेंट ऑफ डिफेन्स ऐडा मैंडेट को प्रभावी ढंग से हटा दिया गया था, क्योंकि DoD ने व्यावसायिक बिकने वाला (वाणिज्यिक ऑफ-द-शेल्फ) तकनीक को अपनाना शुरू कर दिया था। अन्य उत्तरी अटलांटिक संधि संगठन देशों में भी इसी तरह की आवश्यकताएं मौजूद थीं: नाटो प्रणालियों के लिए एडीए की आवश्यकता थी जिसमें कमांड और नियंत्रण और अन्य कार्य शामिल थे, और एडीए स्वीडन, जर्मनी और कनाडा जैसे देशों में रक्षा संबंधी अनुप्रयोगों के लिए अनिवार्य या पसंदीदा भाषा थी। 1980 के दशक के अंत और 1990 के दशक के प्रारंभ तक, एडा कंपाइलर्स के प्रदर्शन में सुधार हुआ था, लेकिन एडा की क्षमताओं का पूरी तरह से दोहन करने में अभी भी बाधाएं थीं, जिसमें एक टास्किंग मॉडल भी शामिल था, जो कि वास्तविक समय के प्रोग्रामरों के लिए उपयोग किए जाने वाले मॉडल से अलग था।

एडा के सुरक्षा-महत्वपूर्ण प्रणाली|सेफ्टी-क्रिटिकल सपोर्ट फीचर्स के कारण, अब इसका उपयोग न केवल सैन्य अनुप्रयोगों के लिए किया जाता है, बल्कि व्यावसायिक परियोजनाओं में भी किया जाता है, जहां एक सॉफ्टवेयर बग के गंभीर परिणाम हो सकते हैं, जैसे, एवियोनिक्स और हवाई यातायात नियंत्रण, वाणिज्यिक रॉकेट जैसे एरियन (रॉकेट परिवार), उपग्रह और अन्य अंतरिक्ष प्रणालियाँ, रेलवे परिवहन और बैंकिंग। उदाहरण के लिए, हवाई जहाज सूचना प्रबंधन प्रणाली, विमान उड़ान नियंत्रण प्रणाली|बोइंग 777 में फ्लाई-बाय-वायर सिस्टम सॉफ्टवेयर, एडा में लिखा गया था।  डीडीसी-I के सलाहकारों के सहयोग से हनीवेल एयरोस्पेस द्वारा विकसित, यह यकीनन किसी भी एडीए परियोजना, नागरिक या सेना के लिए सबसे प्रसिद्ध बन गया।  कैनेडियन ऑटोमेटेड एयर ट्रैफिक सिस्टम को एडा (कोड काउंट की सोर्स लाइन) की 1 मिलियन लाइनों में लिखा गया था। इसमें उन्नत वितरित प्रसंस्करण, एक वितरित एडीए डेटाबेस और ऑब्जेक्ट-ओरिएंटेड डिज़ाइन शामिल हैं। Ada का उपयोग अन्य हवाई यातायात प्रणालियों में भी किया जाता है, उदाहरण के लिए, यूके की अगली पीढ़ी के अंतरिम भविष्य क्षेत्र नियंत्रण उपकरण समर्थन  हवाई यातायात नियंत्रण प्रणाली को स्पार्क (प्रोग्रामिंग भाषा) एडा का उपयोग करके डिजाइन और कार्यान्वित किया गया है। इसका उपयोग TGV हाई-स्पीड रेल सिस्टम पर फ्रांस ट्रैक-मशीन ट्रांसमिशन इन-कैब सिग्नलिंग सिस्टम और पेरिस, लंदन, हांगकांग और न्यूयॉर्क शहर में मेट्रो उपनगरीय ट्रेनों में भी किया जाता है।

मानकीकरण
प्रारंभिक अदायगी ACM Sigplan Notes Vol 14, No 6, June 1979 में देखी जा सकती है।

Ada को पहली बार 1980 में एक अमेरिकी राष्ट्रीय मानक संस्थान मानक ANSI/MIL-STD 1815 के रूप में प्रकाशित किया गया था। चूंकि इस पहले संस्करण में कई त्रुटियां और विसंगतियां थीं (देखें Ada Language Changes का सारांश), संशोधित संस्करण 1983 में ANSI/MIL-STD 1815A के रूप में प्रकाशित हुआ था। बिना किसी और बदलाव के, यह 1987 में एक ISO मानक बन गया, ISO 8652:1987। भाषा के इस संस्करण को आमतौर पर एएनएसआई द्वारा अपनाए जाने की तारीख से एडीए 83 के रूप में जाना जाता है, लेकिन कभी-कभी आईएसओ द्वारा इसे अपनाने की तारीख से इसे एडीए 87 भी कहा जाता है। यह Ada 83 संदर्भ मैनुअल है। एक फ्रेंच अनुवाद भी है; DIN ने 1988 में DIN 66268 के रूप में इसका जर्मन में अनुवाद किया।

Ada 95, संयुक्त ISO/IEC/ANSI मानक ISO/IEC 8652:1995 (देखें /मानक/ADA-95-दस्तावेज़/lrm-मूल/Ada 95 RM) फरवरी 1995 में प्रकाशित हुआ था, जिससे यह पहली ISO मानक वस्तु-उन्मुख प्रोग्रामिंग भाषा बन गई। मानक संशोधन और भविष्य की स्वीकृति में मदद करने के लिए, अमेरिकी वायु सेना ने जीएनएटी कंपाइलर के विकास को वित्त पोषित किया। वर्तमान में, जीएनएटी कंपाइलर जीएनयू कंपाइलर संग्रह का हिस्सा है।

एडा भाषा की तकनीकी सामग्री में सुधार और अद्यतन करने पर काम जारी है। Ada 95 के लिए एक तकनीकी शुद्धिपत्र अक्टूबर 2001 में प्रकाशित हुआ था, ISO/IEC 8652:1995/Corr 1:2001 (देखें .org/standards/95lrm/html/RM-TTL.html Ada 95 RM with TC 1), और एक प्रमुख संशोधन, ISO/IEC 8652:1995 /अमद 1:2007 (देखें Ada 2005 RM) 9 मार्च, 2007 को प्रकाशित हुआ था, जिसे आमतौर पर इस रूप में जाना जाता है Ada 2005 क्योंकि उस साल नए मानक पर काम पूरा हो गया था।

स्टॉकहोम में एडा-यूरोप 2012 सम्मेलन में, एडा रिसोर्स एसोसिएशन (एआरए) और एडा-यूरोप ने एडा भाषा के नवीनतम संस्करण के डिजाइन को पूरा करने और आईएसओ/आईईसी जेटीसी 1/ को संदर्भ मैनुअल जमा करने की घोषणा की। मानकीकरण के लिए अंतर्राष्ट्रीय संगठन (आईएसओ) के एससी 22/डब्ल्यूजी 9 और अनुमोदन के लिए अंतर्राष्ट्रीय इलेक्ट्रोटेक्निकल कमीशन (आईईसी)। ISO/IEC 8652:2012 (देखें html Ada 2012 RM) दिसंबर 2012 में प्रकाशित हुआ था, जिसे Ada 2012 के नाम से जाना जाता है। एक तकनीकी शुद्धिपत्र प्रकाशित किया गया था ISO/IEC 8652:2012/COR 1:2016 (देखें TC 1 के साथ RM 2012)।

Ada 83, 95 आदि नामों के बावजूद, कानूनी रूप से केवल एक Ada मानक है, अंतिम ISO/IEC मानक में से एक: एक नए मानक संस्करण की स्वीकृति के साथ, पिछला वाला वापस ले लिया जाता है। अन्य नाम केवल एक निश्चित संस्करण को संदर्भित करने वाले अनौपचारिक हैं।

अन्य संबंधित मानकों में ISO 8651|ISO/IEC 8651-3:1988 इन्फॉर्मेशन प्रोसेसिंग सिस्टम-कंप्यूटर ग्राफिक्स-ग्राफिकल कर्नेल सिस्टम (GKS) लैंग्वेज बाइंडिंग-पार्ट 3: Ada शामिल हैं।

भाषा निर्माण
Ada एक ALGOL जैसी प्रोग्रामिंग भाषा है, जिसमें आरक्षित शब्दों के साथ नियंत्रण संरचना होती है, जैसे कि if, then, else, while, for, इत्यादि। हालाँकि, Ada के पास कई डेटा संरचना सुविधाएँ और अन्य सार हैं जो मूल ALGOL 60 में शामिल नहीं थे, जैसे कि प्रकार प्रणाली, रिकॉर्ड (कंप्यूटर साइंस), पॉइंटर (कंप्यूटर प्रोग्रामिंग), प्रगणित प्रकार इस तरह के निर्माण आंशिक रूप से पास्कल (प्रोग्रामिंग भाषा) से विरासत में मिले या उससे प्रेरित थे।

हैलो, दुनिया! अदा
में किसी भाषा के सिंटैक्स (प्रोग्रामिंग भाषा) का एक सामान्य उदाहरण हैलो वर्ल्ड प्रोग्राम है: (हैलो। एडीबी) <वाक्यविन्यास लैंग = एडीए लाइन> Ada.Text_IO के साथ; प्रक्रिया हैलो है शुरू करना Ada.Text_IO.Put_Line (हैलो, दुनिया!); अंत हैलो;  इस प्रोग्राम को निष्पादित करके मुक्त रूप से उपलब्ध ओपन सोर्स कंपाइलर GNAT का उपयोग करके संकलित किया जा सकता है

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

उदाहरण के लिए, दिनांक को इस प्रकार दर्शाया जा सकता है:

<वाक्यविन्यास लैंग = एडीए लाइन> प्रकार Day_type श्रेणी 1 है .. 31; प्रकार महीना_प्रकार श्रेणी 1 है .. 12; टाइप ईयर_टाइप रेंज 1800 है .. 2100; टाइप ऑवर्स मॉड 24 है; सप्ताह का दिन है (सोमवार, मंगलवार, बुधवार, गुरुवार, शुक्रवार, शनिवार, रविवार);

प्रकार दिनांक है अभिलेख दिन : Day_type; महीना : महीना_प्रकार; वर्ष : वर्ष_प्रकार; अंत रिकॉर्ड; 

नोट करने के लिए महत्वपूर्ण: Day_type, Month_type, Year_type, घंटे असंगत प्रकार हैं, जिसका अर्थ है कि उदाहरण के लिए निम्न अभिव्यक्ति अवैध है:

<वाक्यविन्यास लैंग = एडीए लाइन> आज का दिन_प्रकार := 4; वर्तमान_महीना: महीना_प्रकार: = 10; ... आज + वर्तमान_माह ... - अवैध 

पूर्वनिर्धारित प्लस-ऑपरेटर केवल उसी प्रकार के मान जोड़ सकता है, इसलिए अभिव्यक्ति अवैध है।

सबटाइपिंग घोषित करके प्रकारों को परिष्कृत किया जा सकता है:

<वाक्यविन्यास लैंग = एडीए लाइन> उपप्रकार Working_hours घंटे सीमा 0 .. 12 है; - एक दिन में काम करने के लिए अधिकतम 12 घंटे उपप्रकार वर्किंग_डे वीकडे रेंज सोमवार .. शुक्रवार है; - काम करने के दिन

Work_Load: Working_Hours की निरंतर सरणी (Working_Day) - अंतर्निहित प्रकार की घोषणा : = (शुक्रवार => 6, सोमवार => 4, अन्य => 10); - आरंभीकरण के साथ काम के घंटे के लिए लुकअप टेबल 

प्रकारों में संशोधक हो सकते हैं जैसे सीमित, सार, निजी आदि। निजी प्रकार अपनी आंतरिक संरचना नहीं दिखाते हैं; सीमित प्रकार की वस्तुओं की नकल नहीं की जा सकती। Ada 95 प्रकार के ऑब्जेक्ट-ओरिएंटेड एक्सटेंशन के लिए और सुविधाएँ जोड़ता है।

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

<वाक्यविन्यास लैंग = एडीए लाइन> -- जबकि a, b के बराबर नहीं है, लूप। जबकि ए/= बी लूप Ada.Text_IO.Put_Line (प्रतीक्षा); अंत पाश;

अगर ए> बी तो Ada.Text_IO.Put_Line (शर्त पूरी); वरना Ada.Text_IO.Put_Line (शर्त पूरी नहीं हुई); अगर अंत;

मैं 1 में ... 10 लूप के लिए Ada.Text_IO.Put (पुनरावृत्ति:); Ada.Text_IO.Put (i); Ada.Text_IO.Put_Line; अंत पाश;

फंदा ए := ए + 1; बाहर निकलें जब एक = 10; अंत पाश;

मामला मैं है जब 0 => Ada.Text_IO.Put (शून्य); जब 1 => Ada.Text_IO.Put (एक); जब 2 => Ada.Text_IO.Put (दो); -- केस स्टेटमेंट में सभी संभावित केस शामिल होने चाहिए: जब अन्य => Ada.Text_IO.Put (उपरोक्त में से कोई नहीं); अंत का मामला;

वीकडे में एक वीकडे के लिए रेंज लूप -- एन्यूमरेशन पर लूप पुट_लाइन (सप्ताह के दिन की छवि (एक सप्ताह का दिन)); - एक गणना का आउटपुट स्ट्रिंग प्रतिनिधित्व अगर वर्किंग_डे में एक वीकडे है तो -- किसी एन्यूमरेशन के सबटाइप की जांच करें Put_Line ( काम करने के लिए &              Working_hours'Image (Work_Load(aWeekday)) ); - लुकअप टेबल में प्रवेश अगर अंत; अंत पाश; 

पैकेज, प्रक्रियाएं और कार्य
Ada प्रोग्राम के कुछ हिस्सों में पैकेज, प्रक्रियाएँ और कार्य शामिल हैं।

उदाहरण: पैकेज विनिर्देश (example.ads) <वाक्यविन्यास लैंग = एडीए लाइन> पैकेज उदाहरण है प्रकार संख्या श्रेणी 1 है .. 11;    प्रक्रिया Print_and_Increment (जे: बाहर संख्या में); अंत उदाहरण;  पैकेज बॉडी (example.adb) <वाक्यविन्यास लैंग = एडीए लाइन> Ada.Text_IO के साथ; पैकेज बॉडी उदाहरण है

i : संख्या := संख्या'प्रथम;

प्रक्रिया Print_and_Increment (j: in out Number) है

समारोह अगला (के: संख्या में) वापसी संख्या है शुरू करना वापसी के + 1; अंत अगला;

शुरू करना Ada.Text_IO.Put_Line (कुल है: & Number'Image(j)); जे: = अगला (जे); अंत Print_and_Increment;

- पैकेज के विस्तृत होने पर पैकेज इनिशियलाइज़ेशन निष्पादित किया जाता है शुरू करना जबकि मैं <नंबर'लास्ट लूप Print_and_Increment (i); अंत पाश; अंत उदाहरण;  इस प्रोग्राम को संकलित किया जा सकता है, उदाहरण के लिए, स्वतंत्र रूप से उपलब्ध ओपन-सोर्स कंपाइलर GNAT का उपयोग करके, निष्पादित करके

संकुल, प्रक्रियाएं और कार्य किसी भी गहराई तक घोंसला बना सकते हैं, और प्रत्येक तार्किक बाहरीतम ब्लॉक भी हो सकता है।

प्रत्येक पैकेज, प्रक्रिया या फ़ंक्शन में स्थिरांक, प्रकार, चर और अन्य प्रक्रियाओं, कार्यों और पैकेजों की अपनी घोषणाएँ हो सकती हैं, जिन्हें किसी भी क्रम में घोषित किया जा सकता है।

समवर्ती
Ada के पास कार्य-आधारित संगामिति के लिए भाषा समर्थन है। एडा में मौलिक समवर्ती इकाई एक कार्य है, जो एक अंतर्निहित सीमित प्रकार है। कार्य दो भागों में निर्दिष्ट हैं - कार्य घोषणा कार्य इंटरफ़ेस को परिभाषित करती है (एक प्रकार की घोषणा के समान), कार्य निकाय कार्य के कार्यान्वयन को निर्दिष्ट करता है। कार्यान्वयन के आधार पर, Ada कार्यों को या तो ऑपरेटिंग सिस्टम थ्रेड्स या प्रक्रियाओं में मैप किया जाता है, या Ada रनटाइम द्वारा आंतरिक रूप से शेड्यूल किया जाता है।

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

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

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

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

प्रविष्टियों के लिए कॉल को उसी हस्ताक्षर के साथ अन्य प्रविष्टियों के लिए आवश्यक किया जा सकता है। जिस कार्य की आवश्यकता होती है उसे अवरुद्ध कर दिया जाता है और लक्ष्य प्रविष्टि की कतार में जोड़ दिया जाता है; इसका मतलब है कि संरक्षित वस्तु जारी की जाती है और किसी अन्य कार्य के प्रवेश की अनुमति देती है।

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

निम्नलिखित उदाहरण एडा में समवर्ती प्रोग्रामिंग की कुछ अवधारणाओं को दिखाता है। <वाक्यविन्यास लैंग = एडीए लाइन> Ada.Text_IO के साथ; Ada.Text_IO का उपयोग करें;

प्रक्रिया यातायात है

प्रकार Airplane_ID श्रेणी 1..10 है; - 10 हवाई जहाज

कार्य प्रकार हवाई जहाज (आईडी: हवाई जहाज_आईडी); - प्रारंभिक पैरामीटर के रूप में आईडी के साथ हवाई जहाज का प्रतिनिधित्व करने वाला कार्य टाइप Airplane_Access एक्सेस एयरप्लेन है; - हवाई जहाज के लिए संदर्भ प्रकार

संरक्षित प्रकार रनवे है - साझा रनवे (समवर्ती पहुंच की अनुमति देने के लिए संरक्षित) प्रविष्टि असाइन_एयरक्राफ्ट (आईडी: एयरप्लेन_आईडी); - सभी प्रविष्टियां म्यूट की गारंटी हैंवास्तव में अनन्य प्रविष्टि Clear_Runway (आईडी: Airplane_ID); प्रविष्टि Wait_For_Clear; निजी साफ़: बूलियन: = सच; - संरक्षित निजी डेटा - आम तौर पर केवल एक ध्वज से अधिक ... अंत रनवे; प्रकार रनवे_एक्सेस सभी रनवे तक पहुंच है;

- हवाई यातायात नियंत्रक कार्य टेकऑफ़ और लैंडिंग के लिए अनुरोध लेता है कार्य प्रकार नियंत्रक (My_Runway: Runway_Access) है - सिंक्रोनस मैसेज पासिंग के लिए टास्क एंट्री प्रविष्टि अनुरोध_टेकऑफ़ (आईडी: हवाई जहाज_आईडी में; टेकऑफ़: रनवे_एक्सेस से बाहर); प्रवेश अनुरोध_पहुंच (आईडी: हवाई जहाज_आईडी में; दृष्टिकोण: बाहर रनवे_एक्सेस); अंत नियंत्रक;

- उदाहरणों का आवंटन रनवे 1: अलियास्ड रनवे; - एक रनवे का दृष्टांत नियंत्रक1: नियंत्रक (रनवे1'पहुंच); - और इसे प्रबंधित करने के लिए एक नियंत्रक

-- उपरोक्त प्रकार के कार्यान्वयन -- संरक्षित निकाय रनवे है प्रविष्टि असाइन_एयरक्राफ्ट (आईडी: हवाई जहाज_आईडी) जब क्लियर होता है -- एंट्री गार्ड - कॉलिंग टास्क तब तक ब्लॉक हो जाते हैं जब तक कि कंडीशन ट्रू न हो जाए शुरू करना स्पष्ट := झूठा; Put_Line (Airplane_ID'Image (ID) और रनवे पर); समाप्त;

प्रविष्टि Clear_Runway (आईडी: Airplane_ID) जब स्पष्ट नहीं है शुरू करना स्पष्ट := सत्य; Put_Line (Airplane_ID'Image (ID) और साफ़ रनवे); समाप्त;

प्रविष्टि Wait_For_Clear जब साफ़ है शुरू करना शून्य; -- यहाँ कुछ भी करने की आवश्यकता नहीं है - एक कार्य केवल तभी प्रवेश कर सकता है जब स्पष्ट सत्य हो समाप्त; अंत रनवे;

कार्य निकाय नियंत्रक है शुरू करना फंदा My_Runway.Wait_For_Clear; - रनवे उपलब्ध होने तक प्रतीक्षा करें (ब्लॉकिंग कॉल) चयन करें - दो प्रकार के अनुरोधों की प्रतीक्षा करें (जो भी पहले चलाने योग्य हो) जब Request_Approach'count = 0 => -- गार्ड स्टेटमेंट - केवल तभी स्वीकार करें जब Request_Approach पर कोई कार्य पंक्तिबद्ध न हो Request_Takeoff स्वीकार करें (ID: Airplane_ID में; Takeoff: out Runway_Access) करना - सिंक्रनाइज़ भाग की शुरुआत My_Runway.Assign_Aircraft (आईडी); - आरक्षित रनवे (संभावित रूप से ब्लॉकिंग कॉल अगर संरक्षित वस्तु व्यस्त या एंट्री गार्ड गलत है) टेकऑफ़: = My_Runway; - हवाई जहाज को कौन सा रनवे बताने के लिए पैरामीटर वैल्यू असाइन करें अंत अनुरोध_टेकऑफ़; - सिंक्रनाइज़ भाग का अंत या Request_Approach स्वीकार करें (ID: Airplane_ID में; Approach: Out Runway_Access) करें My_Runway.Assign_Aircraft (आईडी); दृष्टिकोण: = My_Runway; अंत अनुरोध_दृष्टिकोण; या - समाप्त करें यदि कोई कार्य नहीं बचा है जो कॉल कर सकता है समाप्त; अंत का चयन; अंत पाश; समाप्त;

टास्क बॉडी हवाई जहाज है रनवे: रनवे_एक्सेस; शुरू करना Controller1.Request_Takeoff (आईडी, Rwy); - यह कॉल तब तक ब्लॉक हो जाती है जब तक कि कंट्रोलर टास्क एक्सेप्ट ब्लॉक को स्वीकार और पूरा नहीं कर लेता Put_Line (Airplane_ID'Image (ID) और उड़ान भर रहा है...); देरी 2.0; Rwy.Cleared_Runway (आईडी); - कॉल ब्लॉक नहीं होगी क्योंकि Rwy में क्लियर अब गलत है और संरक्षित वस्तु के अंदर कोई अन्य कार्य नहीं होना चाहिए देरी 5.0; - थोड़ा इधर-उधर उड़ो ... फंदा चुनें - रनवे का अनुरोध करने का प्रयास करें Controller1.Request_Approach (आईडी, Rwy); - यह एक ब्लॉकिंग कॉल है - ब्लॉक को स्वीकार करने वाले कंट्रोलर पर चलेगा और पूरा होने पर वापस आ जाएगा बाहर निकलना; - अगर कॉल वापस आती है तो हम लैंडिंग के लिए तैयार हैं - ब्लॉक चुनें और आगे बढ़ें... या देरी 3.0; - टाइमआउट - यदि 3 सेकंड में कोई उत्तर नहीं मिलता है, तो कुछ और करें (निम्नलिखित ब्लॉक में सब कुछ) Put_Line (Airplane_ID'Image (ID) और होल्डिंग पैटर्न में); -- बस एक संदेश प्रिंट करें अंत का चयन; अंत पाश; देरी 4.0; - लैंडिंग अप्रोच करें ... Put_Line (Airplane_ID'Image (ID) और नीचे छुआ!); Rwy.Cleared_Runway (आईडी); -- नहींify रनवे कि हमने यहां काम पूरा कर लिया है। समाप्त;

न्यू_एयरप्लेन: एयरप्लेन_एक्सेस;

शुरू करना for I in Airplane_ID'रेंज लूप - कुछ हवाई जहाज कार्य बनाएं New_Airplane := नया हवाई जहाज (I); - निर्माण के बाद सीधे चलने लगेगा देरी 4.0; अंत पाश; अंत यातायात; 

प्रगमास
एक प्रागमा एक संकलक निर्देश है जो संकलित आउटपुट के विशिष्ट हेरफेर की अनुमति देने के लिए संकलक को जानकारी देता है। कुछ प्रगति भाषा में निर्मित हैं, जबकि अन्य कार्यान्वयन-विशिष्ट हैं।

कंपाइलर प्रागमा के सामान्य उपयोग के उदाहरण कुछ सुविधाओं को अक्षम करना होगा, जैसे रन-टाइम टाइप चेकिंग या सरणी सबस्क्रिप्ट सीमा जांच, या कंपाइलर को फ़ंक्शन कॉल के बजाय ऑब्जेक्ट कोड डालने का निर्देश देना (जैसा कि सी/सी ++ इनलाइन फ़ंक्शन के साथ करता है) ).

यह भी देखें

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

अंतर्राष्ट्रीय मानक

 * ISO 8652|ISO/IEC 8652: सूचना प्रौद्योगिकी—प्रोग्रामिंग भाषाएं—एडा
 * ISO 15291|ISO/IEC 15291: सूचना प्रौद्योगिकी—प्रोग्रामिंग भाषाएँ—Ada सिमेंटिक इंटरफ़ेस विशिष्टता (विकट:ASIS)
 * ISO 18009|ISO/IEC 18009: सूचना प्रौद्योगिकी—प्रोग्रामिंग भाषाएं—एडीए: एक भाषा संसाधक का अनुरूपता आकलन (विकट:एसीएटीएस)
 * IEEE 1003|IEEE मानक 1003.5b-1996, POSIX Ada बाइंडिंग
 * Ada Language Mapping विशिष्टता, CORBA इंटरफ़ेस विवरण भाषा (IDL) से एडा मैपिंग

औचित्य
इन दस्तावेजों को प्रिंट सहित विभिन्न रूपों में प्रकाशित किया गया है।
 * apps.dtic.mil, pdf भी उपलब्ध है

किताबें

 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।
 * 795 पृष्ठ।

अभिलेखागार

 * एडीए प्रोग्रामिंग भाषा सामग्री, 1981-1990। चार्ल्स बैबेज संस्थान, मिनेसोटा विश्वविद्यालय। Ada भाषा के लिए डिज़ाइन किए गए सॉफ़्टवेयर उत्पादों पर साहित्य शामिल है; Ada 9X प्रोजेक्ट रिपोर्ट, तकनीकी रिपोर्ट, वर्किंग पेपर, न्यूज़लेटर सहित अमेरिकी सरकार के प्रकाशन; और उपयोगकर्ता समूह की जानकारी।

बाहरी संबंध
<!--