एडा एक उच्च-स्तरीय, संरचित प्रोग्रामिंग भाषा है जिसे मुख्य रूप से सिस्टम प्रोग्रामिंग और वास्तविक समय के अनुप्रयोगों के लिए डिज़ाइन किया गया है। इसका नाम एडा लवलेस के नाम पर रखा गया है, जिन्हें अक्सर पहले कंप्यूटर प्रोग्रामरों में से एक माना जाता है। एडा को इसकी मजबूत टाइपिंग, मॉड्यूलरिटी, और समवर्ती प्रोग्रामिंग के समर्थन के लिए जाना जाता है, जिससे यह एयरोस्पेस, ऑटोमोटिव, और रक्षा जैसे उद्योगों में महत्वपूर्ण प्रणालियों के लिए उपयुक्त बनती है।
एडा का निर्माण 1970 के दशक के अंत में संयुक्त राज्य अमेरिका के रक्षा विभाग (DoD) द्वारा वित्त पोषित एक परियोजना के तहत किया गया था, जिसका उद्देश्य एम्बेडेड और वास्तविक समय की प्रणालियों के लिए एक मानकीकृत प्रोग्रामिंग भाषा की आवश्यकता को पूरा करना था। इस भाषा को जीन इचबियाह की अगुवाई में एक टीम द्वारा डिज़ाइन किया गया था और इसे 1983 में आधिकारिक रूप से जारी किया गया था। इसका एक प्रमुख उद्देश्य रक्षा प्रणालियों में उपयोग की जाने वाली प्रोग्रामिंग भाषाओं की विविधता को कम करना था, जिससे रखरखाव और विश्वसनीयता में सुधार हो सके।
एडा कई प्रोग्रामिंग भाषाओं से प्रेरणा लेती है, जिनमें पास्कल, C, और ALGOL शामिल हैं। इसकी डिज़ाइन में इन भाषाओं की विशेषताएँ शामिल हैं, जैसे मजबूत टाइपिंग और संरचित प्रोग्रामिंग। एडा का विकास C द्वारा उत्पन्न चुनौतियों का भी जवाब था, विशेष रूप से प्रकार सुरक्षा और सिस्टम-स्तरीय प्रोग्रामिंग समर्थन के संदर्भ में।
अपने निर्माण के बाद से, एडा कई संशोधनों से गुज़री है, जिसमें एडा 83 के बाद एडा 95, एडा 2005, और नवीनतम मानक, एडा 2012 शामिल हैं। इन संशोधनों ने नए फीचर्स पेश किए, जैसे ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग और वास्तविक समय की प्रणालियों के लिए बेहतर समर्थन। आज, एडा को एडा रिसोर्स एसोसिएशन द्वारा बनाए रखा जाता है और इसे विशेष रूप से उन महत्वपूर्ण प्रणालियों में उपयोग किया जाता है जहाँ सुरक्षा और विश्वसनीयता सर्वोपरि हैं।
एडा सख्त प्रकार की जांच को लागू करती है, जो संकलन समय पर त्रुटियों को पकड़ने में मदद करती है, न कि रनटाइम पर।
type Integer_Type is range 0 .. 100;
variable Count : Integer_Type;
Count := 50; -- यह मान्य है
Count := 150; -- यह संकलन समय की त्रुटि का कारण बनेगा
यह भाषा पैकेजों के उपयोग के माध्यम से मॉड्यूलर प्रोग्रामिंग का समर्थन करती है, जो संबंधित प्रकारों, डेटा, और प्रक्रियाओं को संलग्न करती है।
package Geometry is
type Point is record
X : Float;
Y : Float;
end record;
procedure Move(Point : in out Point; DeltaX, DeltaY : Float);
end Geometry;
एडा में कार्यों के माध्यम से समवर्ती प्रोग्रामिंग के लिए अंतर्निहित समर्थन है, जो एक साथ कई प्रक्रियाओं के निष्पादन की अनुमति देता है।
task My_Task is
begin
-- कार्य कोड
end My_Task;
एडा मजबूत अपवाद प्रबंधन तंत्र प्रदान करती है, जिससे डेवलपर्स रन-टाइम त्रुटियों को सुचारू रूप से प्रबंधित कर सकते हैं।
begin
-- कोड जो अपवाद उत्पन्न कर सकता है
exception
when Constraint_Error =>
-- त्रुटि को संभालें
end;
एडा ऑब्जेक्ट-ओरिएंटेड प्रोग्रामिंग का समर्थन करती है, जिसमें विरासत और बहुरूपता जैसी विशेषताएँ शामिल हैं।
type Vehicle is tagged null record;
type Car is new Vehicle with record
Doors : Integer;
end record;
procedure Display(V : Vehicle) is
begin
-- वाहन की जानकारी प्रदर्शित करने के लिए कोड
end Display;
जनरिक डेवलपर्स को पैरामीटरयुक्त प्रकारों और उपप्रोग्रामों को परिभाषित करके लचीला और पुन: प्रयोज्य कोड लिखने की अनुमति देते हैं।
generic
type Item_Type is private;
package Container is
procedure Add(Item : Item_Type);
end Container;
एडा अनुक्रमण प्रकारों का समर्थन करती है, जो एक प्रकार को नामित मानों के सेट के साथ परिभाषित करती है।
type Color is (Red, Green, Blue);
नियंत्रित प्रकार वस्तुओं के निर्माण और विनाश पर बारीक नियंत्रण की अनुमति देते हैं।
type My_Controlled_Type is new Ada.Finalization.Controlled with record
Value : Integer;
end record;
एडा विशेषताएँ प्रदान करती है जिन्हें प्रकारों या वस्तुओं के बारे में जानकारी प्राप्त करने के लिए उपयोग किया जा सकता है।
X : Integer := 10;
Size : Natural := X'Size; -- एक पूर्णांक का आकार प्राप्त करना
एडा डेटा भंडारण और आवंटन पर स्पष्ट नियंत्रण के माध्यम से मेमोरी प्रबंधन के सिद्धांत पर जोर देती है।
declare
type Record_Type is record
A : Integer;
B : Float;
end record;
My_Record : Record_Type;
end;
एडा को विभिन्न संकलकों का उपयोग करके संकलित किया जा सकता है, जिनमें GNAT सबसे अधिक उपयोग किया जाने वाला है। GNAT GNU Compiler Collection (GCC) का हिस्सा है और एडा कोड को संकलित करने के लिए एक मुफ्त और ओपन-सोर्स तरीका प्रदान करता है।
एडा के लिए कई एकीकृत विकास वातावरण (IDEs) उपलब्ध हैं, जैसे GNAT स्टूडियो, एडाGIDE, और GPS (GNAT प्रोग्रामिंग स्टूडियो)। ये उपकरण सिंटैक्स हाइलाइटिंग, कोड पूर्णता, और डिबगिंग क्षमताओं जैसी सुविधाएँ प्रदान करते हैं।
GNAT का उपयोग करके एडा परियोजना बनाने के लिए, आमतौर पर एडा स्रोत कोड लिखा जाता है और फिर टर्मिनल में निम्नलिखित कमांड का उपयोग किया जाता है:
gnatmake my_program.adb
यह कमांड एडा स्रोत फ़ाइल को संकलित करता है और एक निष्पादन योग्य फ़ाइल उत्पन्न करता है।
एडा का उपयोग मुख्य रूप से सुरक्षा-क्रिटिकल प्रणालियों में किया जाता है, जिसमें शामिल हैं लेकिन सीमित नहीं हैं:
इसकी विश्वसनीयता और रखरखाव इसे इन क्षेत्रों में एक पसंदीदा विकल्प बनाती है।
हालांकि एडा अन्य प्रोग्रामिंग भाषाओं के साथ कुछ समानताएँ साझा करती है, यह सुरक्षा और विश्वसनीयता पर जोर देने के लिए खड़ी होती है।
स्रोत से स्रोत अनुवाद करते समय, कुछ विशिष्ट उपकरण होते हैं जो एडा कोड को अन्य प्रोग्रामिंग भाषाओं में परिवर्तित करने में मदद कर सकते हैं। उदाहरण के लिए, Gnat2Go जैसे उपकरणों का उपयोग एडा कोड को गो में अनुवादित करने के लिए किया जा सकता है। हालाँकि, अनुवाद प्रक्रिया के दौरान मूल एडा कोड की कार्यक्षमता और सुरक्षा सुविधाओं को बनाए रखने के लिए सावधानी बरतनी चाहिए।
स्रोत से स्रोत अनुवाद के लिए कुछ सामान्य उपकरणों में शामिल हैं: