قائمة طعام
مجاني
التسجيل
الصفحة الرئيسية  /  تشغيل/ عيد ميلاد لغة البرمجة الجحيم. تريد أن تعرف كل شيء

عيد ميلاد الجحيم لغة البرمجة. تريد أن تعرف كل شيء

سيرجي بوبروفسكي

لم يبدأ تاريخ هذه اللغة في عام 1975 ، عندما قررت وزارة الدفاع الأمريكية (MoD) البدء في تطوير لغة برمجة واحدة للقوات المسلحة الأمريكية ، ولاحقًا لحلف الناتو بأكمله. يبدأ تاريخها بالاسم ، فأدا هو اسم أوغستا آدا لوفليس ، التي تعتبر أول مبرمجة ، وهي ابنة الشاعر الإنجليزي بايرون ، وأنابيلا ميلبانك ، التي انفصل عنها زوجها إلى الأبد بعد شهر من ولادتها. الابنة التي ولدت في 10 ديسمبر 1815. بشكل عام ، يكتنف تاريخ علم التحكم الآلي لغز غامض ، ولا يمكن للمرء أن يحكم على مؤسسي هذا العلم في المائتي عام الماضية إلا من خلال الحقائق المجزأة ، وكانوا متصوفين وعلماء تنجيم مختلفين ، بدءًا من Augustus de Morgan ، واحد من معلمي آدا ، وانتهاءً بزملاء نوربرت وينر الذين درسوا أساليب تكوين الرأي العام والتلاعب به.

بعد أن أنشأ تشارلز باباج آلة الحساب الميكانيكية الخاصة به ، كتبت آدا أول برنامج لها لحساب معاملات برنولي. في المستقبل ، طورت نظرية حقيقية للبرمجة ، وقدمت مفهوم الدورة وبعض المصطلحات الأساسية الأخرى التي يدرسها طلاب كليات علم الإنترنت بشكل حرفي تقريبًا اليوم! اليوم ، Ada معروف للجميع كأول مبرمج - ولا شيء أكثر من ذلك ، لكني أتساءل لماذا تتمتع الفتاة الصغيرة بهذه القدرات الفريدة؟ أجابت هي نفسها على هذا السؤال بصراحة: "أقسم بالشيطان أنه في غضون 10 سنوات سأمتص قدرًا معينًا من الدم الحيوي من ألغاز الكون ، وبطريقة لا يمكن للعقول البشرية العادية والشفاه أن تفعلها. طاقة مرعبة و لا تزال القوة غير مستخدمة في كوني الصغير المرن ... ". ومع ذلك ، لم يكن هناك رعاة لمشروع الكمبيوتر - لم تكن هناك صواريخ نووية حتى الآن ، وبعد أن فقدت آدا كل ثروتها في السباقات ودخلت في قصة قذرة ، ماتت عن عمر يناهز 37 عامًا ، مثل والدها الشهير.

لذلك ، ما إذا كان على الأمريكيين أن يمدحوا آدا كثيرًا ، باستخدام اسمها كاسم لمثل هذا المشروع الطموح ، هو سؤال مثير للجدل للغاية.

لكن العودة إلى تاريخ اللغة نفسها. بعد خمس سنوات من بدء المشروع ، اختار مئات الخبراء من 17 خيارًا اللغة الوحيدة التي تلبي متطلبات MO ، والتي طورتها مجموعة صغيرة بقيادة العالم الموهوب جان إيشبيا. تم نشر النسخة النهائية من المواصفة القياسية الدولية ISO 8652: 1987 في عام 1987. وبحسب التقارير الرسمية ، فإن جميع أفضل المتخصصين في العالم في مجال البرمجة شاركوا في إنشاء هذه اللغة وصقلها ، الأمر الذي يثير الشكوك. هذا ، على سبيل المثال ، يتم تأكيده من خلال عدم وجود مفهوم كائن في النسخة الأصلية من Ada وعدم المشاركة ، لأسباب واضحة ، في هذا المشروع من قبل المبرمجين السوفييت.

تم استثمار عشرات المليارات من الدولارات في تطوير البنية التحتية لأدا في جميع أنحاء العالم. أدى ذلك إلى ظهور عبارات طموحة مثل "القرن العشرين سيمر تحت علامة آدا" ، إلا أن الحياة ، كالعادة ، وضعت كل شيء في مكانه.

لسوء حظ وزارة الدفاع الأمريكية (وبالتالي ، لحسن حظ "الخصوم المحتملين" لأمريكا) ، تم الانتهاء من تطوير معيار واضح لهذه اللغة وإنشاء مترجمين فعالين في ذلك الوقت (أوائل الثمانينيات) ، عندما كانت الصناعة تلوح في الأفق بالفعل ، لغة C ++ جديدة مع أيديولوجية الكائن. من الصعب الآن تحديد ما شعرت به لجنة التطوير في Ada ، حيث ترى الشعبية المتزايدة لـ C ++ ونموذج التفكير القديم ، المنسي جيدًا ، القائم على الكائن. لكن الأموال المخصصة قد تم إنفاقها بالفعل ، وتم إنشاء المعيار ، ولم يكن هناك طريق للعودة.

هيكل Ada يشبه إلى حد بعيد باسكال ، أو بشكل أكثر دقة ، مع Modula. إن بناء الجملة لمعظم العبارات والأوصاف متطابق تقريبًا مع صيغة Modula ، على الرغم من ظهورها في نفس الوقت تقريبًا مثل Ada ، ومن الصعب تحديد من أثر على من أو إذا كان على الإطلاق. في Ada ، على وجه الخصوص ، تم إضافة الكثير من الامتدادات المختلفة ، لذلك لا يمكن تسمية هذه اللغة مضغوطة ، مقارنةً بنفس لغة باسكال. من حيث عدد الاحتمالات ، فمن المرجح أن تشبه PL / 1. ولكن نظرًا لأن التركيز الأساسي لمنشئي Ada كان على تلبية رغبات "الأقسام الأولى" الأمريكية ، فقد كانت وسائل خصوصية البيانات (الرؤية) والقدرة على إنشاء كتل منفصلة باستخدام المواصفات فقط (أوصاف واجهة الوحدات النمطية) من المطورين الآخرين. الأكثر مثالية لوقتهم. على سبيل المثال ، لم يكن لدى المبرمج الذي كتب بالفعل الكود لحساب مسار صاروخ كروز أي فكرة عن مكان ولأي أغراض سيتم استخدام وحدته ، على الرغم من أنه كان لديه إمكانية الوصول إلى المواصفات المطلوبة للموظفين الآخرين ويمكنه تصحيح قسم الكود الخاص به بدون اي مشاكل. بسبب التحديد الصارم للوصول إلى مراحل مختلفةالمواصفات ، في بعض الأحيان يكون من المستحيل تحديد ما وبأي وسيلة سيتم استدعاء هذا الإجراء. ومع ذلك ، أدت هذه الرغبة في تطوير برمجيات مستقلة إلى نظام معقد للغاية من العلاقات المتبادلة بين مواصفات الوحدة وظهور بعض "الثغرات" التي يمكن أن تسبب آثارًا جانبية ، والتي اعتبر وجودها ، مع ذلك ، وزارة الدفاع الأمريكية مفيدًا.

تم تعزيز عناصر كتابة البيانات بشكل كبير ، وكذلك أصبحت الأنواع نفسها أكثر رسمية. تمت إزالة جميع وظائف الإدخال / الإخراج من بناء الجملة القياسي ، وأصبحت معالجة الاستثناءات جزءًا لا يتجزأ من اللغة. بالإضافة إلى ذلك ، تم دفع قوة بنيات التحكم إلى أقصى حد ، مما جعل Adu الأكثر تقدمًا من بين اللغات الأخرى الشبيهة بـ Pascal.

سرعان ما أصدرت بورلاند برنامج Turbo Pascal ، حيث تم بناء مفهوم الوحدة ، وجعل نسختها من Pascal أقرب إلى Ada من حيث القدرات ، ولكن في المستقبل ، تحاول إنشاء لغات برمجة غير كائنية من الجيل الثالث تهدف إلى تطوير المشاريع الكبيرة جدا ، لحسن الحظ ، لم يتم صنعها. لذلك وضع Ada حدًا لسلسلة طويلة من اللغات الإجرائية البسيطة ، بدءًا من Fortran و Algol. في الواقع ، كل ما يمكن التفكير فيه في إطار أيديولوجية البرمجة المنظمة تم تجسيده في الجحيم. ثم ازدهرت برمجة الكائنات ، وتلاشت Ada في الخلفية.

ومع ذلك ، لا تزال هذه اللغة تحتل مكانة واحدة لا مثيل لها حتى الآن. بالإضافة إلى التجميع المنفصل للوحدات النمطية وضمان السرية الهرمية للمواصفات ، فقد طبقت هذه اللغة خاصية مثل دعم البرمجة المتوازية. تم أخذها على مستوى عالٍ إلى حد ما في Algol-68 ، ثم تم تطويرها في Module-2 ، وتم تجسيدها في أدوات Ada القوية للغاية ، وهي ما يسمى بالمهام التي يمكن إجراؤها بشكل مستقل عن بعضها البعض على أجهزة كمبيوتر متوازية. أدى ذلك إلى ولادة أيديولوجية برمجة كاملة تعتمد على المهام التي يمكن إجراؤها "بالتوازي الزائف" - على جهاز كمبيوتر بمعالج واحد. في هذه الحالة ، تم تقسيم المشكلة التي يتم حلها بنفسها إلى مجموعة من إجراءات التشغيل في وقت واحد ، والتفاعل بشكل مستقل مع بعضها البعض. لقد كانت تشبه إلى حد ما طريقة لحل مشكلة في Prolog: يتم وصف عالم افتراضي معين ببساطة ، وبعد ذلك ، "تم إطلاقه" ، كما كان ، ويتم العثور على الحل من تلقاء نفسه.

الأمر الأكثر إثارة للدهشة هو أن وزارة الدفاع الأمريكية ، لسبب أو لآخر ، تخلت عن أيديولوجية الكائن ، التي تجسدت تمامًا في

الستينيات في Simul-67 ، وربما ندم عليها أكثر من مرة. صحيح ، في لغة Ada ، تم تقديم بديل مثير للشفقة لعدد من الفرص التي توفرها البرمجة الموجهة للكائنات - ما يسمى بالقوالب ، أي الإجراءات ذات المعلمات من الأنواع غير المحددة. لكن على الرغم من ذلك ، فإن المزايا الرئيسية لـ Ada ، والتي تسمح لها اليوم بمقاومة هجوم اللغات الأكثر تطورًا ، كانت ، بالإضافة إلى التمويل القوي ، دعمًا داخليًا للتنفيذ المتوازي للمهام ووسائل قوية لتنسيق تفاعلهم. وتجدر الإشارة إلى أن التوجه الرئيسي لـ Ada ليس على الإطلاق أنظمة أتمتة المحاسبة في وزارة الدفاع الأمريكية ، ولكن المهام القتالية البحتة ، على سبيل المثال ، مثل التنقل في الوقت الحقيقي القائم على المعالجات الدقيقة لصاروخ موجه ، حيث يكون مطلوبًا في وقت واحد معالجة المعلومات الواردة باستمرار من مجموعة متنوعة من أجهزة الاستشعار. ... في السابق ، كانت تتم كتابة هذه المهام في المجمع ، مما أدى إلى العديد من الأخطاء والصعوبات في الصيانة. بالنسبة لمثل هذه المهام ، فإن Ada ، بالطبع ، مناسبة تمامًا.

ومع ذلك ، لا يزال Ada يتم وضعه كأداة جيدة لتطوير كبير أنظمة البرمجيات... صحيح ، الآن الأصوات الداعمة لهذه اللغة تبدو أكثر هدوءًا ، شيء من هذا القبيل: "Ada ، على الأقل ليس أسوأ من C." قامت وزارة الدفاع الأمريكية ، مع الأخذ في الاعتبار خطأها الرئيسي - نقص الأشياء ، وفقًا للمتطلبات الحديثة لتكنولوجيا تطوير البرامج ، بتطوير معيار لغة جديد ISO / IEC 8652: 1985 (E). يصف إصدار لغة Ada95 (أو Ada9X). الشيء الأكثر إثارة للاهتمام هو أن هذا الإصدار هو أول نظام برمجة كائني التوجه في العالم ، والذي تم تقديم المعيار الدولي عليه ، على ما يبدو بالترتيب (مع C ++ ، هذا غير ممكن بعد). بالإضافة إلى ذلك ، قامت اللغة بتحسين نظام تنسيق رؤية البيانات في مواصفات الوحدات وإضافة أدوات لتحسين كفاءة المهام المتوازية.

تشعر وزارة الدفاع الأمريكية بالغيرة من بنات أفكارها العزيزة ، بل إنها سجلت كلمة "آدا" كعلامة تجارية لها. ومع ذلك ، وبدلاً من العلامة التجارية ، قررت وزارة الدفاع استخدام "Ada" كعلامة داخلية معتمدة لها. وزارة الدفاع الأمريكية ليست سعيدة بشكل خاص بظهور الإصدارات التجارية من هذه اللغة. بالطبع ، لا يحق لأحد أن يمنعك من كتابة المترجم الخاص بك ، ولكن لكي تحصل على اعتراف تجاري ، يجب أن تمتثل للمعايير العسكرية ، ويتم إجراء الاختبار فقط من قبل لجنة AJPO بوزارة الولايات المتحدة الأمريكية. الدفاع ، الذي يتحقق بدقة شديدة من امتثال المترجم للعديد من المتطلبات ، بما في ذلك ، بشكل واضح ، وشروط سياسية بحتة.

ومع ذلك ، يمكن الحصول على إصدارات مختلفة من Ada ، كما هو الحال عادةً مع لغات البرمجة ، مجانًا ، أي بدون مقابل ، ليس فقط بطريقة مقرصنة ، ولكن ببساطة إصدارات مجانية ، وبالطبع مقابل المال.

من بين الإصدارات المجانية ، فإن أول ما يجب تسليط الضوء عليه هو مترجم GNAT - GNU Ada95. إنه متاح في كود المصدر من مشروع جنو (برنامج مجاني قابل لإعادة التوزيع). يمكن أن يعمل أيضًا على جهاز كمبيوتر بمعالج واحد ، فقط من الضروري أن يدعم نظام التشغيل تعدد المهام. قد يكون هذا ، على سبيل المثال ، بعض إصدارات UNIX أو OS / 2. بالنسبة لـ MS DOS - خمن نفسك. ومع ذلك ، إذا كنت تريد حقًا تشغيل مائة أو اثنتين من العمليات المتوازية على جهاز الكمبيوتر الشخصي الخاص بك بموجب MS DOS 6.x ، فمن الممكن تمامًا تجربة Ada / Ed - المترجم والمترجم لإصدار 1987 من اللغة ، والذي ، ومع ذلك ، فهو غير متوافق تمامًا مع المعيار ويفتقر إلى عدد من العناصر الأساسية ...

إذا كان لديك المال ، فسيكون الوضع أسهل بالطبع. ضمن الراتب الشهري لمبرمج روسي متوسط ​​، يمكنك شراء ، على سبيل المثال ، FirstAda وكتابة نظام التحكم في الثلاجة. أنظمة أكثر تكلفة لنظام التشغيل Windows أو OS / 2 أو UNIX ، معتمدة من وزارة الدفاع الأمريكية ، يمكنك محاولة الشراء مباشرة من شركات التطوير ، التي يوجد منها حوالي اثنتي عشرة.

من المثير للاهتمام أن اللغة نفسها لم تخضع فقط للتوحيد القياسي ، مما جعل من الممكن إنشاء برامج محمولة بسهولة ، ولكن أيضًا مجموعة من أدوات المساعدة للمطورين - مكتبات I / O المختلفة ومؤسسات الواجهة الرسومية ، والمعالجات المسبقة ، والمحققين ، ومولدات الأكواد ، ومحللي الهيكل المنطقي للشفرة المصدرية ، برامج اختبار المجمعين ، إلخ. بالطبع ، هناك حزم كبيرة تشمل جميع أدوات التطوير الموحدة ، لكنها تبدو باهظة الثمن.

سيكون من المثير للاهتمام معرفة ما إذا كان الاتحاد السوفياتي يعمل على لغات مصممة لحل مشاكل عسكرية مماثلة. أو هل كتب المتخصصون لدينا في المجمع فقط؟

ملخص عن الموضوع:

آدا



يخطط:

    مقدمة
  • 1 سمات اللغة
  • 2 "مرحبا العالم!" في الجحيم
  • 3 التاريخ
  • 4 الجحيم في الاتحاد السوفياتي وروسيا
  • 5 النقد
  • 6 التوزيع ، وجهات النظر
  • 7 أنظمة التشغيل مكتوبة في Ada
  • 8 جامعي الجحيم
  • 9 اللغات المشتقة
  • 10 حقائق مثيرة للاهتمام
  • ملاحظاتتصحيح
    المؤلفات

مقدمة

جحيم (آدا) هي لغة برمجة تم إنشاؤها في 1979-1980 نتيجة لمشروع نفذته وزارة الدفاع الأمريكية بهدف تطوير لغة برمجة موحدة للأنظمة المدمجة (أي أنظمة التحكم للمجمعات الآلية التي تعمل في الوقت الفعلي). كانوا يقصدون ، أولاً وقبل كل شيء ، أنظمة التحكم على متن الطائرة للأغراض العسكرية (السفن ، الطائرات ، الدبابات ، الصواريخ ، القذائف ، إلخ). لم يواجه المطورون مهمة إنشاء لغة عالمية ، لذلك يجب النظر إلى القرارات التي يتخذها مؤلفو Ada في سياق خصوصيات مجال الموضوع المختار. تمت تسمية اللغة باسم Ada Lovelace.


1. ميزات اللغة

في نسختها الأصلية ، الموحدة في 1983 ، Ada هي لغة برمجة معيارية منظمة تحتوي على أدوات برمجة عالية المستوى للعمليات المتوازية. تم توريث بناء جملة Ada من لغات مثل Algol أو Pascal ، ولكنه ممتد ، كما أنه أصبح أكثر صرامة ومنطقية. Ada هي لغة مكتوبة بقوة ، فهي تستبعد العمل مع الكائنات التي ليس لها أنواع ، ويتم تقليل تحويلات الكتابة التلقائية إلى الحد الأدنى المطلق. في معيار 1995 ، تمت إضافة الوسائل الأساسية للبرمجة الموجهة للكائنات إلى اللغة ، في معيار 2007 ، تم استكمال هذه الوسائل ، لذا فإن Ada الحديثة هي لغة برمجة موجهة للكائنات.

من ميزات بناء الجملة يمكن ملاحظتها:

  • اللغة غير حساسة لحالة الأحرف.
  • البرامج معيارية ، وتشتمل آلية التحكم في استيراد وتصدير الأوصاف بين الوحدات على توجيهين مختلفين: أحدهما لتوصيل وحدة أخرى (مع) ، والآخر لاستيراد أوصافها (الاستخدام). من الممكن أيضًا إعادة تسمية الوحدة عند الاستيراد (إعادة التسمية) - يتيح لك هذا الخيار استخدام معرّفات أكثر ملاءمة لتعيين الحزمة.
  • يمكن أن تحتوي الحزم (أحد أنواع الوحدات النمطية) على رأس وجزء شخصي - ما يحتويه لا يتم تصديره ولا يتوفر للوحدات النمطية الأخرى.
  • يتم دعم آلية الوحدات النمطية (القابلة للتخصيص): الحزم والإجراءات والوظائف التي تسمح بوصف خوارزميات معالجة البيانات المعممة دون تحديد نوع معين.
  • نظام متطور للأنواع ، مدمج ومولّد بواسطة المبرمج. هناك طرق عديدة لإنشاء أنواع جديدة ، تدعم اللغة مفهومين مختلفين: "النوع الفرعي" و "النوع المشتق". متغيرات النوع والنوع الفرعي متوافقة ، ومتغيرات النوع والنوع المشتق غير متوافقة.
  • مرافق معالجة الاستثناءات.
  • الوسائل المتقدمة للإشارة إلى الإجراءات والوظائف: يتم دعم معلمات الإدخال والإخراج ، ونقل المعلمات الفعلية بترتيب تعسفي مع الإشارة إلى الأسماء الرسمية ، والمعلمات ذات القيم الافتراضية.
  • يتم دعم تجاوز الإجراءات والوظائف وعوامل التشغيل - إنشاء العديد من المتغيرات لإجراء أو وظيفة أو عامل يحمل نفس الاسم ، ولكن توقيعات مختلفة (أنواع وعدد المعلمات).
  • الإنشاءات المضمنة في اللغة لدعم البرمجة المتوازية: يتم دعم مفاهيم "المهمة" (جزء من البرنامج يتم تنفيذه بالتوازي) ، "إدخال المهمة" (وسيلة للتزامن والاتصال لمهام التشغيل المتوازية) ؛) ، هناك تحديد المشغل لتنظيم التفاعل المشروط بين الخيوط (اختيار مهمة موازية للتفاعل معها ، اعتمادًا على الاستعداد للالتقاء وبعض الشروط الأخرى). من حيث المبدأ ، تعد أدوات البرمجة المتوازية المتوفرة في اللغة كافية لحل فئة كبيرة من المهام التي تتطلب معالجة متوازية ، دون اللجوء إلى أدوات خارجية ، مثل المكتبات الإضافية أو واجهات برمجة تطبيقات نظام التشغيل.

لتلبية متطلبات الموثوقية ، تم بناء اللغة بطريقة يتم فيها اكتشاف أكبر عدد ممكن من الأخطاء في مرحلة التجميع. بالإضافة إلى ذلك ، كان أحد المتطلبات في تطوير اللغة هو سهولة القراءة القصوى لنصوص البرنامج ، حتى على حساب سهولة الكتابة. كانت نتيجة هذا النهج عبارة عن بناء جملة "ثقيل الوزن" إلى حد ما والعديد من القيود التي لا توجد في اللغات الصناعية الأكثر شيوعًا (C و C ++) وغالبًا ما ينظر إليها المبرمجون المحترفون على أنها زائدة عن الحاجة ، على سبيل المثال ، نفس الكتابة القوية . أدى ذلك إلى تشكيل فكرة Ada كلغة معقدة وغامضة وغير ملائمة للاستخدام.


2. "أهلاً بالعالم!" في الجحيم

عدة أشكال مختلفة من عبارة "Hello، world!" يمكن رؤيتها في ويكي الكتب. تعود الاختلافات إلى الحاجة إلى استخدام وظيفة مكتبة Put_Line - هناك ثلاث طرق مختلفة لتنظيم هذا الاستخدام بهذه اللغة.

مع Ada.Text_IO ؛ إجراء مرحبًا هو استخدام Ada.Text_IO ؛ ابدأ Put_Line ("Hello، world!")؛ نهاية مرحبا؛

هنا ، لاستخدام وظيفة Put_Line ، يتم استيراد حزمة Ada.Text_IO التي تحتوي عليها باستخدام بنية use ، مما يجعل من الممكن استدعاء الوظيفة بالاسم دون مؤهل - تحديد اسم الحزمة التي تحتوي على الوظيفة في الاستدعاء.


3. التاريخ

تم تطوير اللغة كجزء من مسابقة دولية نظمتها وتمولها وزارة الدفاع الأمريكية. كان الهدف من التطوير هو الحصول على لغة برمجة يمكن أن تصبح لغة واحدة لتطوير المشاريع التي طلبتها الإدارة العسكرية ، بشكل أساسي لتطوير الأنظمة المدمجة للأغراض العسكرية ولأجهزة الكمبيوتر العسكرية الكبيرة (استنادًا إلى معالج iAPX 432 من إنتل). بدأ العمل في عام 1975 ، بتشكيل مجموعة من المتطلبات للغة ، والتي من شأنها إرضاء مطوري الأنظمة من هذا النوع بشكل كامل. تم تقديم القائمة الأولية للمتطلبات ، الصادرة تحت الاسم الرمزي "سترو" ، للمراجعة إلى عدد من المنظمات والشركات ، وتم تنقيحها باستمرار على مدار عامين ، وتحولت في النهاية إلى وثيقة نهائية تسمى "الصلب".

بعد الانتهاء من تشكيل المتطلبات ، تم إجراء تحليل أظهر أن أيا من لغات البرمجة المتاحة لا تفي بالمتطلبات بشكل كاف ، لذلك تقرر تطوير لغة جديدة. تم الإعلان عن مسابقة لإنشائها في عام 1977 ، وطُلب من المطورين أن يعتمدوا على لغة واحدة من ثلاث لغات: Pascal أو Algol-68 أو PL / 1.

من بين 15 مشروعًا تم تقديمها للمسابقة ، تم اختيار 4 (جميعها تعتمد على باسكال). تم إرسال هذه المشاريع لمزيد من المراجعة. في المرحلة التالية ، تم اختيار مشروعين من أصل 4 ، تم اختيار مشروع واحد بعد المراجعة التالية. سميت هذه اللغة "أدا" - المجموعة التي طورتها تحت قيادة الفرنسي جان إشبيا أعطت اللغة اسمًا تكريماً لأوغوستا آدا الملك لوفليس (1815-1852) ، ابنة الشاعر ج. برامج كمبيوتر باباج ويعتبر أول مبرمج في العالم.

في عام 1983 ، تم توحيد اللغة رسميًا من قبل ANSI. تمت الموافقة على معيار اللغة ANSI / MIL-STD-1815-A-1983 في 17 فبراير 1983. سجلت وزارة الدفاع الأمريكية اسم "Ada" كعلامة تجارية مسجلة ، مما يحظر الإفراج عن المترجمين للغة التي لم تجتاز اختبار الامتثال الرسمي. يتكون الإجراء من تشغيل عدد كبير (أكثر من 1000) من برامج الاختبار (ما يسمى بمجموعة ACVC) من خلال المترجم الذي يتم اختباره ، حيث تم تحديد نتيجة الاختبار بشكل فريد: إما تجميع ناجح أو خطأ محدد للغاية رسالة. تم إجراء الاختبار وفقًا لمبدأ "كل شيء أو لا شيء" - إذا تمت معالجة حالة اختبار واحدة على الأقل ، فسيتم اعتبار المترجم قد فشل في الاختبار ، وكان الاختبار صالحًا فقط على النظام الأساسي للأجهزة والبرامج التي تم تنفيذه عليها . وهكذا ، تم قمع إمكانية تكوين "نسخ" أو "لهجات" من لغة الجحيم في مهدها.

في عام 1987 ، تم توحيد لغة Ada رسميًا بواسطة ISO. منذ تلك اللحظة ، أتاحت وزارة الدفاع الأمريكية اللغة للجمهور.

بحلول عام 1990 ، كان هناك حوالي 200 مترجم في العالم تتوافق مع معيار لغة Ada.

في عام 1995 ، تم اعتماد معيار Ada الجديد ، المعروف باسم Ada95. تم إدخال الوسائل في اللغة برمجة الكائن... بالإضافة إلى ذلك ، تم استكمال اللغة بوسائل أكثر تقدمًا للتفاعل مع البرامج المكتوبة بلغات أخرى.

في مارس 2007 ، تم نشر التغييرات على معيار Ada. لقد تطرقوا بشكل أساسي إلى إمكانيات البرمجة الموجهة للكائنات: تم تقديم الواجهات ، وتم اعتماد بناء جملة أسلوب استدعاء ، وهو أمر شائع في معظم اللغات الهجينة ، وتم إجراء عدد من الإضافات.


4. الجحيم في الاتحاد السوفياتي وروسيا

في اتحاد الجمهوريات الاشتراكية السوفياتية ، في الثمانينيات ، تم تنظيم مجموعة عمل حول لغة الجحيم تحت إشراف لجنة الدولة للعلوم والتكنولوجيا. انخرطت المجموعة في دراسة جميع البيانات المفتوحة (والتي يُشاع أيضًا أنه تم الحصول عليها عن طريق المخابرات المغلقة) حول لغة Ada وحققت في إمكانية وجدوى تطوير واستخدام Ada في الاتحاد السوفيتي. قادت أنشطة هذه المجموعة بحلول نهاية الثمانينيات إلى تطوير برامج التحويل البرمجي Ada لجميع أجهزة الكمبيوتر المستخدمة في الاتحاد السوفيتي. صدرت عدة كتب عن لغة الجحيم باللغة الروسية.

في جامعة موسكو الحكومية ، تم تنفيذ العمل لإنشاء حزم الاختبار الخاصة بها لمترجمي Ada للامتثال للمعايير. في LSU ، لإنشاء نظام Ada ، تم استخدام نظام Pallada ، الذي تم تطويره مسبقًا لتنفيذ Algol-68 ، والذي تم نقله إلى Ada. يحتوي النظام على بيئة تطوير متكاملة ، ومترجم ، ومحرر نصوص ، ومصحح أخطاء ، ومكتبات ، ونظام تحكم في الإصدار ، ومترجم أوامر.

بعد انهيار الاتحاد السوفياتي ، توقف العمل على انتشار آدا عمليا. صحيح ، تم تبني ثلاثة برامج لتطوير البرمجيات في آدا (في وزارة الدفاع ، ووزارة الطيران المدني ، ووزارة التعليم والعلوم) ، لكن تطويرها يجري ببطء وغير منسق. نتيجة لذلك ، فإن لغة Ada غير معروفة في روسيا ؛ معظم المبرمجين الروس المعاصرين يعتبرونها "لغة ميتة" ولا يعرفون شيئًا عنها. يستخدم Ada في روسيا ورابطة الدول المستقلة من قبل المتحمسين الأفراد. ومع ذلك ، يتم استخدام اللغة لتطوير البرمجيات الصناعية. هناك العديد من المشاريع المعروفة التي تم تطويرها في آدا وتعمل في روسيا. بينهم:

  • محطة الاتصال الوثائقي لوزارة الدفاع الروسية. المهمة الرئيسية هي ضمان تبادل المعلومات الوثائقية في شبكات نقل البيانات التابعة لوزارة الدفاع الاتحاد الروسي... تم تطوير مجمع الأجهزة والبرامج بشكل مشترك من قبل منظمة تصنيع الحوسبة والأتمتة (الأجهزة) ومجموعة من المبرمجين في قطاع خارج المسار في مركز Strela North Caucasus للتحكم في الحركة الجوية. تمت كتابة برنامج المجمع بلغة برمجة Ada باستخدام مترجم GNAT. يتم دعم الحوسبة الموزعة بواسطة مكون GLADE الإضافي.
  • مجموعة من معدات الملاحة الجوية والاتصالات القياسية لطائرة برمائية روسية بيريف بي 200... تم تنفيذ التطوير من قبل معهد البحث العلمي لمعدات الطيران في جوكوفسكي ، جنبًا إلى جنب مع شركة Allied Signal الأمريكية ، فلوريدا ، الولايات المتحدة الأمريكية. تم استخدام مجمع تطوير أنظمة Ada لشركة DDC-I على منصة Intel 80486.

5. النقد

منذ نشأتها ، تعرضت Ada لانتقادات من قبل بعض السلطات المعترف بها في تطوير لغات البرمجة ، في المقام الأول لتعقيد بناء الجملة والحجم الكبير. على وجه الخصوص ، تم انتقاد اللغة من قبل Charles Hoare و Niklaus Wirth (الذين شاركوا في مشروعهم في هذه المسابقة ، لكنهم انسحبوا بعد المرحلة الأولى) ، وكذلك Edsger Dijkstra.

شكك ديكسترا في أن لغة بهذا التعقيد مثل Ada يمكن أن تكون ملحوظة ويمكن التحكم فيها.

إذا كانت Ada ستصدر معيارًا ، فمن المستحسن أن يتم توثيقه بشكل صريح. حاولت مجموعتان على الأقل القيام بذلك ؛ نتيجة لذلك ، أنتج كلاهما حوالي 600 صفحة من النص الرسمي. هذا أكثر بكثير مما هو ضروري للتأكد من أنه من المستحيل حتى إثبات أن كلا الوثيقتين تعرّفان نفس اللغة. لا يكمن الخطأ في عدم القدرة على الإدارة الواضح لهاتين الوثيقتين في المجموعتين اللتين جمعتهما ، وليس في الشكليات التي اعتمدوها ، ولكن فقط في اللغة نفسها: دون تقديم تعريف رسمي لما إذا كان بإمكان مطوريها إخفاء أنهم يقترحون وحش لا يمكن السيطرة عليه. إن قيام Ada بتقليل مشاكل البرمجة وزيادة موثوقية تصميماتنا إلى حدود مقبولة هي مجرد واحدة من تلك القصص الخيالية التي لا يصدقها سوى الأشخاص الذين لديهم خلفية عسكرية.

الخيال العلمي والواقع العلمي في علوم الكمبيوتر (Edsger W. Dijkstra، EWD952)

وعبر هور عن أسفه لأن "الخشخيشات والحلي طغت على المتطلبات الأساسية للموثوقية والأمان" وحذر من "أسطول من الصواريخ تحلق في الاتجاه الخاطئ بسبب سهو خطأ في مترجم آدا". تحدث نيكلاوس ويرث بشكل أكثر تحفظًا ، ولكن أيضًا بشكل سلبي. قال ، "الكثير من الأشياء تقع على عاتق المبرمج. لا أعتقد أنه بعد دراسة ثلث آدا ، يمكنك العمل بشكل طبيعي. إذا كنت لا تتقن كل تفاصيل اللغة ، فيمكنك أن تتعثر عليها في المستقبل ، وسيؤدي ذلك إلى عواقب غير سارة ". جان إشبيا رئيس فريق تطوير آدا ، معربا عن "احترامه وإعجابه" لويرث ، اختلف معه قائلا: "ويرث يؤمن ب". حلول بسيطةمشاكل صعبة. أنا لا أؤمن بمثل هذه المعجزات. تتطلب المشاكل المعقدة حلولاً معقدة ".

يثير إجراء التحقق من امتثال المترجم لمعيار اللغة عن طريق الاختبار شكوكًا أيضًا. يتضح من الاعتبارات العامة أن الاختبار يمكن أن يجد تناقضات ، لكنه لا يضمن صحتها. والتأكيد العملي على ذلك هو حقيقة أن المترجمين المعتمدين ، عند اختبارهم في مجموعة مختلفة من الاختبارات ، وجدوا عدم امتثال للمعيار.

يجادل مؤيدو Ada بأن البديل الوحيد للغة كبيرة ومعقدة في المشاريع الكبيرة هو استخدام العديد من اللغات المدمجة ، والتي تولد حتمًا مشاكل التوافق التي ابتكرت Ada للتخلص منها. لاحظوا أيضًا أن فهم تعقيد التطوير في Ada صحيح جزئيًا فقط: كتابة برنامج بسيط في Ada يستغرق وقتًا أطول من اللغات الأقل رسمية مثل C ، ولكن تصحيح الأخطاء وصيانتها ، خاصة البرامج الكبيرة والمعقدة منها أسهل بكثير. وفقًا لستيفن زييجر من شركة Rational Software Corporation ، فإن تطوير البرامج في Ada أرخص بشكل عام بنسبة 60 ٪ ، والبرنامج المطور به عيوب أقل 9 مرات من استخدام لغة C.


6. التوزيع ، وجهات النظر

من الناحية العملية ، اتضح أن Ada ، بعد أن احتلت المكانة المقصودة في الجيش والتطورات ذات الصلة للأنظمة المدمجة ، لم تتجاوز هذا المكان ، لا في الغرب ولا في الاتحاد السوفيتي ولا في الفضاء ما بعد الاتحاد السوفيتي. هناك اسباب كثيرة لهذا. يؤكد معارضو اللغة تعقيدها وعيوبها ، يتحدث المؤيدون ، أولاً وقبل كل شيء ، عن الظروف الموضوعية لظهور اللغة والجوانب السلبية لعملية تنفيذها. المثير للاهتمام هو رأي S. I. Rybin ، باحث أول في مركز أبحاث الحوسبة بجامعة موسكو الحكومية ، ومستشار AdaCore EU ، وهو خبير في لغة Ada لمجموعة عمل ISO حول معيار اللغة. يعتقد أن آدا تدين بإخفاقاتها لسببين رئيسيين:

  • أثناء تصميم اللغة ، افترض البنتاغون أن جميع البرامج الجديدة سيتم إنشاؤها فقط في Ada. لهذا السبب ، تلقت Ada وسائل بدائية للغاية للتفاعل مع البرامج بلغات أخرى. من الناحية العملية ، اتضح أن كتابة كل شيء في Ada بشكل عام غير واقعي (فقط لأنه كان هناك حاجة للتفاعل مع التطورات الجاهزة في لغات أخرى). لذلك ، في الصناعات التي لا يوجد فيها شرط صارم "للكتابة فقط في Ada" ، كانت اللغات الأخرى مفضلة ، وأكثر تكيفًا مع بيئة متعددة اللغات. في معيار عام 1995 ، تم حل مشكلة قابلية التشغيل البيني مع اللغات الأخرى ، ولكن ضاع الوقت.
  • ومن المفارقات أن الدعم المالي والتنظيمي للبنتاغون منع انتشار آدا. تعمل برامج Ada المكتوبة للجيش على أقوى أجهزة الحوسبة المتاحة ، لذلك اهتم مطورو المترجمين أولاً باجتياز اختبارات ACVC ، وبعد ذلك فقط حول كفاءة المترجم والكود الذي تم إنشاؤه. في أوائل الثمانينيات ، بدأ ازدهار الحواسيب الصغيرة ، وسرعان ما تم تحسين المترجمين للغات الشائعة (باسكال ، سي ، بيسيك) للأنظمة منخفضة الطاقة. بالنسبة إلى Ada ، لم يكن هناك حافز لمثل هذا التحديث ، ونتيجة لذلك ، أصبحت أجهزة الكمبيوتر الشخصية التي أصبحت في غضون بضع سنوات الجزء الأكبر من مجمع الحوسبة في العالم بدون مترجم عالي الجودة لـ Ada. بطبيعة الحال ، فقدت Ada هذا الجزء من السوق. لم يظهر مترجم GNAT إلا مؤخرًا نسبيًا ، بجودة عالية وفعالية ، ولكن هنا أيضًا ضاع الوقت.

في الوقت الحاضر ، Ada راسخة تمامًا في تطوير أنظمة مدمجة كبيرة ذات موثوقية متزايدة ، وهنا لا يوجد لها منافسون أقوياء. يتزايد استخدام اللغة تدريجيًا ، وإن كان ذلك ببطء. حسب بعض التوقعات الحذرة [ ] ، مع انخفاض تكلفة الأجهزة وانتشار الأنظمة المضمنة ذات البرامج المعقدة ، قد ينمو سوق البرامج في Ada بشكل ملحوظ ، كما سينمو استخدام اللغة.

بالإضافة إلى ذلك ، فإن تطبيق Ada ، وإن كان محدودًا للغاية ، في مجال التعليم العالي. يتم تدريس دورات خاصة في Ada في جامعة موسكو الحكومية وجامعة خاركوف. ومع ذلك ، وفقًا لنفس S.I. Rybin ،

... الآن في مساحة ما بعد الاتحاد السوفيتي في مجال صناعة البرمجيات والتعليم ، نشأت حلقة مفرغة واضحة: الصناعة لا تعرف عمليا عن Ada ، على التوالي ، من الصناعة لا يوجد طلب على التعليم لتدريب Ada المتخصصين والأشخاص الجدد يأتون من الجامعات إلى الصناعة ، الذين لا يعرفون شيئًا عن الجحيم عمليًا.


7. أنظمة التشغيل المكتوبة في Ada

7.1 الأنظمة المضمنة

  • MaRTE
  • RTEMS - نظام تشغيل مفتوح المصدر مصدر الرمز، التي طورتها وزارة الدفاع الأمريكية DARPA
  • رافينسكار
  • RTOS-32 - نظام تشغيل خاص

7.2 أنظمة قيد التطوير

  • AuroraUX (مشروع لإعادة كتابة نواة OpenSolaris ، ثم DragonFly BSD إلى لغة الجحيم)
  • Lovelace (نظام التشغيل على L4 core)

7.3. لم تعد الأنظمة الموجودة

  • BiiN ™
  • Pulse ™
  • AdaOS

8. جامعي الجحيم

اسم شركة إصدار نظام التشغيل موقع
AdaMagic سوفتشيك آدا 95 ? www.sofcheck.com
AdaMULTI برنامج جرين هيلز أدا 83 ، أدا 95 ، سي ، سي ++ ، فورتران سولاريس سبارك ، جنو / لينكس x86 ، ويندوز www.ghs.com
DEC أدا هيوليت باكارد آدا 83 نظام الذاكرة الافتراضية المفتوح h71000.www7.hp.com
GNAT أداكور Ada 83، Ada 95، Ada 2005، Si Solaris SPARC و Linux x86 / x86-64 و Windows وغيرها libre.adacore.com
المحكمة الجنائية الدولية شركة Irvine Compiler آدا 83 ، آدا 95 DEC VAX / VMS، HP 9000/700، Solaris SPARC، DEC Alpha OSF / 1، PC Linux، SGI IRIX، Windows www.irvine.com
يانوس / آدا برامج RR آدا 83 ، آدا 95 SCO، UnixWare، Interactive، MS-DOS، Windows www.rrsoftware.com
ماكس ادا منافس آدا 95 Linux / Xeon ، PowerPC www.ccur.com
ObjectAda اونيكس آدا 95 سولاريس سبارك ، إتش بي-يو إكس ، آي بي إم آيكس ، لينوكس ، ويندوز www.aonix.com
بورادا أنظمة OC آدا 83 ، آدا 95 لينكس ، آيكس (آدا 95) ؛ IBM System 370/390 (Ada 83) www.ocsystems.com
قمة عقلانية آي بي إم رشيد Ada ، C ، C ++ سولاريس سبارك ، لينكس www-01.ibm.com
نتيجة DDC-I أدا 83 ، أدا 95 ، سي ، فورتران سولاريس سبارك ، ويندوز www.ddci.com
XD Ada سويب- EDS آدا 83 OpenVMS Alpha / VAX www.swep-eds.com
XGC أدا برنامج XGC أدا 83 ، أدا 95 ، سي سولاريس سبارك ، لينوكس كمبيوتر ، ويندوز (سيغوين) www.xgc.com

باستثناء GNAT و XGC (لبعض الأنظمة الأساسية) ، يتم دفع المترجمين أعلاه. تقدم بعض الشركات ، مثل Aonix ، عروضًا مجانية محدودة إما في وقت الاستخدام أو في الوظيفة.

يحتوي NetBeans و Eclipse IDE على مكونات إضافية للعمل مع Ada.


9. اللغات المشتقة

يستخدم بناء جملة لغة Ada في لغات مثل:

  • PL / SQL

10. حقائق مثيرة للاهتمام

  • بشكل رسمي ، كانت المنافسة على تطوير اللغة ، والتي نتجت عن إنشاء لغة Ada ، مجهولة - قدمت مجموعات من المطورين مشاريعهم تحت أسماء رمزية بحيث لا تستطيع لجنة المنافسة أن تأخذ في الاعتبار شخصية المطورين عندما اختيار الفائز. لكن من الناحية العملية ، كما كتب أحد أعضاء اللجنة ، كانت أذواق المطورين مختلفة جدًا لدرجة أنه لم يكن من الصعب تحديد مؤلف المشروع.
  • جميع اللغات التي وصلت إلى الجولات الأخيرة من هذه المسابقة كانت تعتمد على باسكال. في هذا الصدد ، يمكن وصف Ada مبدئيًا باسم Pascal ، تم تطويره مع مراعاة المتطلبات الأساسية الخمسة المحددة. في الوقت نفسه ، سار المؤلفون بشكل أساسي على طريق توسيع باسكال بعناصر جديدة. والنتيجة هي لغة أكثر تعقيدًا بشكل ملحوظ.
  • في اللغة الروسية ، هناك نكات مرتبطة بغموض عبارة "لغة الجحيم" ، بما في ذلك تلك التي تستند إلى لغة خوارزمية روسية ، تُعرف أيضًا باسم "لغة الجنة". تضمن الفولكلور البرمجة أيضًا خاتمة مقال بقلم الدعاية السوفييتية ميلور ستوروا (1984):

لغة البنتاغون هي عدو العالم. لغة "آدا" هي صوت جحيم نووي حراري .. بلغة "آدا" لعنة على الجنس البشري.


ملاحظاتتصحيح

  1. دليل مرجعي للغة Ada 83. الفصل 1.3. أغراض ومصادر التطوير - www.ada-ru.org/arm83/ch01s03.html
  2. فاديم ستانكفيتش. سيدة الجحيم - www.kv.by/index2006451104.htm
  3. معيار محدث على iso.org - www.iso.org/iso/en/CatalogueDetailPage.CatalogueDetail؟CSNUMBER=45001
  4. برنامج Bryabrin VM لأجهزة الكمبيوتر الشخصية. موسكو: Nauka ، 1988.
  5. 1 2 مقابلة S. I. Rybin - www.ada-ru.org/wiki/rybin
  6. ، لغات البرمجة الشيئية ، لغات برمجة منصة NET ، Ada ، نماذج كود Ada.
    النص متاح بموجب ترخيص Creative Commons Attribution-ShareAlike.

إذا سألت متخصصًا محليًا في تكنولوجيا المعلومات: "ما هو الجحيم؟" ، فسيقوم معظمهم بهز أكتافهم مندهشة ، حتى أن البعض سيقول إن هذه لغة ميتة ، اخترعها البنتاغون ذات مرة ، لكنها الآن غير مستخدمة عمليًا. في الواقع ، تعد Ada اليوم لغة برمجة ناجحة جدًا يتم استخدامها بنشاط في مختلف المجالات. صحيح أن معظم المبرمجين الروس يعرفون القليل عنها.

ربما تفاجأ كل من اضطر إلى استخدام الخط الرابع عشر من مترو باريس عندما رأى لأول مرة قطارًا لا توجد فيه سيارة أجرة للسائق. يتحكم برنامج Ada بشكل كامل في حركة القطارات على هذا الخط.

على الرغم من كل شيء ، في بعض مجالات التكنولوجيا ، لا تزال روسيا "متقدمة على بقية الكوكب". وأحدها تصميم وإنتاج الطائرات البرمائية. الشركة الرائدة المعترف بها دوليًا في هذا المجال هي TANTK im. م. بيريف. استحوذت الشركة مؤخرًا على أدوات تطوير البرامج على متن الطائرة القائمة على Ada لاستخدامها في ترقية أحدث نموذج Be-200.

وفي الوقت نفسه ، فإن غالبية المتخصصين المحليين في تكنولوجيا المعلومات ، في أحسن الأحوال ، لا يعرفون شيئًا عن لغة الجحيم ، وفي أسوأ الأحوال ، لديهم فكرة خاطئة تمامًا عن الجحيم كلغة وحشية ، اخترعها البنتاغون ذات مرة لتطوير الجيش. ولكن الآن منسية تمامًا.

القليل من التاريخ

يمكن اعتبار عيد الميلاد الرسمي للغة برمجة Ada في 17 فبراير 1983 - تاريخ الموافقة على معيار ANSI / MIL-STD-1815-A-1983.

الإجراءات الفنية والإدارية التي اتخذتها وزارة الدفاع في إطار مشروع إنشاء وتنفيذ لغة آدا حالت تمامًا دون ظهور وانتشار لهجات اللغة. من عام 1983 إلى الوقت الحاضر ، تدعم جميع التطبيقات الصناعية معيار Ada الحالي. عندما يتعلق الأمر بمجموعات Ada الفرعية ، لا يتم تحديد هذه المجموعات الفرعية من خلال التنفيذ ، ولكن من خلال معايير التطوير لفئة معينة من الأنظمة.

في عام 1987 ، تمت الموافقة على معيار ANSI ، دون تغيير واحد ، كمعيار ISO (ISO / IEC 8652) ، وعندما أصبحت الحاجة إلى مراجعة المعيار ضرورية في أوائل التسعينيات ، تم تنفيذ أعمال المراجعة أيضًا تحت التوجيه وأموال وزارة الدفاع الأمريكية. تم إطلاق مشروع دولي جديد ، والذي انتهى بالموافقة في نهاية عام 1994 ، ونشر في بداية عام 1995 نسخة جديدة من معيار ISO / IEC 8652. وهذه الوثيقة هي بمثابة تعريف لبرمجة Ada اللغة اليوم.

تم تشكيل اتحاد الجمهوريات الاشتراكية السوفياتية في أوائل الثمانينيات فريق العملعلى لغة برمجة Ada في لجنة الدولة للعلوم والتكنولوجيا. تم جمع وتحليل جميع المعلومات المفتوحة حول المشروع بعناية ، ومن خلال جهود الخدمات الخاصة ، تم استخراجها و معلومات مغلقة... تم تنظيم المشاريع لتنفيذ Ada لجميع معماريات الكمبيوتر التي كانت قيد الاستخدام ، وكان بعضها ناجحًا للغاية. وضع انهيار الاتحاد السوفياتي حدا لهذا النشاط. يتم استخدام Ada اليوم في روسيا ورابطة الدول المستقلة من قبل المتحمسين الأفراد.

ما هو Ada

توفر جميع اللغات الصناعية الحديثة أساسًا نفس المجموعة الأساسية من القدرات ، والتي تختلف ليس فيما تسمح لك بفعله ، ولكن في كيفية السماح لك بذلك. ومع ذلك ، توسع Ada مجموعة الاحتمالات القياسية للغات الحديثة في جانبين على الأقل. أولاً ، توفر Ada أدوات برمجة عالية المستوى للعمليات غير المتزامنة. ثانيًا ، إنها اللغة الوحيدة التي يمكن تسميتها نمطية دون أي تحفظات.

مثل هذا المثال ضروري ببساطة لدحض الأسطورة الشائعة إلى حد ما بأن Ada هي لغة كبيرة ومعقدة و "ثقيلة" ، مناسبة فقط لكتابة أنظمة فائقة الضخامة وفائقة التعقيد. في الواقع ، يمكن استخدام Ada لتطوير برامج صغيرة ومتوسطة الحجم بنفس نجاح النسخ الحديثة من C و Pascal و BASIC و Java. على سبيل المثال ، مثال كلاسيكي على عبارة "Hello، World!" يبدو هكذا في Ada:

من السهل ملاحظة أن كود Ada يشبه كود Pascal الذي تم اختياره كنموذج أولي له. يصف السطر الأول علاقة هذه الوحدة المترجمة بالوحدات النمطية الأخرى - ويشار إلى أنه يجب تجميع روتين Hello_World جنبًا إلى جنب مع الوحدة النمطية Ada.Text_IO ، والتي تعد أحد مكونات المكتبة المحددة مسبقًا.

يحدد البرنامج التالي عمليتين غير متزامنتين:

يصف قسم الإعلانات المحلية من إجراء Tasking_Example مهمة المخرج (السطر 6 ، الأسطر 8 إلى 17 تحتوي على نص هذه المهمة). عندما يصل التحكم في العملية المقابلة لـ Tasking_Example إلى السطر 20 ، قبل تنفيذ هذه العبارة الأولى ، تبدأ العملية المقابلة لـ Outputter ، وبعدها تعيش العمليتان وتنفذان بشكل غير متزامن بشكل مستقل عن بعضهما البعض. يتكون تنفيذ بيان التأخير (السطر 14 و 20) من تعليق العملية المقابلة لعدد محدد من الثواني. وبالتالي ، يتم تعليق عملية Tasking_Example لمدة 20 ثانية ، بينما تبدأ عملية Outputter في طباعة قيم العداد المتزايد ، وتتوقف مؤقتًا لمدة ثانية واحدة بعد إخراج كل قيمة. بعد 20 ثانية ، تقوم عملية Tasking_Example بتعيين علامة "منتهية" على "صواب" ، مما يؤدي إلى إنهاء الحلقة في عملية الإخراج. تحديد المتغير النهائي ككائن بيانات ذري (السطر 4) يجعل من المستحيل قراءة وتغيير قيمة هذا المتغير في نفس الوقت.

ما يلي هو قالب لوظيفة تسمح بإضافة صفيفين أحاديي البعد حسب المكون. يمكن تكوين هذا القالب لنوع عشوائي ، وهو مصفوفة أحادية البعد ، يتم تحديد عمليات التعيين والإضافة الخاصة بها ("الإضافة" لا يجب أن تكون إضافة حسابية).

تحتوي الأسطر 1-6 على إعلان الوظيفة المخصصة ، بينما تحتوي الأسطر 8-20 على جسمها. بشكل غير رسمي ، تعد معلمة الضبط نوعًا اعتياديًا أحادي البعد مع نطاق فهرس غير محدد (السطر 4) ، والذي يُعرف عنه فقط أن نوع مكونه تعسفي ، ولكن يتم تحديد عملية التخصيص للمكونات (السطر 2) ، نوع الفهرس منفصل عشوائي (السطر 4) ... نظرًا لأنه يتعين علينا إضافة مصفوفتين بشكل مكون ، نحتاج إلى معرفة عملية الإضافة لنوع المكون. نظرًا لأن هذا نوع تعسفي ، فنحن مضطرون لتمرير إضافة لنوع المكون كتفضيل رسمي (السطر 5).

في جسم الوظيفة ، نتحقق أولاً مما إذا كانت أطوال المعاملات هي نفسها (السطر 12) ، وإلا فإن الإضافة المكونة لا معنى لها. لا تضمن مطابقة أطوال المعاملات تطابق نطاقات الفهرس ، لذلك في حلقة فوق نطاق الفهرس للوسيطة الأولى (السطر 15) ، نحتاج إلى حساب فهرس المكون المقابل للوسيطة الثانية في كل مرة. نحن محرومون من فرصة القيام بذلك لنوع الفهرس ، نظرًا لأننا نعرف فقط أنه منفصل ، لذلك ننتقل من قيمة النوع المنفصل إلى رقمه الترتيبي (السمة؟ للرقم الترتيبي ، والعودة إلى القيمة المقابلة لنوع الفهرس (السمة؟ Val).

لاحظ أنه تم التصريح عن معلمات الوظيفة (المخصصة) "+" لليسار واليمين على أنها من النوع Arr ، ولم يتم تحديد نطاق الفهرس الخاص بها. ومع ذلك ، Left و Right معلمتان رسميتان ، في مكانهما ، عند استدعاء (نتيجة إنشاء مثيل) للدالة "+" ، سيتم استبدال المصفوفات المحددة ذات نطاقات الفهرس المعروفة. في جسم الدالة "+" ، نستخدم سمات المصفوفة (؟ Range ،؟ First ،؟ Length) للحصول على معلومات حول نطاق الفهرس الخاص بها من الكائن.

لماذا ادا؟

كان اختيار لغة لمشروع برمجي في السابق مسألة تقنية بحتة. اليوم أصبحت مسألة ذات أهمية إستراتيجية لها آثار بعيدة المدى على نجاح المشروع. دعنا نذكر بعض الأسباب التي أدت إلى اختيار لغة Ada لتنفيذ مشاريع البرمجيات. شركات مختلفة، أو جعلها إلزامية للاستخدام في المناقصات.

  • الرغبة في زيادة موثوقية النظام الذي يتم تطويره ، حيث يمكن أن يكون لعيوب البرامج عواقب وخيمة على صحة الإنسان والاقتصاد والبيئة وما إلى ذلك. (يحتوي Ada على ميزات أمان مدمجة.)
  • الرغبة في تقليل تكلفة تطوير وصيانة النظام.
  • توفر المعايير الدولية وتوافر مترجمي اللغة لأي منصة تقريبًا.
  • فوائد النهج المنضبط لتطوير البرمجيات ، والتي تصبح ذات أهمية خاصة مع زيادة حجم وتعقيد البرامج.
آدا وسي

عند إجراء تحليلات مقارنة للغات الشعبية ، تم كسر العديد من النسخ لدرجة أن هذا الموضوع غالبًا ما يُشار إليه اليوم بفئة "الحروب الدينية". لذلك ، سنقتصر فقط على الإشارة إلى مقال مشهور ، يتم فيه استخلاص عدد من الاستنتاجات البليغة.

  1. تطوير البرامج بلغة Ada يكلف 60٪ أقل من مشاريع البرمجيات المماثلة المنفذة في C.
  2. برنامج Ada به عيوب أقل 9 مرات من برنامج C ؛ برنامج C ++ له خصائص أقل من برنامج C.
  3. يفضل على C لكل من المبرمجين ذوي الخبرة وعديمي الخبرة ، وكذلك للمبرمجين الذين لديهم الحد الأقصى والحد الأدنى من التصنيفات في مجموعتهم.
  4. تعقيد دراسة لغة الجحيم ليس أعلى من تعقيد دراسة لغة C.
  5. تعد برامج Ada أكثر موثوقية من برامج C.

كتوضيح لهذه الاستنتاجات ، سنقدم مثالاً على تطوير برنامج على متن الطائرة لطائرة C-130J وفقًا لمتطلبات المستوى A من معيار DO-178B. في الوقت نفسه ، تم تحديد جودة الشفرة ، والتي كانت أعلى بعشر مرات من متوسط ​​برامج المستوى أ ، وتضاعفت إنتاجية العمل أربع مرات مقارنة بمشاريع البرامج المماثلة.

آدا وجافا

اضطرت Microsoft لتضمين اتفاقيات الترخيص الخاصة بهم أنظمة التشغيلالعنصر التالي ( www.microsoft.com/msdownload/ieplatform/ie/ license.txt): "ملاحظة دعم لغة Java ... تقنية Java ليست متسامحة مع الأخطاء وليست مخصصة ... للاستخدام في أنظمة التحكم في الوقت الفعلي ... حيث قد يؤدي فشل لغة Java إلى الوفاة أو الإصابة أو تلف شديد في البنية التحتية أو البيئة. صن مايكروسيستمز ، Inc. أجبرت Microsoft على نشر هذا التحذير ".

دعونا نشير أيضًا إلى المقالات وشرح مزايا لغة Ada على Java.

الأساطير "الجهنمية"

في كثير من الأحيان ، ترتبط مجموعة من المفاهيم الخاطئة المستمرة بـ Ada والتي تعيق انتشار اللغة والاختيار الواعي لـ Ada كلغة لتنفيذ المشروع.

Ada لغة ميتة ، لا يوجد برنامج فيها الآن.في الواقع ، تحتل Ada بثقة مكانة الأنظمة المدمجة الكبيرة مع متطلبات موثوقية متزايدة. بالمقارنة مع المنتجات "المعبأة" لنظام التشغيل Windows ، فإن هذه الأنظمة ليست ملحوظة جدًا ، لأنها إما موجودة في نسخة واحدة (ما الهدف من تكرار البرنامج الذي يتحكم في حركة قطارات الأنفاق) ، أو توزيعها كجزء من النظام الذي يتم فيه مضمنة (برنامج على متن الطائرة).

Ada هي لغة مصممة حصريًا للتطبيقات العسكرية.تم تطوير Ada بالفعل بمساعدة وزارة الدفاع الأمريكية ، ولكن لا توجد أسباب فنية أو إدارية أو أسباب أخرى تمنع استخدام Ada لتطوير الأنظمة المدنية. عدد المشاريع "المدنية" المبنية على هذه اللغة اليوم يضاهي عدد المشاريع "العسكرية".

Ada هي لغة كبيرة ومعقدة جدًا لاستخدامها في مشروع صغير.إن حجم وتعقيد جميع اللغات الصناعية الحديثة متماثلان عمليًا ، ولكي تقتنع بهذا ، يكفي ببساطة مقارنة حجم أوصافها. تعود هذه الأسطورة إلى أوائل الثمانينيات ، عندما تمت مقارنة Ada بـ Pascal أو Fortran 77 أو BASIC.

هناك عدد قليل من المبرمجين الذين يعرفون Ada ؛ فتعلم لغة من الصفر يتطلب جهدًا ووقتًا مفرطين.في الواقع ، تكمن الصعوبة الحقيقية في العثور على متخصصين يفهمون تفاصيل الأنظمة المضمنة وقادرون على إنشاء برامج عالية الجودة لهم. على سبيل المثال ، BAE ، أحد المستخدمين النشطين للغة Ada ، لا يتطلب من المرشحين معرفة هذه اللغة ؛ بدلاً من ذلك ، يتم البحث عن أشخاص على دراية بالأنظمة المضمنة وعمليات تطوير البرامج ذات الجودة الصناعية. بعد تعيين هؤلاء الأشخاص ، يستغرق الأمر أسبوعين فقط لتعليمهم لغة الجحيم.

لنا خبرة شخصيةيوضح أن المبرمجين المطلعين على بعض أشكال باسكال يحتاجون إلى بضعة أيام فقط لبدء تطوير برامج بسيطة في Ada.

تقنيات Ada الحالية غير فعالة ؛ كل من المترجمين والشفرة التي ينتجونها بطيئة في الأداء. تعود هذه الأسطورة أيضًا إلى النصف الأول من الثمانينيات ، عندما ظهرت التطبيقات الأولى لـ Ada ، في الواقع ، فقط تثبت "نظرية وجود مترجم الجحيم المطابق للمعيار". يكفي إجراء عدد من التجارب البسيطة ، وبرمجة بعض مشكلات النموذج في Ada و Pascal و C / C ++ ، ثم مقارنة (مع معلمات المترجم القابلة للمقارنة) سرعة الترجمة ومقدار الكود الذي تم إنشاؤه وسرعته التنفيذ للتأكد من أن أي عدم كفاءة محدد متأصل في الجحيم ببساطة غير موجود. وتجدر الإشارة أيضًا إلى أن نظام البرمجة GNAT ، برمز مصدر يزيد عن 40 ميجابايت ، تم تنفيذه بنسبة 90٪ في Ada ، ولا يتطلب بناؤه من الكود المصدري (الذي يجمع نفسه ثلاث مرات) على جهاز كمبيوتر حديث. أكثر من نصف ساعة.

تطبيقات Ada الحالية مكلفة للغاية.هذا صحيح ، ومع ذلك ، يجب أن يؤخذ في الاعتبار أن هناك نسخة متاحة للجمهور من نظام البرمجة GNAT ، والتي يمكن الحصول عليها بحرية وقانونية من مستودع البرامج في جامعة نيويورك ( ftp: //cs.nyu.edu/pub/gnat) مع نصوص المصدر

خالية من الجبن وكيفية تجنب مصيدة فئران

GNAT (GNu Ada Translator) هو تطبيق متعدد المنصات للغة Ada موجود على جميع المنصات الصناعية الحديثة تقريبًا ويدعم إنشاء الكود للبنى المدمجة الشائعة. GNAT ( www.gnat.com) بشكل كامل لمعيار Ada ، بما في ذلك المكتبات التي تم تصنيفها على أنها اختيارية وفقًا للمعيار. بالإضافة إلى مترجم Ada نفسه ، يشتمل GNAT على مجموعة أدوات ، حيث يجب الإشارة إلى بيئة تطوير متكاملة مطورة ومصحح أخطاء رسومي متعدد اللغات ، والذي يسمح ، من بين أشياء أخرى ، بالتحقيق في سلوك البرامج ذات العمليات غير المتزامنة. يمكن استخدام المترجم والأدوات المصاحبة بشكل منفصل ، واستدعاءهم من سطر الأوامر ، وفي إطار بيئة التطوير الرسومية المتكاملة لبرامج Ada. جميع مكونات GNAT ، بما في ذلك بيئة التطوير ، لها نفس الواجهة عبر جميع الأنظمة الأساسية. بالإضافة إلى التنفيذ الكامل للميزات الموصوفة في المعيار ، تقدم GNAT مجموعة غنية من الامتدادات التي يسمح بها المعيار. GNAT هو تطبيق لـ Ada في نظام البرمجة متعدد اللغات في دول مجلس التعاون الخليجي ، ويتألف من مجموعة من مترجمي الواجهة الأمامية للغات الإدخال المختلفة مع مولد رمز مشترك ، مما يبسط بشكل كبير تطوير البرامج التي تحتوي على مكونات منفذة بلغات برمجة مختلفة.

تم تطوير وتوزيع GNAT من البداية بموجب ترخيص GPL. للأسف ، هناك العديد من الأساطير المرتبطة بجي بي إل. على سبيل المثال ، يعتقد الكثير من الناس أن البرامج المغطاة بـ GPL تم تطويرها بواسطة مجموعات غير منظمة من المتحمسين ويتم توزيعها مجانًا تمامًا ؛ نتيجة لذلك ، فإن كل من موثوقية ووظائف هذه البرامج تترك الكثير مما هو مرغوب فيه ، ولا تسمح باستخدامها في أي مشاريع جادة. هذا أبعد ما يكون عن حالة GNAT. للاقتناع بذلك ، يكفي البحث في قائمة الشركات التي أبرمت عقودًا مع مطوريها من أجل دعم فني: بوينج ، بريتيش إيروسبيس ، لوكهيد ، إريكسون ، ساب ، إلكترونيات الطيران ، إلخ.

توفير مجاني العروضهي ممارسة شائعة للعديد من مطوري البرامج. يختلف GNAT في أن النسخة العامة المتاحة مجانًا هي بالتأكيد النسخة الكاملةالتكنولوجيا ، دون أي قيود قانونية أو فنية على استخدامها. تم تنفيذ عدد من المشاريع الجادة بنجاح على أساس النسخ العامة من GNAT. برنامج المسبار Beagle 2 للمحطة الأوتوماتيكية الأوروبية Mars Express ، متجه إلى هذه اللحظةإلى المريخ ( www.beagle2.com/index.htm) ، المحطة الآلية للاتصالات الوثائقية التابعة لوزارة الدفاع في الاتحاد الروسي ( www.ada-ru.org/prj_doc.html). العيب الوحيد في الإصدارات العامة هو أن المطور لا يقدم الدعم الفني لها.

استنتاج

للتلخيص ، توفر لغة Ada للمطورين مزيجًا مثاليًا من النزاهة والاتساق والموثوقية والكفاءة. تدعم اللغة الإبداع والابتكار الإبداعي ، مع توفير الانضباط والمستوى الصناعي لتطوير البرامج اللازمة لتنفيذ أنظمة البرامج ذات الأهمية الكبيرة.

المؤلفات
  1. بنيامين بروسغول ، مقدمة إلى Ada 95. www.embedded.com/story/OEG20021211S0034
  2. ستيفن زيجلر ، مقارنة تكاليف تطوير C و Ada. www.adaic.com/whyada/ada-vs-c/cada_art.html www.ada-ru.org... يمكن العثور على ببليوغرافيا مشروحة للكتب عن لغة الجحيم المنشورة باللغة الروسية على الموقع الإلكتروني

عالي المستوى ، يركز على التطبيق في أنظمة الوقت الفعلي ومصمم لأتمتة مهام التحكم في العمليات و / أو الأجهزة ، على سبيل المثال ، في أجهزة الكمبيوتر الموجودة على متن (السفن والطيران).

تم تطوير لغة Ada بمبادرة من وزارة الدفاع الأمريكية في الثمانينيات ، وسميت على اسم عالم الرياضيات Ada Augusta Lovelace (1815-1851). عند تصميم اللغة ، أولاً وقبل كل شيء ، تم التركيز على الموثوقية والكفاءة - تم إنشاء اللغة خصيصًا لتطوير أنظمة برمجيات كبيرة في الوقت الفعلي للأنظمة المدمجة ، والتي تُفرض عليها متطلبات موثوقية عالية ؛ بادئ ذي بدء ، هذه أنظمة عسكرية.
تعتمد لغة Ada على أفكار البرمجة المنظمة وتوفر تطوير برامج معقدة متعددة الوحدات ، ودرجة عالية من استقلالية الماكينة وقابلية النقل. يحتوي Ada على قدرات اللغات الشبيهة بالباسكال ، مثل تعريفات الأنواع ، وهياكل التحكم الشائعة والروتينات الفرعية ، والتطورات في نظرية لغة البرمجة منذ عام 1970. تحتفظ اللغة بالنمطية المنطقية ، والتي يمكن أن تكون جميع البيانات والأنواع والإجراءات الفرعية لها حزمًا. يتم تحقيق النمطية الفيزيائية من خلال التجميع المنفصل. تدعم لغة Ada البرمجة في الوقت الفعلي من خلال آليات معالجة التوازي والاستثناء. يتم دعم برمجة النظام من خلال الوصول إلى المعلمات المعتمدة على النظام والتحكم الدقيق في عرض البيانات.

بحلول عام 1974 ، تم استخدام العديد من لغات البرمجة المختلفة في هياكل وزارة الدفاع الأمريكية. أدى هذا إلى زيادة الوقت والمال الذي تم إنفاقه على تطوير أنظمة جديدة وإعادة التدريب الفني للموظفين. توصل رؤساء الوزارة إلى استنتاج مفاده أنه من الضروري استخدام لغة برمجة واحدة. في عام 1975 ، تم الاتفاق على قائمة المتطلبات لمثل هذه اللغة. لم تفي أي من لغات البرمجة الموجودة في ذلك الوقت (مثل Pascal أو ALGOL-68 أو PL / 1) بالمتطلبات. لذلك ، في عام 1977 ، تقرر إنشاء لغة جديدة ، وتم الإعلان عن مسابقة لتطويرها. من بين جميع المقترحات ، تم اختيار أربعة (كل منها كان امتدادًا لباسكال) ، من أجل المراجعة والتنقيح اللاحقة. في وقت لاحق ، لمزيد من التوضيح ، تم اختيار اثنين منهم ، وفي النهاية اختاروا مشروعًا مقدمًا من قبل Cii-Honeywell Bull. أعطيت هذه اللغة اسم Ada (في الأصل كانت تسمى DOD-1).

في عام 1983 ، تم اعتماد معيار اللغة ANSI / MIL-STD-1815A ، وفي عام 1987 - المعيار الدولي ISO 8652. في عام 1987 ، ظهر أول مترجمين فعالين من Ada. تم تعديل معيار ISO في أوائل عام 1995 (ANSI / ISO / IEC 8652). المعيار الجديدأصلح العديد من الإغفالات وأوجه القصور في اللغة الأصلية ، وأكملها بالعديد من الخصائص المفيدة الجديدة ، مثل الأنواع الإجرائية ، وأنواع المؤشرات القائمة (أي ، المؤشرات إلى الكائنات غير الديناميكية) ، والمكتبات الهرمية ، وعناصر تحكم التزامن إضافية ، والعديد من المكتبات القياسية... بالإضافة إلى ذلك ، في Ada-95 كان هناك دعم للبرمجة الشيئية.
تم إعطاء المعيار التالي الاسم غير الرسمي Ada-2005 ، على الرغم من أنه لم يتم اعتماده في عام 2005. قرر مجتمع Ada الابتعاد عن تقليد تسمية المعيار بشكل غير رسمي بحلول عام النشر ، حيث تم الاتفاق في عام 2005 على جميع معاييره الرئيسية. تضيف اللغة توارثًا متعددًا ، وشكلًا مسبوقًا للوصول إلى أساليب الكائن ، وأنواع مرجعية أكثر مرونة ، وإدارة مهام محسّنة ، وعددًا كبيرًا من المكتبات القياسية الجديدة. بالإضافة إلى ذلك ، يتوافق Ada-2005 مع معيار ISO / IEC 10646 (2003) ، والذي يسمح باستخدام أحرف الأبجدية الروسية واليونانية في أسماء المعرفات (أسماء المتغيرات والوظائف).
تعتبر Ada لغة البرمجة المشتركة لكل من الجيش الأمريكي وحلف شمال الأطلسي.

بالإضافة إلى ذلك ، يتم استخدام Ada لبناء أنظمة كبيرة تُفرض عليها متطلبات موثوقية عالية ، مثل: أنظمة الكمبيوترللطيران (بما في ذلك المدنية) ؛ التحكم في أنظمة الكمبيوتر للسكك الحديدية عالية السرعة ؛ أنظمة مصرفية؛ الأتمتة الصناعية والروبوتات. معدات طبية؛ أنظمة الاتصالات السلكية واللاسلكية.

تُستخدم Ada في مؤسسات التعليم العالي في الولايات المتحدة الأمريكية وأوروبا الغربية ، كأساس لدراسة البرمجة ، وغالبًا ما تستخدم في البحث والتطوير. يدير برنامج Ada حركة القطارات بدون سائقين في مترو باريس. يتخصص عدد من الشركات في تطوير المجمعات والمكتبات والأدوات المختلفة التي تغطي مجموعة واسعة من منصات الأجهزة وأنظمة التشغيل. بالإضافة إلى أدوات التطوير التجارية ، هناك إصدارات مجمعة متاحة مجانًا مثل ObjectAda من Aonix أو GNAT من Ada Core Technologies.

Ada هي لغة البرمجة الأكثر توحيدًا. تم اعتماد المعيار الدولي قبل ظهور النسخ الأولى من المترجمين ، وبالتالي تجنب عدم توافق اللهجات المختلفة لأدا. تتفوق Ada على SI و C ++ من حيث صرامة كتابة البيانات ، ومرونة التجميع المنفصل ، والقدرة على إنشاء أنظمة موثوقة للغاية في الوقت الفعلي ، وتوافر رقابة صارمة على معلمات الوظائف وتجاوزات الفهرس (80٪ من الأخطاء التي تحدث عند إنشاء برامج في C / C ++ مرتبطة بهذا) والتمثيل المستقل عن الجهاز للقيم الثنائية (بدلاً من عمليات البت ، يتم تنفيذ استرجاع حقول السجل). في الوقت نفسه ، تعد Ada شفافة لغويًا ونحويًا ، لذلك من الأسهل تعلمها من Java.

Ada أدنى من C / C ++ في دعم أنظمة التشغيل الجديدة ، وكذلك في توافر أدوات الصيانة وتصحيح الأخطاء والتشكيل واجهات رسومية... لكن معيار اللغة يتضمن مواصفات تم إنشاؤها تلقائيًا للتفاعل مع لغات البرمجة الأخرى ، وفي الممارسة العملية ، إلى جانب Ada ، ومكتبات Fortran الرياضية ، يتم استخدام وظائف النظام المكتوبة بلغة C ، وفصول Java للعمل مع الإنترنت. لذلك ، هناك IDE متعدد اللغات يدعم لغات أخرى غير Ada ، على سبيل المثال ، IBM Rational Ada Developer (C / C ++ / Ada).

تنفذ Ada كلاً من الجمع التلقائي للقمامة (سواء في Java أو C #) والقدرة على استعادة الذاكرة مباشرة (كما في C ، C ++ ، Pascal). كما هو الحال مع C / C ++ ، تمتلك Ada مرافق غنية منخفضة المستوى متاحة. يعد دعم المهام المتعددة المدمج فريدًا بالنسبة إلى لغة البرمجة Ada ويميزها عن معظم لغات البرمجة. لا يتم توفير هذا الدعم عن طريق الامتدادات أو المكتبات الخارجية ، ولكن من خلال أدوات موحدة مدمجة مباشرة في لغة البرمجة.

(Ada 2005) ، إيفل (Ada 2012)

C ++ ، مصلى ، "دراغو". ، إيفل ، "جريفين". ، جافا ، نيم ، مظلة خلف قارب ، PL / SQL ، PL / PgSQL ، Ruby ، ​​Seed7 ، "SPARforte". سباركل ، SQL / PSM ، VHDL

تشمل ميزات Ada: الكتابة القوية ، وآليات نمطية (الحزم) ، والتحقق من صحة وقت التشغيل ، والمعالجة المتوازية (المهام ، والرسائل المتزامنة ، والكائنات المحمية ، وعبارات التحديد غير المحددة) ، ومعالجة الاستثناءات ، والأدوية. أضاف Ada 95 دعمًا للبرمجة الشيئية ، بما في ذلك الإرسال الديناميكي.

تقلل صيغة Ada من اختيار كيفية إجراء العمليات الأساسية وتفضل اللغة الإنجليزية الكلمات الدالة(على سبيل المثال ، "أو" و "ثم") للرموز (مثل "||" و "&&"). تستخدم Ada العوامل الحسابية الأساسية + و - و * و / ، ولكنها تتجنب استخدام الأحرف الأخرى. تقتصر كتل التعليمات البرمجية على كلمات مثل "إعلان" و "بداية" و "نهاية" ، حيث تتبع "نهاية" (في معظم الحالات) معرف الكتلة التي يتم إغلاقها (على سبيل المثال ، إذا انتهى ، إذا ... , حلقة ... نهاية الحلقة). في حالة الكتل الشرطية ، يتم تجنب ذلك لا يزال يتدلى، والتي يمكن أن تقترن بعبارات if المتداخلة غير الصالحة بلغات أخرى مثل C أو Java.

تم تصميم Ada لتطوير أنظمة برمجيات كبيرة جدًا. يمكن تجميع حزم Ada بشكل منفصل. يمكن أيضًا تجميع مواصفات حزمة Ada (واجهة الحزمة) بشكل منفصل دون التحقق من الامتثال. يسمح هذا باكتشاف المشكلات مبكرًا في مرحلة التصميم ، قبل بدء التنفيذ.

يتم دعم عدد كبير من عمليات التحقق من وقت الترجمة للمساعدة في تجنب الأخطاء التي لن يتم اكتشافها حتى وقت التشغيل في بعض اللغات الأخرى ، أو التي تتطلب عمليات تحقق صريحة لإضافتها إلى التعليمات البرمجية المصدر. على سبيل المثال ، يتطلب بناء الجملة اسمًا صريحًا لإغلاق الكتل لمنع الأخطاء بسبب العلامات الزائدة غير المتطابقة. يمكن أن تكتشف الكتابة القوية وجود أخطاء برمجية قياسية (معلمات غير صالحة ، وانتهاكات النطاق ، ومراجع غير صالحة ، وأنواع غير متطابقة ، وما إلى ذلك) إما في وقت الترجمة أو في وقت التشغيل. نظرًا لأن التزامن جزء من مواصفات اللغة ، فقد يكتشف المترجم في بعض الحالات حالات توقف تام محتملة. يقوم المترجمون أيضًا بشكل روتيني بالتحقق من الأخطاء الإملائية للمعرفات ورؤية الحزمة والإعلانات الزائدة عن الحاجة وما إلى ذلك ، ويمكنهم تقديم تحذيرات وتلميحات مفيدة حول كيفية إصلاح الخطأ.

يدعم Ada أيضًا فحوصات وقت التشغيل للحماية من الوصول غير المخصص للذاكرة ، وأخطاء تجاوز سعة المخزن المؤقت ، وانتهاكات النطاق ، والأخطاء خارج النطاق ، وأخطاء الوصول إلى الصفيف ، والأخطاء الأخرى التي يمكن اكتشافها. يمكن تعطيل هذه الفحوصات من أجل كفاءة الأداء ، ولكن يمكن جمعها بكفاءة في كثير من الأحيان. يتضمن أيضًا أدوات للمساعدة في التحقق من صحة البرنامج. لهذه الأسباب ، يتم استخدام Ada على نطاق واسع في الأنظمة الحرجة حيث يمكن أن يؤدي أي شذوذ إلى عواقب وخيمة للغاية ، مثل الوفاة من حادث أو إصابة أو خسارة مالية شديدة. تتضمن أمثلة الأنظمة التي تستخدم Ada إلكترونيات الطيران و ATC والسكك الحديدية والمصارف والجيش وتكنولوجيا الفضاء.

تتميز إدارة الذاكرة الديناميكية في Ada بأنها عالية المستوى وآمنة من النوع. لا يوجد لدى Ada مؤشرات عامة أو غير نمطية ؛ والإعلان ضمنيًا عن أي نوع من أنواع المؤشرات. بدلاً من ذلك ، يجب أن يتم كل تخصيص للذاكرة الديناميكية وإلغاء تخصيصها من خلال المعلنة صراحةً أنواع الوصول... كل نوع من الوصول له مقابل تجمع التخزينالذي يتعامل مع التفاصيل منخفضة المستوى لإدارة الذاكرة ؛ يمكن للمبرمج استخدام إما مجموعة التخزين الافتراضية أو تحديد مجموعات جديدة (هذا ينطبق بشكل خاص على الوصول إلى الذاكرة غير الموحدة). يمكنك حتى إعلان عدة أنواع مختلفةالوصول ، والتي تشير جميعها إلى نفس النوع ولكنها تستخدم مجموعات تخزين مختلفة. بالإضافة إلى ذلك ، توفر اللغة توفر الشيكات، سواء في وقت الترجمة أو في وقت التشغيل ، مما يضمن ذلك تكلفة الوصوللا يمكن محو نوع الكائن الذي يشير إليه.

على الرغم من أن دلالات اللغة تسمح بجمع البيانات المهملة تلقائيًا للكائنات التي يتعذر الوصول إليها ، إلا أن معظم التطبيقات لا تدعمها افتراضيًا ، لأن هذا قد يؤدي إلى سلوك غير متوقع في أنظمة الوقت الفعلي. يحافظ Ada على شكل منطقة محدود يعتمد على إدارة الذاكرة ؛ بالإضافة إلى ذلك ، يمكن أن يوفر الاستخدام الإبداعي لمجمعات التخزين شكلاً محدودًا من أشكال جمع القمامة تلقائيًا لأن تدمير مجموعة التخزين يؤدي أيضًا إلى تدمير جميع الكائنات الموجودة في التجمع.

التاريخ

يستمر العمل على تحسين وتحديث المحتوى الفني للغة البرمجة Ada. تم نشر الإصلاح الفني لـ Ada 95 في أكتوبر 2001 ، وتم نشر تعديل رئيسي ، ISO / IEC 8652: 1995 / Amd 1: 2007 ، في 9 مارس 2007 في مؤتمر Ada-Europe 2012 في ستوكهولم ، جمعية موارد Ada أعلنت (ARA) و Ad -Europe الانتهاء من التصميم احدث اصدارلغة البرمجة Ada وتقديم الدليل المرجعي إلى المنظمة الدولية للتوحيد القياسي (ISO) للموافقة عليه. تم نشر ISO / IEC 8652: 2012 في ديسمبر 2012.

تشمل المعايير الأخرى ذات الصلة ISO 8651-3: 1988 أنظمة معالجة المعلومات ورسومات الكمبيوتر ولغة ربط نظام الرسوميات (GKS) - الجزء 3: Ada .

تكوينات اللغة

"مرحبا بالعالم!" في آدا

مثال نموذجي لمثل هذه اللغة في بناء الجملة هو برنامج Hello world: (hello.adb)

مع Ada.Text_IO ؛ استخدم Ada.Text_IO ؛ الإجراء مرحبًا يبدأ Put_Line ("Hello، world!")؛ نهاية مرحبا؛

يمكن تجميع هذا البرنامج باستخدام مترجم GNAT المجاني مفتوح المصدر عن طريق التشغيل

gnatmake مرحبا. adb

أنواع البيانات

لا يعتمد نظام نوع Ada على مجموعة من الأنواع الأولية المحددة مسبقًا ، ولكنه يسمح للمستخدمين بالإعلان عن أنواعهم الخاصة. هذا البيان ، بدوره ، لا يقوم على التمثيل الداخلي للنوع ، ولكن على وصف الهدف الذي يجب تحقيقه. هذا يسمح للمترجم بتحديد حجم الذاكرة المناسب لنوع معين ، والتحقق من انتهاكات الاستدلال في وقت الترجمة ووقت التشغيل (على سبيل المثال ، انتهاك النطاق ، تجاوز سعة المخزن المؤقت ، تناسق النوع ، إلخ). يدعم Ada الأنواع الرقمية المحددة في النطاق وأنواع الوحدات وأنواع التجميع (السجلات والمصفوفات) وأنواع التعداد. تحدد أنواع الوصول مرجعًا لمثيل من النوع المحدد ؛ غير مسموح بالمؤشرات غير المطبوعة. يتم توفير أنواع خاصة في لغة نوع المشكلة وطرق العرض المحمية.

على سبيل المثال ، يمكن تمثيل التاريخ على النحو التالي:

اكتب Day_type هو النطاق 1 .. 31 ؛ اكتب نوع الشهر هو النطاق 1 .. 12 ؛ اكتب Year_type هو النطاق 1800 .. 2100 ؛ اكتب ساعات mod 24 ؛ النوع يوم الأسبوع هو (الاثنين ، الثلاثاء ، الأربعاء ، الخميس ، الجمعة ، السبت ، الأحد) ؛ اكتب التاريخ هو سجل اليوم: Day_type؛ الشهر: نوع الشهر. السنة: نوع السنة. سجل النهاية

يمكن تأهيل الأنواع بالتصريح عن الأنواع الفرعية:

النوع الفرعي Working_Hours هو نطاق الساعات 0 .. 12 ؛ - 12 ساعة على الأكثر للعمل في اليومالنوع الفرعي Working_Day هو نطاق أيام الأسبوع الاثنين .. الجمعة ؛ - عدد أيام العمل Work_Load: مصفوفة ثابتة (يوم_العمل) لساعات العمل - إعلان ضمني عن النوع: = (الجمعة => 6 ، الاثنين => 4 ، آخرون => 10) ؛ - جدول البحث عن ساعات العمل مع التهيئة

يمكن أن تحتوي الأنواع على مُعدِّلات مثل محدودة ، مجردة ، خاصةإلخ. يمكن الوصول إلى الأنواع الخاصة ويمكن فقط تعديل الأنواع المقيدة أو نسخها داخل الحزمة التي تحددها فقط. يضيف Ada 95 ميزات إضافية لتمديد النوع الموجه للكائنات.

جمل التحكم

كما تقدم آدا كائنات محميةمن أجل الاستبعاد المتبادل. الكائنات المحمية هي هياكل شبيهة بالشاشة ، ولكنها تستخدم المتغيرات الوقائية بدلاً من المتغيرات الشرطية للإشارة (على غرار المناطق الحرجة الشرطية). تجمع المرافق الخاضعة للحراسة بين تغليف البيانات وتأمين الاستبعاد المتبادل من الشاشات ، بالإضافة إلى حراس الدخول من المناطق الحرجة المشروطة. الميزة الرئيسية على الشاشات الكلاسيكية هي أن المتغيرات الشرطية ليست مطلوبة للإشارة ، وتجنب حالات الجمود المحتملة بسبب دلالات القفل غير الصحيحة. مثل المهام ، فإن القابل للتأمين هو نوع مضمن مضمن ، وله أيضًا إعلان جزء وجسم.

يتكون الكائن المحمي من بيانات شخصية مغلفة (لا يمكن الوصول إليها إلا داخل الكائن المحمي) ، بالإضافة إلى الإجراءات والوظائف والسجلات المضمونة لتكون حصرية بشكل متبادل (مع الاستثناء الوحيد للوظائف الضرورية لتكون أثرًا جانبيًا بالمجان وهكذا ، ويمكن أن تعمل في وقت واحد مع وظائف أخرى). يتم حظر مهمة استدعاء الكائن المحمي إذا كانت هناك مهمة أخرى قيد التنفيذ حاليًا في نفس الشيء القابل للتأمين ، ويتم تحريرها عندما تترك هذه المهمة الأخرى الشيء القابل للتأمين. يتم وضع المهام المحظورة في قائمة الانتظار في الكائن المحمي لوقت الوصول المرتب.

تشبه بيانات الكائن المحمية الإجراءات ، ولكنها تحتوي أيضًا على الحماية... إذا كان تقييم الحارس خاطئًا ، فسيتم حظر مهمة التحدي وإضافتها إلى قائمة انتظار هذا الإدخال ؛ الآن يمكن قبول مهمة أخرى في الكائن القابل للتأمين ، حيث لا يتم تنفيذ أي من المهام حاليًا داخل الكائن القابل للتأمين. يتم إعادة تقييم الحراس كلما غادرت مهمة ما المنشأة الخاضعة للحراسة ، لأن هذه هي المرة الوحيدة التي يمكن فيها تغيير تصنيف الحراس.

يمكن أن يكون تسجيل المكالمات جردللسجلات الأخرى بنفس التوقيع. يتم حظر المهمة التي يتم إعادة وضعها وإضافتها إلى قائمة انتظار السجل الهدف ؛ هذا يعني أنه تم تحرير الكائن القابل للتأمين ويسمح بقبول مهمة أخرى.

الرجاء التحديديمكن استخدام عامل التشغيل في Ada لتنفيذ مكالمات الدخول غير المحظورة والقبول ، واختيار السجل غير الحتمي (أيضًا تحت الحراسة) ، والمهلة والإحباط.

يوضح المثال التالي بعض مفاهيم البرمجة المتزامنة في Ada.

مع Ada.Text_IO ؛ استخدم Ada.Text_IO ؛ الإجراء حركة المرور هو نوع Airplane_ID نطاق 1 .. عشرة ؛ - 10 طائرات من نوع مهمة الطائرات (المعرف: Airplane_ID) ؛ - مهمة تمثل الطائرات ، مع معرف كمعامل تهيئةاكتب Airplane_Access هو وصول طائرة ؛ - نوع المرجع إلى نوع المدرج المحمي بالطائرة هو - المدرج المشترك (محمي للسماح بالوصول المتزامن)دخول Assign_Aircraft (المعرف: Airplane_ID) ؛ - جميع الإدخالات مضمونة بشكل متبادلدخول Cleared_Runway (المعرف: Airplane_ID) ؛ دخول Wait_For_Clear ؛ خاص واضح: منطقي: = صحيح ؛ - البيانات الخاصة المحمية - بشكل عام أكثر من مجرد علم ...نهاية المدرج اكتب Runway_Access هو الوصول إلى كل Runway ؛ - تتولى مهمة مراقب الحركة الجوية طلبات الإقلاع والهبوطنوع المهمة تحكم (My_Runway: Runway_Access) هو - إدخالات مهمة لتمرير رسالة متزامنةإدخال Request_Takeoff (المعرف: في Airplane_ID ؛ الإقلاع: خارج Runway_Access) ؛ إدخال Request_Approach (المعرف: في Airplane_ID ؛ النهج: خارج Runway_Access) ؛ تحكم نهاية - تخصيص مثيلات Runway1: اسم مستعار Runway ؛ - إنشاء مثيل للمدرج Controller1: Controller (Runway1 "Access) ؛ - ووحدة تحكم لإدارتها ------ تطبيقات الانواع اعلاه ------المدرج المحمي للجسم هو إدخال Assign_Aircraft (المعرف: Airplane_ID) عندما يكون Clear هو - حارس الدخول - يتم حظر مهام الاستدعاء حتى تتحقق الحالةابدأ مسح: = خطأ ؛ Put_Line (Airplane_ID "الصورة (المعرف) و" على المدرج ") ؛ النهاية ؛ الإدخال Cleared_Runway (المعرف: Airplane_ID) عند عدم المسح يبدأ مسح: = صحيح ؛ Put_Line (Airplane_ID" صورة (معرف) و "مدرج تم مسحه") ؛ نهاية؛ الإدخال Wait_For_Clear عند مسح يبدأ فارغًا ؛ - لا داعي لعمل أي شيء هنا - لا يمكن إدخال المهمة إلا إذا كانت كلمة "مسح" صحيحةنهاية؛ نهاية المدرج وحدة تحكم هيئة المهام تبدأ حلقة My_Runway. Wait_For_Clear ؛ - انتظر حتى يتوفر المدرج (حظر المكالمة)تحديد - انتظر نوعين من الطلبات (أيهما قابل للتشغيل أولاً)عندما Request_Approach "العد = 0 => - بيان الحارس - لا تقبل إلا في حالة عدم وجود مهام في قائمة انتظار على Request_Approachقبول Request_Takeoff (المعرف: في Airplane_ID ؛ الإقلاع: الخروج Runway_Access) - بدء الجزء المتزامن My_Runway. Assign_Aircraft (ID) ؛ - مدرج احتياطي (يحتمل حظر المكالمة إذا كان الكائن المحمي مشغولاً أو خطأ حارس الدخول)الإقلاع: = My_Runway ؛ - تعيين قيمة المعلمة "خارج" لإخبار الطائرة عن المدرجإنهاء Request_Takeoff ؛ - نهاية الجزء المتزامنأو قبول Request_Approach (المعرف: في Airplane_ID ؛ النهج: خارج Runway_Access) نفذ My_Runway. Assign_Aircraft (ID) ؛ النهج: = My_Runway ؛ طلب نهاية_نهج ؛ أو - إنهاء في حالة عدم ترك أي مهام من يمكنه الاتصالإنهاء تحديد النهاية ؛ حلقة النهاية نهاية؛ هيئة المهمة طائرة روي: Runway_Access ؛ تبدأ Controller1. Request_Takeoff (معرف ، روي) ؛ - يتم حظر هذا الاستدعاء حتى تقبل مهمة وحدة التحكم كتلة القبول وتكملها Put_Line (Airplane_ID "صورة (معرف) &" الإقلاع ... ") ؛ تأخير 2.0 ؛ روي. Cleared_Runway (ID) ؛ - لن يتم حظر المكالمة لأن كلمة "Clear" في Rwy خاطئة الآن ولا ينبغي أن تكون هناك مهام أخرى داخل كائن محميتأخير 5.0 ؛ - تطير قليلا ... تحديد حلقة - حاول أن تطلب وحدة تحكم المدرج 1. Request_Approach (معرف ، روي) ؛ - هذه مكالمة حظر - سيتم تشغيلها على وحدة التحكم للوصول إلى حظر القبول والعودة عند الاكتمالخروج؛ - إذا عادت المكالمة ، فإننا "نسمح للهبوط - اترك الكتلة المختارة وتابع ...أو تأخير 3.0 ؛ - مهلة - إذا لم يتم الرد خلال 3 ثوان ، افعل شيئًا آخر (كل شيء في المجموعة التالية) Put_Line (Airplane_ID "صورة (معرف) &" في نمط الانتظار ") ؛ - ما عليك سوى طباعة تحديد نهاية الرسالة ؛ حلقة النهاية ؛ تأخير 4.0 ؛ - هل نهج الهبوط ... ") ؛ روي. Cleared_Runway (ID) ؛ - إخطار المدرج بأننا انتهينا هنا.نهاية؛ New_Airplane: Airplane_Access ؛ تبدأ بـ I in Airplane_ID "حلقة النطاق - إنشاء بعض مهام الطائرة New_Airplane: = طائرة جديدة (I) ؛ - سيبدأ الجري مباشرة بعد الخلقتأخير 4.0 ؛ حلقة النهاية نهاية حركة المرور

براغماس

pragma هو توجيه مترجم يقوم بتمرير المعلومات إلى المترجم للسماح بمعالجة محددة للمخرجات المترجمة. تم تضمين بعض التعليقات الزائفة في اللغة ، في حين أن البعض الآخر عبارة عن تطبيقات.

أمثلة على استخدام المترجم الشائع للبراغمات قد تعطل ميزات معينة ، مثل التحقق من نوع وقت التشغيل أو فحص حدود فهرس المصفوفة ، أو توجيه المترجم لإدخال كود كائن بدلاً من استدعاء دالة (في C / C ++ يفعل ذلك مع الوظائف المضمنة).

  • APSE - مواصفات لبيئة برمجة لدعم تطوير البرامج في Ada
  • ملف تعريف Ravenscar هو مجموعة فرعية من ميزات Ada متعددة المهام المصممة لتأمين الحوسبة الصعبة في الوقت الفعلي
  • SPARK (لغة برمجة) - لغة برمجة تتكون من مجموعة فرعية محدودة جدًا من Ada ، مشروحة بمعلومات وصفية تصف السلوك المطلوب للمكون والمتطلبات الفردية في وقت التشغيل