प्रोग्रामिंग भाषा Ada

अवलोकन

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

ऐतिहासिक पहलू

निर्माण

एडा का निर्माण 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;

डेवलपर के उपकरण, रनटाइम, और IDEs

रनटाइम और संकलक

एडा को विभिन्न संकलकों का उपयोग करके संकलित किया जा सकता है, जिनमें GNAT सबसे अधिक उपयोग किया जाने वाला है। GNAT GNU Compiler Collection (GCC) का हिस्सा है और एडा कोड को संकलित करने के लिए एक मुफ्त और ओपन-सोर्स तरीका प्रदान करता है।

लोकप्रिय IDEs

एडा के लिए कई एकीकृत विकास वातावरण (IDEs) उपलब्ध हैं, जैसे GNAT स्टूडियो, एडाGIDE, और GPS (GNAT प्रोग्रामिंग स्टूडियो)। ये उपकरण सिंटैक्स हाइलाइटिंग, कोड पूर्णता, और डिबगिंग क्षमताओं जैसी सुविधाएँ प्रदान करते हैं।

एक परियोजना बनाना

GNAT का उपयोग करके एडा परियोजना बनाने के लिए, आमतौर पर एडा स्रोत कोड लिखा जाता है और फिर टर्मिनल में निम्नलिखित कमांड का उपयोग किया जाता है:

gnatmake my_program.adb

यह कमांड एडा स्रोत फ़ाइल को संकलित करता है और एक निष्पादन योग्य फ़ाइल उत्पन्न करता है।

एडा के अनुप्रयोग

एडा का उपयोग मुख्य रूप से सुरक्षा-क्रिटिकल प्रणालियों में किया जाता है, जिसमें शामिल हैं लेकिन सीमित नहीं हैं:

इसकी विश्वसनीयता और रखरखाव इसे इन क्षेत्रों में एक पसंदीदा विकल्प बनाती है।

अन्य भाषाओं के साथ तुलना

हालांकि एडा अन्य प्रोग्रामिंग भाषाओं के साथ कुछ समानताएँ साझा करती है, यह सुरक्षा और विश्वसनीयता पर जोर देने के लिए खड़ी होती है।

स्रोत से स्रोत अनुवाद टिप्स

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

स्रोत से स्रोत अनुवाद के लिए कुछ सामान्य उपकरणों में शामिल हैं: