لغة البرمجة آدا

لغة آدا هي لغة برمجة عالية المستوى ، هيكلية ، ثابتة النوع ، إجرائية ، وموجهة للكائنات ، مستوحاة من لغة باسكال ولغات أخرى. تتميز بدعمها المدمج للتصميم التعاقدي (DbC)، ونظام كتابة قوي للغاية ، وتزامن صريح، ومهام، وتمرير رسائل متزامن، وكائنات محمية ، وعدم حتمية . تُحسّن آدا سلامة الكود وسهولة صيانته باستخدام المُصرّف لاكتشاف الأخطاء بدلاً من أخطاء وقت التشغيل . آدا معيار تقني دولي ، تم تعريفه بشكل مشترك من قبل المنظمة الدولية للتوحيد القياسي (ISO) واللجنة الكهروتقنية الدولية (IEC). اعتبارًا من مايو 2023يُطلق على المعيار، ISO/IEC 8652:2023، اسم Ada 2022 بشكل غير رسمي. [ 11 ] [ 12 ]

صُممت لغة آدا في الأصل من قِبل فريق بقيادة عالم الحاسوب الفرنسي جان إشبيا من شركة هانيويل، بموجب عقد مع وزارة الدفاع الأمريكية (البنتاغون) بين عامي 1977 و 1983، لتحل محل أكثر من 450 لغة برمجة كانت تستخدمها البنتاغون آنذاك. [ 13 ] سُميت آدا تيمناً بآدا لوفليس (1815-1852)، التي يُنسب إليها الفضل في كونها أول مبرمجة حاسوب. [ 14 ]

سمات

صُممت لغة آدا في الأصل للأنظمة المدمجة والأنظمة التي تعمل في الوقت الحقيقي . وقد حسّن إصدار آدا  95، الذي صممه إس. تاكر تافت من شركة إنترميتريكس بين عامي 1992 و1995، دعم الأنظمة والبرمجة العددية والمالية والبرمجة كائنية التوجه (OOP). [ 11 ]

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

تُقلل بنية لغة آدا من خيارات تنفيذ العمليات الأساسية، وتُفضل استخدام الكلمات المفتاحية الإنجليزية (مثل `declare` or elseو`begin` and then) على الرموز (مثل `if` ||و`if` &&). تستخدم آدا عوامل التشغيل الحسابية الأساسية +`declare` -و`begin` *و`if` و`if` /، لكنها تتجنب استخدام الرموز الأخرى. تُفصل كتل التعليمات البرمجية بكلمات مثل `declare` و`begin` و`end`، حيث تتبع `end` (في معظم الحالات) الكلمة المفتاحية للكتلة التي تُغلقها (مثل ` if...` end ifو` loop... end loop`). في حالة الكتل الشرطية، يتجنب هذا وجود عبارة `else` غير مُعلقة قد تُؤدي إلى استخدام تعبير `if` متداخل خاطئ في لغات أخرى مثل C أو Java. [ 11 ]

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

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

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

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

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

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

الفاصلة المنقوطة ( ;) هي فاصلة إنهاء ، والعبارة الفارغة أو التي لا تُجري أي عملية هي فاصلة فارغة null;. لا يُسمح باستخدام فاصلة مفردة ;بدون عبارة لإنهاءها.

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

إحدى أدوات البرمجيات المجانية البارزة التي يستخدمها العديد من مبرمجي لغة Ada لمساعدتهم في كتابة شفرة المصدر بلغة Ada هي GNAT Programming Studio، و GNAT التي تعد جزءًا من مجموعة GNU Compiler Collection .

Alire هي أداة لإدارة الحزم وسلاسل الأدوات للغة Ada. [ 19 ]

تاريخ

في سبعينيات القرن الماضي، انتاب وزارة الدفاع الأمريكية قلقٌ بالغٌ إزاء كثرة لغات البرمجة المستخدمة في مشاريع أنظمة الحواسيب المدمجة، إذ كان العديد منها قديمًا أو يعتمد على مكونات مادية محددة، ولم تدعم أيٌّ منها البرمجة المعيارية الآمنة. وفي عام ١٩٧٥، شُكِّل فريق عمل ، هو فريق عمل لغات البرمجة عالية المستوى (HOLWG)، بهدف تقليص هذا العدد من خلال إيجاد أو ابتكار لغة برمجة مناسبة عمومًا لمتطلبات وزارة الدفاع الأمريكية ووزارة الدفاع البريطانية . وبعد العديد من المحاولات، بدءًا من اقتراح أولي [ ٢٠ سُمِّيت لغة البرمجة النهائية "آدا". وانخفض إجمالي عدد لغات البرمجة عالية المستوى المستخدمة في مثل هذه المشاريع من أكثر من ٤٥٠ لغة في عام ١٩٨٣ إلى ٣٧ لغة بحلول عام ١٩٩٦.

وضعت مجموعة عمل لغة البرمجة عالية المستوى (HOLWG) متطلبات لغة Steelman ، وهي سلسلة من الوثائق التي تحدد المتطلبات التي رأوا أنه ينبغي أن تستوفيها لغة البرمجة. خضعت العديد من اللغات الموجودة لمراجعة رسمية، لكن الفريق خلص في عام 1977 إلى عدم وجود لغة حالية تفي بالمواصفات. أُنشئت هذه المتطلبات من قِبل وزارة الدفاع الأمريكية ضمن برنامج لغة البرمجة عالية المستوى المشتركة التابع لوزارة الدفاع في عام 1978. وكانت الوثائق السابقة لهذه المتطلبات تُسمى، بالترتيب، "Strawman" و"Woodenman" و"Tinman" و"Ironman". [ 21 ] ركزت المتطلبات على احتياجات تطبيقات الحاسوب المدمجة ، وأكدت على الموثوقية وسهولة الصيانة والكفاءة. ومن الجدير بالذكر أنها تضمنت آليات معالجة الاستثناءات ، والتحقق أثناء التشغيل ، والحوسبة المتوازية .

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

لوحة مائية لأدا لوفليس

طُرحت طلبات تقديم مقترحات لتطوير لغة برمجة جديدة، وتم التعاقد مع أربعة متعاقدين لتطوير مقترحاتهم تحت مسميات: الأحمر ( شركة إنترمتريكس بقيادة بنيامين بروسغول)، والأخضر ( شركة هانيويل بقيادة جان إشبيا )، والأزرق ( شركة سوفتك بقيادة جون غودينوف) [ 23 والأصفر ( معهد SRI الدولي بقيادة جاي سبيتزن). في أبريل 1978، وبعد تدقيق عام، انتقل مقترحا الأحمر والأخضر إلى المرحلة التالية. في مايو 1979، تم اختيار مقترح الأخضر، الذي صممه جان إشبيا في شركة هانيويل، وأُطلق عليه اسم آدا، نسبةً إلى أوغستا آدا كينغ، كونتيسة لوفليس، والمعروفة باسم آدا لوفليس . وقد تأثر هذا المقترح بلغة LIS التي طورها إشبيا وفريقه في سبعينيات القرن الماضي. نُشر الدليل المرجعي الأولي للغة آدا في نشرة ACM SIGPLAN Notices في يونيو 1979. وتمت الموافقة على الدليل المرجعي للمعايير العسكرية في 10 ديسمبر 1980 (عيد ميلاد آدا لوفليس)، وحمل الرقم MIL-STD-1815 تكريمًا لسنة ميلادها. في عام 1981، استغل توني هوار خطابه عند استلام جائزة تورينج لانتقاد لغة آدا لكونها معقدة للغاية وبالتالي غير موثوقة، [ 24 ] ولكنه تراجع لاحقًا عن رأيه في مقدمة كتاب مدرسي عن لغة آدا. [ 25 ]

كان اجتياز اختبارات التحقق من صحة ACVC مهمة شاقة لموردي مُجمِّعات لغة آدا؛ إليكم الشهادة الممنوحة من مكتب برنامج آدا المشترك وجائزة قدمتها إدارة المورد لموظفي المُجمِّع التابعين لها

حظيت لغة آدا باهتمام واسع من مجتمع البرمجة ككل في بداياتها. وتوقع داعموها وغيرهم أنها قد تصبح لغةً سائدةً في البرمجة العامة، وليس فقط في مجال الدفاع. [ 26 ] وصرح إيشبيا علنًا بأنه في غضون عشر سنوات، لن يتبقى سوى لغتين برمجيتين: آدا وليسب . [ 27 ] واجهت مُجمِّعات آدا الأولى صعوبةً في تنفيذ هذه اللغة الكبيرة والمعقدة، وكان أداء وقت الترجمة ووقت التشغيل بطيئًا، وكانت الأدوات بدائية. [ 26 ] وبذل مُصنِّعو المُجمِّعات معظم جهودهم في اجتياز مجموعة اختبارات التحقق من صحة مُجمِّع آدا (ACVC) الضخمة، والتي كانت مطلوبةً من قِبل الحكومة، والتي كانت ميزةً جديدةً أخرى في تطوير لغة آدا. [ 27 ]

كان أول تطبيق مُعتمد للغة آدا هو مترجم NYU Ada/Ed، [ 28 ] الذي حصل على الاعتماد في 11 أبريل 1983. يُنفذ NYU Ada/Ed بلغة المجموعات عالية المستوى SETL . [ 29 ] بدأت العديد من الشركات التجارية في تقديم مُترجمات لغة آدا وأدوات التطوير المرتبطة بها، بما في ذلك Alsys و TeleSoft و DDC-I و Advanced Computer Techniques و Tartan Laboratories و Irvine Compiler و TLD Systems و Verdix . [ 30 ] كما قدمت شركات تصنيع الحواسيب التي كان لها نشاط كبير في قطاعات الدفاع والفضاء والصناعات ذات الصلة، مُترجمات وأدوات لغة آدا على منصاتها؛ ومن هذه الشركات Concurrent Computer Corporation و Cray Research, Inc. و Digital Equipment Corporation و Harris Computer Systems و Siemens Nixdorf Informationssysteme AG . [ 30 ]

في عام 1991، بدأت وزارة الدفاع الأمريكية بفرض استخدام لغة آدا ( إلزام آدا ) في جميع البرامج، [ 31 ] مع السماح في كثير من الأحيان باستثناءات لهذا الشرط. [ 26 ] وقد أُلغي إلزام آدا فعليًا في عام 1997، عندما بدأت وزارة الدفاع الأمريكية في تبني التقنيات التجارية الجاهزة (COTS). [ 26 ] وكانت هناك متطلبات مماثلة في دول أخرى من حلف الناتو : إذ كان استخدام آدا إلزاميًا لأنظمة الناتو التي تتضمن القيادة والسيطرة ووظائف أخرى، وكانت آدا اللغة المعتمدة أو المفضلة للتطبيقات المتعلقة بالدفاع في دول مثل السويد وألمانيا وكندا. [ 32 ]

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

بفضل ميزات دعم السلامة الحرجة في لغة آدا ، تُستخدم الآن ليس فقط في التطبيقات العسكرية، بل أيضًا في المشاريع التجارية حيث يمكن أن يكون لأي خلل برمجي عواقب وخيمة، مثل إلكترونيات الطيران ومراقبة الحركة الجوية ، والصواريخ التجارية مثل أريان 4 و5 ، والأقمار الصناعية وأنظمة الفضاء الأخرى، والنقل بالسكك الحديدية، والخدمات المصرفية. [ 17 ] على سبيل المثال، كُتب نظام التحكم الأساسي في الطيران ، وهو برنامج نظام التحكم الإلكتروني في طائرة بوينغ 777 ، بلغة آدا، وكذلك أنظمة التحكم الإلكتروني لطائرة يوروفايتر تايفون غير المستقرة ديناميكيًا ، [ 33 ] وساب غريبن ، [ 34 ] ولوكهيد مارتن إف-22 رابتور ، ونظام التحكم في الطيران البديل لنظام التحكم الرقمي في الطيران لطائرة غرومان إف-14 تومكات . كُتب نظام مراقبة الحركة الجوية الآلي الكندي بمليون سطر من لغة آدا ( عدد أسطر التعليمات البرمجية ). وقد تميز بمعالجة موزعة متقدمة ، وقاعدة بيانات موزعة بلغة آدا، وتصميم كائني التوجه. تُستخدم لغة Ada أيضًا في أنظمة مراقبة الحركة الجوية الأخرى، فعلى سبيل المثال، تم تصميم وتنفيذ نظام مراقبة الحركة الجوية من الجيل التالي في المملكة المتحدة، وهو نظام دعم أدوات التحكم في المناطق المستقبلية المؤقتة ( iFACTS )، باستخدام SPARK Ada. [ 35 ] كما تُستخدم في نظام الإشارات داخل مقصورة القيادة التابع لشركة TVM الفرنسية في نظام السكك الحديدية فائقة السرعة TGV ، وفي قطارات الضواحي في باريس ولندن وهونغ كونغ ومدينة نيويورك. [ 17 ] [ 36 ]

تجاوزت مراجعة لغة Ada 95 متطلبات Steelman، حيث استهدفت الأنظمة ذات الأغراض العامة بالإضافة إلى الأنظمة المدمجة، وأضافت ميزات تدعم البرمجة الموجهة للكائنات . [ 37 ]

التقييس

الجدول الزمني للغة آدا
سنةاسم غير رسميالمعيار الرسمي
1980آداANSI MIL-STD 1815
1983آدا 83/87ANSI MIL-STD 1815A ISO/IEC 8652:1987
1995آدا 95ISO/IEC 8652:1995
2001ISO/IEC 8652:1995/Cor 1:2001
2007آدا 2005ISO/IEC 8652:1995/Amd 1:2007
2012آدا 2012ISO/IEC 8652:2012
2016ISO/IEC 8652:2012/Cor 1:2016
2023آدا 2022ISO/IEC 8652:2023

يمكن العثور على Ada الأولية في ACM Sigplan Notices المجلد 14، العدد 6، يونيو 1979 [ 38 ]

نُشرت لغة آدا لأول مرة عام 1980 كمعيار ANSI / MIL-STD 1815. ونظرًا لاحتواء هذه النسخة الأولى على العديد من الأخطاء والتناقضات، [ أ ] نُشرت النسخة المنقحة عام 1983 تحت اسم ANSI/MIL-STD 1815A. ودون أي تغييرات إضافية، أصبحت معيارًا دوليًا (ISO) عام 1987. [ 40 ] تُعرف هذه النسخة من اللغة باسم آدا  83 ، نسبةً إلى تاريخ اعتمادها من قِبل ANSI، ولكن يُشار إليها أحيانًا باسم آدا  87 ، نسبةً إلى تاريخ اعتمادها من قِبل ISO. [ 41 ] كما توجد ترجمة فرنسية لها؛ وقد ترجمتها DIN إلى الألمانية تحت اسم DIN 66268 عام 1988.

 تم نشر لغة Ada 95 ، المعيار المشترك بين ISO/IEC وANSI، ISO/IEC 8652:1995 [ 42 ] [ 43 ] ، في فبراير 1995، لتكون بذلك أول لغة برمجة كائنية التوجه معتمدة من ISO. وللمساعدة في مراجعة المعيار وقبوله مستقبلاً، موّلت القوات الجوية الأمريكية تطوير مُصرّف GNAT . ويُعدّ مُصرّف GNAT حاليًا جزءًا من مجموعة مُصرّفات GNU .

استمر العمل على تحسين وتحديث المحتوى التقني للغة آدا.  نُشر تصحيح تقني لآدا 95 في أكتوبر 2001، [ 44 ] [ 45 ] ونُشر تعديل رئيسي، ISO/IEC 8652:1995/Amd 1:2007 [ 46 ] [ 47 ] في 9 مارس 2007، والمعروف باسم آدا  2005 لأن العمل على المعيار الجديد قد انتهى في ذلك العام.

في مؤتمر Ada-Europe 2012 الذي عُقد في ستوكهولم، أعلنت جمعية موارد Ada (ARA) ومنظمة Ada-Europe عن إتمام تصميم أحدث إصدار من لغة Ada وتقديم دليل المرجع إلى اللجنة الفنية المشتركة 1/اللجنة الفرعية 22 /الفريق العامل 9 التابعة للمنظمة الدولية للتوحيد القياسي (ISO) واللجنة الكهروتقنية الدولية (IEC) للموافقة عليه. وقد نُشرت المواصفة القياسية ISO/IEC 8652:2012 [ 48 ] (انظر دليل مرجع Ada 2012 ) في ديسمبر 2012، والمعروفة باسم Ada  2012. كما نُشر تصحيح فني، ISO/IEC 8652:2012/COR 1:2016 [ 49 ] (انظر دليل مرجع 2012 مع اللجنة الفنية 1 ).

أصبحت تقنية SPARK القائمة على لغة Ada ممكنة بفضل الخصائص المميزة للغة Ada، بما في ذلك فصلها بين المواصفات والتنفيذ عبر الحزم، ودعمها لأنواع البيانات العددية المُعرَّفة من قِبل المستخدم، ودعمها لاستخدام الأنواع المركبة دون اللجوء إلى المؤشرات. وكان لإصدار Ada 2012 أهمية خاصة لتقنية SPARK، إذ سمح دعمه للعقود كجزء من اللغة بإعادة تصميم SPARK من البداية لتحقيق هدفها المتمثل في التطوير المشترك للبرامج جنبًا إلى جنب مع إثباتات صحتها. [ 50 ]

في 2 مايو 2023، شهد مجتمع Ada الموافقة الرسمية على نشر إصدار Ada  2022 من معيار لغة البرمجة. [ 12 ]

على الرغم من وجود مسميات مثل Ada 83 و95 وغيرها، إلا أنه قانونيًا لا يوجد سوى معيار Ada واحد، وهو آخر معيار صادر عن المنظمة الدولية للتوحيد القياسي/اللجنة الكهروتقنية الدولية (ISO/IEC): فمع اعتماد إصدار جديد من المعيار، يُلغى الإصدار السابق. أما المسميات الأخرى فهي مسميات غير رسمية تشير إلى إصدار معين.

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

تراكيب اللغة

لغة آدا هي لغة برمجة شبيهة بلغة ALGOL، وتتميز بهياكل تحكم تحتوي على كلمات محجوزة مثل if و then و else و while و for ، وما إلى ذلك. ومع ذلك، تمتلك آدا أيضًا العديد من إمكانيات هيكلة البيانات وغيرها من التجريدات التي لم تكن موجودة في لغة ALGOL 60 الأصلية ، مثل تعريفات الأنواع والسجلات والمؤشرات والتعدادات . وقد استُوحيت هذه البنى جزئيًا من لغة باسكال أو من قِبَلها .

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

من الأمثلة الشائعة على قواعد اللغة برنامج "Hello, World!" : (hello.adb)

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

يمكن تجميع هذا البرنامج باستخدام برنامج التجميع مفتوح المصدر GNAT المتاح مجانًا ، وذلك بتنفيذ الأمر التالي:

gnatmake hello.adb 

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

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

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

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

أنواع البيانات Day_type و Month_type و Year_type و Hours غير متوافقة، مما يعني أن التعبير التالي غير قانوني على سبيل المثال:

اليوم : نوع اليوم := 4 ؛Current_Month : Month_type := 10 ;... اليوم + الشهر الحالي ... -- غير قانوني

لا يمكن لعامل الجمع المحدد مسبقًا إلا جمع القيم من نفس النوع، لذا فإن التعبير غير قانوني.

يمكن تحسين الأنواع عن طريق تعريف الأنواع الفرعية :

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

يمكن أن تحتوي الأنواع على مُعدِّلات مثل محدود، مجرد، خاص، إلخ. لا تُظهر الأنواع الخاصة بنيتها الداخلية؛ ولا يمكن نسخ كائنات الأنواع المحدودة. [ 51 ] تُضيف لغة Ada 95 ميزات إضافية لتوسيع الأنواع في البرمجة الكائنية.

هياكل التحكم

لغة آدا هي لغة برمجة هيكلية ، مما يعني أن تدفق التحكم فيها مُنظّم في عبارات قياسية. تدعم اللغة جميع البنى القياسية وخاصية الخروج المبكر من المستوى العميق، لذا نادراً ما تكون هناك حاجة لاستخدام أوامر " go to " المدعومة أيضاً.

-- طالما أن a لا تساوي b، كرر العملية.بينما a b ، كررAda.Text_IO.Put_Line ( " Waiting " ) ;نهاية الحلقة ؛إذا كان أ > ب ،Ada.Text_IO.Put_Line ( "تم استيفاء الشرط " ) ;آخرAda.Text_IO.Put_Line ( "لم يتم استيفاء الشرط " ) ;نهاية الشرط ؛حلقة تكرارية من أجل i في 1 .. 10Ada.Text_IO.Put ( " التكرار : " ) ;Ada.Text_IO.Put ( i ) ;Ada.Text_IO.Put_Line ;نهاية الحلقة ؛حلقةأ := أ + 1 ؛الخروج عندما تكون قيمة a = 10 ؛نهاية الحلقة ؛الحالة i هيعندما تكون القيمة 0 = > Ada.Text_IO.Put ( " zero" ) ;عندما يكون 1 = > Ada.Text_IO.Put ( " one " ) ;عندما يكون الناتج 2 = > Ada.Text_IO.Put ( "two " ) ;يجب أن تغطي بيانات الحالة جميع الحالات الممكنة:عندما يكون الآخرون = > Ada.Text_IO.Put ( " لا شيء مما سبق" );نهاية الحالة ؛for aWeekday in Weekday ' Range loop -- حلقة تكرارية على تعدادPut_Line ( Weekday ' Image ( aWeekday ) ); -- إخراج تمثيل نصي للتعدادإذا كان aWeekday ضمن Working_Day ، فسيتم التحقق من نوع فرعي من تعداد.ضع_سطراً ( " للعمل من أجل " &Working_Hours ' Image ( Work_Load ( aWeekday )) ); -- الوصول إلى جدول بحثنهاية الشرط ؛نهاية الحلقة ؛

الحزم والإجراءات والوظائف

من بين أجزاء برنامج Ada الحزم والإجراءات والوظائف.

تختلف الدوال عن الإجراءات في أنها يجب أن تُرجع قيمة. لا يمكن استخدام استدعاءات الدوال "كعبارة"، ويجب إسناد نتيجتها إلى متغير. مع ذلك، منذ إصدار Ada 2012، لم تعد الدوال مُلزمة بأن تكون نقية، ويُمكنها تغيير مُعاملاتها المُعلنة بشكل مناسب أو الحالة العامة. [ 52 ]

مثال: مواصفات الحزمة (example.ads)

مثال على الحزمة هونوع الرقم هو نطاق من 1 إلى 11 ؛إجراء Print_and_Increment ( j : in out Number );نهاية المثال ؛

نص الحزمة (مثال.adb)

باستخدام Ada.Text_IO ؛مثال على نص الحزمة هوi : Number := Number ' First ;الإجراء Print_and_Increment ( j : in out Number ) هودالة Next ( k : in Number ) تُرجع Number هييبدأأعد k + 1 ؛النهاية التالي ؛يبدأAda.Text_IO.Put_Line ( " المجموع هو : " & Number ' Image ( j ) ) ;j := Next ( j );نهاية عملية الطباعة والزيادة ؛-- يتم تنفيذ تهيئة الحزمة عند تفصيلهايبدأبينما i < الرقم ' الحلقة الأخيرةاطبع_وزيد_القيمة ( i );نهاية الحلقة ؛نهاية المثال ؛

يمكن تجميع هذا البرنامج، على سبيل المثال، باستخدام برنامج التجميع مفتوح المصدر GNAT المتاح مجانًا ، عن طريق تنفيذ

gnatmake -z example.adb 

يمكن أن تتداخل الحزم والإجراءات والوظائف إلى أي عمق، ويمكن أن يكون كل منها أيضًا الكتلة الخارجية المنطقية.

يمكن أن تحتوي كل حزمة أو إجراء أو دالة على تعريفاتها الخاصة للثوابت والأنواع والمتغيرات والإجراءات والوظائف والحزم الأخرى، والتي يمكن تعريفها بأي ترتيب.

براغماس

التوجيه البرمجي (pragma) هو توجيه للمترجم ينقل معلومات إليه لتمكينه من إجراء تعديلات محددة على المخرجات المُترجمة. [ 53 ] بعض التوجيهات البرمجية مُدمجة في اللغة، [ 54 ] بينما بعضها الآخر خاص بالتنفيذ.

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

الأدوية الجنيسة

تدعم لغة آدا البرمجة العامة منذ تصميمها الأول في الفترة ما بين عامي 1977 و1980. وتستخدم المكتبة القياسية البرمجة العامة لتوفير العديد من الخدمات. أضافت آدا 2005 مكتبة حاويات عامة شاملة إلى المكتبة القياسية، مستوحاة من مكتبة القوالب القياسية للغة سي++ . [ 55 ] [ 56 ]

الوحدة العامة هي حزمة أو برنامج فرعي يأخذ معلمة رسمية عامة واحدة أو أكثر . [ 57 ]

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

لإنشاء وحدة عامة، يمرر المبرمج المعاملات الفعلية لكل صيغة. ثم تتصرف الوحدة العامة تمامًا مثل أي وحدة أخرى. من الممكن إنشاء وحدات عامة أثناء التشغيل ، على سبيل المثال ، داخل حلقة تكرارية. [ 58 ]

انظر أيضاً

ملحوظات

  1. انظر ملخص تغييرات لغة آدا [ 39 ]
  1. "مبررات Ada2012" (ملف PDF) . adacore.com . مؤرشف (ملف PDF) من الأصل بتاريخ 18 أبريل 2016. تم الاطلاع عليه بتاريخ 5 مايو 2018 .
  2. "حلول برمجية تجارية للغات Ada وC وC++" . AdaCore . تم الاطلاع عليه بتاريخ 4 أبريل 2023 .
  3. "PTC ObjectAda" . PTC.com . تم الاطلاع عليه بتاريخ 27-01-2014 .
  4. ^ "مغير MapuSoft Ada-C/C++" . 16 أبريل 2019.
  5. "قائمة معالجات Ada 95 المعتمدة - التفاصيل" . ada-auth.org . تم الاطلاع عليه في 4 أبريل 2023 .
  6. ^ ادا عقلاني، 1986، ص 23، 70، 110-114، 137، 165، 236
  7. "مواصفات الكنيسة (شكر وتقدير)" (ملف PDF) . شركة كراي، 1 أكتوبر 2015. مؤرشف (ملف PDF) من الأصل بتاريخ 9 أكتوبر 2022. تم الاطلاع عليه بتاريخ 14 يناير 2016 .
  8. "دراغو" . مؤرشف من الأصل بتاريخ 14-09-2020 . تم الاطلاع عليه بتاريخ 06-08-2018 .
  9. "مشروع غريفين" . cs.nyu.edu . تم الاطلاع عليه في 4 أبريل 2023 .
  10. ^ "لغة برمجة SparForte" . www.sparforte.com . تم الاسترجاع في 4 أبريل 2023 .
  11. 1 2 3 4 https://nvlpubs.nist.gov/nistpubs/Legacy/FIPS/fipspub119.pdf لغة برمجة آدا
  12. 1 2 بينهو، لويس ميغيل (يونيو 2023). "من مكتب التحرير" . رسائل آدا . الثالث والأربعون (1). جمعية آلات الحوسبة: 3. doi : 10.1145/3631483 (غير نشط في 1 يوليو 2025).{{cite journal}}: صيانة CS1: رقم التعريف الرقمي غير نشط اعتبارًا من يوليو 2025 ( رابط )
  13. "لغة برمجة آدا" . جامعة ميشيغان . مؤرشف من الأصل بتاريخ 22 مايو 2016. تم الاطلاع عليه بتاريخ 27 مايو 2016 .
  14. فويجي، ج؛ فرانسيس، ج (2003). "لوفليس وباباج وإنشاء "الملاحظات" لعام 1843"". IEEE Annals of the History of Computing . 25 (4): 16– 26. doi : 10.1109/MAHC.2003.1253887 . S2CID 40077111. " 
  15. "التزامن". دليل جودة وأسلوب لغة آدا 95. مركز معلومات آدا . تم الاطلاع عليه في 5 نوفمبر 2021 .
  16. تافت، إس. تاكر؛ أولسن، فلورنس (30 يونيو 1999). "لغة آدا تُسهم في إنتاج برمجيات أقل عرضةً للأخطاء" . أخبار الحاسوب الحكومية. ص 2-3 . مؤرشف من الأصل بتاريخ 31 أغسطس 2015. تم الاطلاع عليه بتاريخ 14 سبتمبر 2010 . 
  17. 1 2 3 فيلدمان، مايكل. "من يستخدم لغة آدا؟ مشاريع واقعية مدعومة بلغة برمجة آدا، نوفمبر 2014" . مجموعة عمل التعليم التابعة لـ SIGAda.
  18. لا توجد إدارة آمنة للذاكرة الديناميكية في لغة ADA ، في: كتابة وحدات نواة لينكس بلغة Rust الآمنة - جيفري توماس وأليكس جاينور، مؤسسة لينكس، 2019-10-02
  19. ^ "علير – الصفحة الرئيسية" . أدكور . تم الاسترجاع بتاريخ 2024-12-09 .
  20. "وزارة الدفاع الأمريكية - متطلبات وهمية - أبريل 1975" . iment.com . تم الاطلاع عليه في 4 أبريل 2023 .
  21. وزارة الدفاع (يونيو 1978)، متطلبات لغات برمجة الحاسوب عالية المستوى: "ستيل مان"
  22. شركة سوفت تك (1976)، "تقييم لغات البرمجة ALGOL 68 وJovial J3B وPascal وSimula 67 وTACPOL مقابل TINMAN - متطلبات لغة برمجة مشتركة عالية المستوى." - انظر أيضًا: ALGOL 68 و JOVIAL J3B و Pascal و Simula 67 وTACPOL (مركز المعلومات التقنية الدفاعية - DTIC ADA037637، رقم التقرير 1021-14)
  23. "جون غودينوف | نبذة عن موظفي معهد هندسة النظم" . Sei.cmu.edu . تم الاطلاع عليه بتاريخ 27-01-2014 .
  24. كار، هوار (1981). "ملابس الإمبراطور القديمة" (ملف PDF) . اتصالات رابطة آلات الحوسبة . 24 (2). رابطة آلات الحوسبة : 75-83 . doi : 10.1145/358549.358561 . S2CID 97895. مؤرشف من الأصل (ملف PDF) بتاريخ 2016-03-04. 
  25. وات، د.أ؛ ويشمان، ب.أ؛ فيندلاي، و. (1987). آدا: اللغة والمنهجية . برنتيس هول.
  26. 1 2 3 4 سوارد، ريكي إي. (نوفمبر 2010). "صعود وسقوط واستمرار لغة آدا". SIGAda '10: وقائع المؤتمر الدولي السنوي لجمعية ACM SIGAda حول SIGAda . الصفحات 71-74 . doi : 10.1145/1879063.1879081 . ISBN  978-1-4503-0027-8.
  27. 1 2 3 روزن، جيه بي. (أغسطس 2009). "مفارقة (مفارقات) آدا". رسائل آدا . 24 (2). ACM SIGAda: 28-35 . doi : 10.1145/1620593.1620597 . S2CID 608405 . 
  28. شركة سوفتيك (11 أبريل 1983). "تقرير ملخص التحقق من صحة مُترجم لغة آدا: NYU Ada/ED، الإصدار 19.7 V-001" . والتهام، ماساتشوستس. مؤرشف من الأصل بتاريخ 12 مارس 2012. تم الاطلاع عليه بتاريخ 16 ديسمبر 2010 .
  29. ديوار، روبرت ب.ك.؛ فيشر، جيرالد أ. الابن؛ شونبرغ، إدموند؛ فروليش، روبرت؛ براينت، ستيفن؛ غوس، كلينتون ف.؛ بيرك، مايكل (نوفمبر 1980). "مترجم ومفسر لغة آدا في جامعة نيويورك". وقائع ندوة ACM-SIGPLAN حول لغة برمجة آدا - SIGPLAN '80 . المجلد 15. الصفحات 194-201 . doi : 10.1145/948632.948659 . ISBN   0-89791-030-3. S2CID 10586359 . 
  30. 1 2 "قائمة المترجمات المعتمدة للغة آدا". مركز معلومات آدا. 1 يوليو 1992. الصفحات 1-36 . 
  31. مركز معلومات قانون آدا (1994). "التفويض الصادر عن الكونغرس بشأن قانون آدا" . مؤرشف من الأصل بتاريخ 4 مارس 2016. تم الاطلاع عليه بتاريخ 7 يونيو 2015 .
  32. بابياك، نيكولاس ج. (1989). لغة آدا، لغة الحاسوب الجديدة لأنظمة أسلحة وزارة الدفاع الأمريكية - حلٌّ ناجع أم كارثة (ملف PDF) . جامعة القوات الجوية (القوات الجوية الأمريكية) . الصفحات 39-40 . مؤرشف (ملف PDF) من الأصل بتاريخ 15 ديسمبر 2019. 
  33. "التفكير المرن" . فلايت جلوبال . 16 يونيو 1999. مؤرشف من الأصل في 15 أبريل 2021. تم الاطلاع عليه في 13 فبراير 2024 .
  34. فريسبيرغ، بو. "استخدام لغة آدا في نظام التحكم في طيران غريبن" (ملف PDF) . مجموعة الاهتمام الخاصة بلغة آدا . مؤرشف (ملف PDF) من الأصل بتاريخ 15 يناير 2024. تم الاطلاع عليه بتاريخ 13 فبراير 2024 .
  35. AdaCore. "اختيار GNAT Pro لنظام مراقبة الحركة الجوية من الجيل التالي في المملكة المتحدة" . مؤرشف من الأصل بتاريخ 24 ديسمبر 2010. تم الاطلاع عليه بتاريخ 1 مارس 2011 .
  36. AdaCore. "انظروا من يستخدم لغة Ada" . مؤرشف من الأصل بتاريخ 24-12-2010 . تم الاطلاع عليه بتاريخ 01-03-2011 .
  37. ديفيد أ. ويلر (1997)، "لغات آدا، سي، سي++، وجافا في مواجهة ستيل مان" . نُشرت في الأصل في مجلة آدا ليترز، يوليو/أغسطس 1997.
  38. إيشبيا، جيه دي (يونيو 1979). "إشعارات ACM Sigplan" . الصفحات 1-145 . doi : 10.1145/956650.956651 . 
  39. ملخص التغييرات في لغة آدا
  40. "ISO 8652:1987" . المنظمة الدولية للمقاييس . 21-02-2013 . تاريخ الاسترجاع: 19-01-2024 .
  41. "Ada 83 LRM، الصفحة الأولى" . archive.adaic.com . تم الاطلاع عليه بتاريخ 19-01-2024 .
  42. "ISO/IEC 8652:1995" . المنظمة الدولية للمقاييس . تم الاطلاع عليه بتاريخ 19 يناير 2024 .
  43. "دليل لغة آدا 95 المرجعي (الأصلي) - جمعية موارد آدا" . www.adaic.org . تاريخ الاسترجاع: 19 يناير 2024 .
  44. ISO/IEC 8652:1995/Corr 1:2001
  45. آدا 95 RM مع TC 1
  46. "ISO/IEC 8652:1995/Amd 1:2007" . المنظمة الدولية للمقاييس . تم الاطلاع عليه بتاريخ 19 يناير 2024 .
  47. "دليل مرجعي لـ Ada، ISO/IEC 8652:2007(E) الإصدار 3" . www.adaic.org . تاريخ الاطلاع: 19 يناير 2024 .
  48. "ISO/IEC 8652:2012" . المنظمة الدولية للمقاييس . 28-03-2013 . تاريخ الاطلاع: 19-01-2024 .
  49. "ISO/IEC 8652:2012/Cor 1:2016" . المنظمة الدولية للمقاييس . تم الاطلاع عليه بتاريخ 19 يناير 2024 .
  50. تشابمان، رودريك؛ دروس، كلير؛ ماثيوز، ستيوارت؛ موي، يانيك (مارس 2024). "البرامج المطورة بشكل مشترك وإثبات صحتها". اتصالات ACM . 67 (3): 84-94 . doi : 10.1145/3624728 .
  51. "بطاقة بناء جملة لغة آدا" (ملف PDF) . مؤرشفة من الأصل (ملف PDF) بتاريخ 6 يوليو 2011. تم الاطلاع عليها بتاريخ 28 فبراير 2011 .
  52. "البرامج الفرعية" . learn.adacore.com . AdaCore . تم الاطلاع عليه بتاريخ 14 أبريل 2024 .
  53. ^ "Ada 83 LRM، ثانية 2.8: البراغماس" . Archive.adaic.com . تم الاسترجاع 2014/01/27 .
  54. "Ada 83 LRM، الملحق/الرابط ب: تعليمات اللغة المُعرَّفة مسبقًا" . Archive.adaic.com. مؤرشف من الأصل بتاريخ 2012-02-06 . تم الاطلاع عليه بتاريخ 2014-01-27 .
  55. "نظرة عامة على قانون آدا لعام 2005 - جمعية موارد آدا" . www.adaic.org . تاريخ الاسترجاع: 2025-10-06 .
  56. "نظرة عامة: الاستثناءات، والأرقام، والأنواع العامة، إلخ" . www.adaic.org . تم الاطلاع عليه بتاريخ 2025-10-06 .
  57. "الوحدات العامة" . www.adaic.org . تم الاطلاع عليه بتاريخ 25-04-2024 .
  58. 1 2 ""learn.adacore.com"" . learn.adacore.com . تم الاطلاع عليه بتاريخ 2025-10-06 .

مراجع

المعايير الدولية

الأساس المنطقي

وقد نُشرت هذه الوثائق بأشكال مختلفة، بما في ذلك النسخ المطبوعة.

الكتب

  • بوش، جرادي (1987). هندسة البرمجيات باستخدام لغة آدا . كاليفورنيا: شركة بنجامين/كومينغز للنشر. ISBN 0-8053-0604-8.
  • سكانشولم، جان (1996). آدا 95 من البداية . أديسون-ويسلي. ISBN 0-201-40376-5.
  • جيلبين، جيف (1985). آدا: جولة إرشادية ودليل تعليمي . برنتيس هول. ISBN 978-0-13-004045-9.
  • بيدلر، جون (1997). هياكل البيانات والخوارزميات: نهج موجه للكائنات باستخدام Ada 95 . سبرينغر-فيرلاغ. رقم ISBN 0-387-94834-1.
  • غونزاليس، دين دبليو. (1991). دليل مبرمج لغة آدا . شركة بنجامين-كامينغز للنشر. رقم ISBN 0-8053-2529-8.
  • بن آري، م. (1998). لغة آدا لمهندسي البرمجيات . جون وايلي وأولاده. ISBN 0-471-97912-0.
  • بن آري، م. (2009). لغة آدا لمهندسي البرمجيات: الطبعة الثانية مع آدا 2005. سبرينغر. ISBN 978-1-84882-313-6.
  • كوهين، نورمان (1996). لغة آدا كلغة ثانية . ماكجرو هيل للعلوم/الهندسة/الرياضيات. ISBN 0-07-011607-5.
  • بيرنز، آلان ؛ ويلينغز، آندي (2001). أنظمة الوقت الحقيقي ولغات البرمجة. آدا 95، جافا للوقت الحقيقي، وبوزيكس للوقت الحقيقي . أديسون-ويسلي. ISBN 0-201-72988-1.
  • بيرنز، آلان ؛ ويلينغز، آندي (1995). التزامن في لغة آدا . مطبعة جامعة كامبريدج. ISBN 0-521-62911-X.
  • أتكينسون، كولين (1991). إعادة الاستخدام والتزامن والتوزيع الموجه للكائنات: منهج قائم على لغة آدا . أديسون-ويسلي. ISBN 0-201-56527-7.
  • بوش، جرادي ؛ برايان، دوغ (1994). هندسة البرمجيات باستخدام لغة آدا . أديسون-ويسلي. ISBN 0-8053-0608-0.
  • جونز، دو-وايل (1989). لغة آدا في العمل: مع أمثلة عملية للبرمجة . جون وايلي وأولاده. ISBN 0-471-60708-8.
  • ستوبس، دانيال؛ ويبر، نيل دبليو. (1993). هياكل البيانات مع أنواع البيانات المجردة ولغة آدا . بروكس كول. ISBN 0-534-14448-9.
  • ليدرو، باسكال (ديسمبر 1998). البرمجة الموزعة في لغة آدا مع الكائنات المحمية . Dissertation.com. ISBN 1-58112-034-6.
  • كولوين، فينتان (1997). آدا، نهج تنموي . برنتيس هول. رقم ISBN 0-13-264680-3.
  • إنجلش، جون؛ كولين، فينتان (يناير 1997). آدا 95: فن البرمجة الكائنية التوجه . برنتيس هول. ISBN 0-13-230350-7.
  • موسر، ديفيد ر.؛ ستيبانوف، ألكسندر (24 أكتوبر 1989). مكتبة آدا العامة: حزم معالجة القوائم الخطية . سبرينغر-فيرلاغ. ISBN 0-387-97133-5.
  • فيلدمان، مايكل ب. (1997). بناء البرمجيات وهياكل البيانات باستخدام لغة آدا 95. أديسون-ويسلي. ISBN 0-201-88795-9.
  • جونستون، سيمون (1997). لغة آدا 95 لمبرمجي لغتي سي وسي++ . دار نشر أديسون-ويسلي. رقم ISBN 0-201-40363-3.
  • فيلدمان، مايكل ب.؛ كوفمان، إليوت ب. (1992-1993). آدا: حل المشكلات وتصميم البرامج . أديسون-ويسلي. ISBN 0-201-52279-9.795 صفحة.
  • فيلدمان، مايكل ب.؛ كوفمان، إليوت ب. (1999). آدا 95. أديسون-ويسلي. ISBN 0-201-36123-X.
  • ديل، نيل ب .؛ ويمز، تشيب؛ ماكورميك، جون (أغسطس 1996). البرمجة وحل المشكلات باستخدام لغة آدا 95. دار نشر جونز وبارتليت. رقم ISBN 0-7637-0293-5.
  • ديل، نيل ب .؛ ماكورميك، جون (2007). هياكل بيانات آدا بلس: منهج كائني التوجه، الطبعة الثانية . دار نشر جونز وبارتليت. ISBN 978-0-7637-3794-8.
  • كريل، بروس سي. (1992). التطوير باستخدام آدا: أساليب دورة الحياة . مجموعة بانتم ديل للنشر. رقم ISBN 0-553-09102-6.
  • بيشوب، جودي (10 مايو 1990). آدا الموزعة: التطورات والتجارب . مطبعة جامعة كامبريدج. ISBN 0-521-39251-9.
  • ساندن، بو (1994). بناء أنظمة البرمجيات مع أمثلة بلغة آدا . برنتيس هول. ISBN 0-13-030834-X.
  • هيلام، بروس (1994). مقدمة في أنواع البيانات المجردة باستخدام لغة آدا . برنتيس هول. ISBN 0-13-045949-6.
  • رود، ديفيد (1994). مقدمة في تصميم وتطوير البرمجيات باستخدام لغة آدا . بروكس كول. رقم ISBN 0-314-02829-3.
  • بايل، إيان سي. (1991). تطوير أنظمة السلامة: دليل باستخدام لغة آدا . برنتيس هول. ISBN 0-13-204298-3.
  • بيكر، لويس (1989). الذكاء الاصطناعي مع آدا . ماكجرو هيل. ISBN 0-07-003350-1.
  • بيرنز، آلان ؛ ويلينغز، آندي (1995). HRT-HOOD: منهجية تصميم هيكلية لأنظمة آدا ذات الوقت الحقيقي الصارم . نورث هولاند. ISBN 0-444-82164-3.
  • سافيتش، والتر؛ بيترسون، تشارلز (1992). آدا: مقدمة في فن وعلم البرمجة . شركة بنجامين-كامينغز للنشر. ISBN 0-8053-7070-6.
  • وايس، مارك ألين (1993). هياكل البيانات وتحليل الخوارزميات في لغة آدا . شركة بنجامين-كامينغز للنشر. رقم ISBN 0-8053-9055-3.
  • ليدجارد، هنري (1983). آدا: مقدمة (  الطبعة الثانية). سبرينغر-فيرلاغ. ISBN 0-387-90814-5.
  • بيورنر، دينس؛ أويست، أولي ن.، محرران. (1980). نحو وصف رسمي لآدا . لندن: سبرينغر-فيرلاغ. رقم ISBN 3-540-10283-3.

للمزيد من القراءة

  • بارنز، جون (2024). البرمجة بلغة آدا 2022. مطبعة جامعة كامبريدج. ISBN 978-1-009-56477-9.
  • بارنز، جون (2014). البرمجة بلغة آدا 2012 مع معاينة لإصدار آدا 2022. مطبعة جامعة كامبريدج. ISBN 978-1-009-18134-1.
  • بارنز، جون (2014). البرمجة بلغة آدا 2012. مطبعة جامعة كامبريدج. ISBN 978-1-107-42481-4.
  • بارنز، جون (2006). البرمجة بلغة آدا 2005. أديسون-ويسلي. ISBN 0-321-34078-7.
  • بارنز، جون (1991). البرمجة بلغة آدا بلس: دليل مرجعي للغة . أديسون-ويسلي. ISBN 0-201-56539-0.
  • بارنز، جون (1998). البرمجة بلغة آدا 95. أديسون-ويسلي. ISBN 0-201-34293-6.
  • بارنز، جون (1997). آدا ذات النزاهة العالية: منهج سبارك . أديسون-ويسلي. ISBN 0-201-17517-7.
  • بارنز، جون (2003). برمجيات عالية الموثوقية: منهج سبارك للسلامة والأمن . أديسون-ويسلي. ISBN 0-321-13616-0.