ایدا (زبان برنامه‌نویسی)
اِیدا یک زبان برنامه‌نویسی شیءگرا و سطح بالا است که در سال ۱۹۸۳ میلادی توسط وزارت دفاع آمریکا ایجاد شد. ایدا گسترش یافته زبان برنامه‌نویسی پاسکال است. برای ایجاد این زبان برنامه‌نویسی بیش از هر زبان دیگری هزینه صرف شده‌است.
نام زبان ایدا برای گرامی‌داشت ایدا لاولیس، ریاضی‌دان و نخستین برنامه‌نویس رایانه، انتخاب شده‌است.
ایدا ۸۳ بسیار از پاسکال تأثیر گرفت و امکان تعریف پکیج را فراهم آورد که داده و عملکرد را با هم بسته‌بندی می‌کرد. اِیدا ۹۵ ویژگی شیءگرایی را اضافه کرد که وراثت نوع را شامل می‌شود. اِیدا ۹۵ در آغاز با سه دغدغه مهم طراحی شد: این بازبینی زبان برای تأمین انعطاف‌پذیری و توسعه‌پذیری بیشتر، کنترل بیشتر بر مدیریت ذخیره‌سازی و هم‌زمانی، و پکیج‌گرایی استاندارد شده برای پشتیبانی از نواحی کاربرد مهم، و در عین حال حفظ تأکید اولیه بر قابلیت اعتماد، نگهداری و کارآیی.
یک برنامهٔ ایدا از یک یا بیش از یک واحد تشکیل شده‌است. واحدهای برنامه ممکن است زیربرنامه‌ها (که الگوریتم‌های قابل اجرا را تعریف می‌کنند)، پکیج‌ها (که مجموعه‌ای از موجودیت‌ها را تعریف می‌کنند)، واحدهای وظیفه (که محاسبات هم‌زمان را تعریف می‌کنند)، واحدهای حفاظت شده (که عملیاتی برای اشتراک هماهنگ داده‌ها بین وظیفه‌ها را تعریف می‌کنند)، یا واحدهای عمومی (که فرم‌های پارامتردار پکیج‌ها و زیربرنامه‌ها را تعریف می‌کنند) باشند. هر واحد برنامه معمولاً شامل دوبخش است: یکی بخش ذکر خصوصیات، شامل اطلاعاتی که باید برای واحدهای دیگر آشکار باشند؛ و دیگری بخش بدنهٔ برنامه، شامل پیاده‌سازی جزئیاتی که لازم نیست برای واحدهای دیگر قابل رؤیت باشد. بیشتر واحدهای برنامه می‌توانند به‌طور جداگانه کامپایل شوند.
ایدا یک زبان برنامه‌نویسی استاندارد شده و همه‌منظوره‌است که در گسترهٔ وسیعی از کاربردها استفاده می‌شود – از کنترل موشک‌ها گرفته تا تحویل صورت‌پرداخت به سیستم کنترل ترافیک هوایی.
ایدا دارای ویژگی‌هایی است که معمولاً در زبان‌های برنامه‌نویسی دیگر یافت می‌شود و افزون بر آن از شیوهٔ جدید برنامه‌نویسی نیز برای کنترل سخت‌افزار مورد نظر تا زمان دقیق سررسید، و برای ایجاد و بهبود برنامه‌های طولانی و پیچیده توسط گروه‌های برنامه‌نویس در دوره‌های بلندمدت پشتیبانی می‌کند.
ایدا شیوهٔ صحیح برنامه‌نویسی را به وسیلهٔ اصول مهندسی نرم‌افزار یکپارچه با امکان تایپ کد قوی، پیمانه‌ای بودن، قابلیت حمل، قابلیت استفادهٔ مجدد و قابلیت خواندن (یا خوانایی) تقویت می‌کند. این خصوصیات هزینه‌ها را در تولید و توسعه، بررسی، اشکال‌زدایی و نگهداری نرم‌افزار، کاهش می‌دهد.
ADAبرای یک سیستم ساخته شد در حالی که می‌تواند به آسانی کامپایل مجدد شده و به سیستم دیگری منتقل شود، چون تمام کامپایلرهای ایدا معتبر هستند و ایدا یک زبان طراحی نرم‌افزاری است که از لحاظ بین‌المللی استاندارد شده توسط MIL-STD-۱۸۱۵A، ANSI و ISO می‌باشد.
ADA کد را به صورت واحدهای جامعی که می‌توانند جداگانه طراحی، نوشته، کامپایل و تست شوند سازماندهی می‌کند؛ این خصوصیت به برنامه اجازه می‌دهد که برنامه‌ها به بخش‌هایی تقسیم شوند و این بخش‌ها جداگانه توسط تیم‌هایی که به‌طور هم‌زمان کار می‌کنند، نوشته شوند و سپس با یکدیگر مجتمع شوند تا محصول نهایی شکل گیرد.
مفهوم پکیج در ADA اجازه می‌دهد که کاربران اجزایی از نرم‌افزار را که می‌توانند بازیابی، استفاده و/یا تغییر داده شوند بدون اینکه بر بقیهٔ اجزای برنامه اثر بگذارند، توسعه دهند. واحدهای برنامه‌های عام ایدا همچنین اجازه می‌دهد که یک تابع منطقی روی بیشتر از یک نوع داده اجرا شود. پکیج‌ها و برنامه‌های عام همچنین تجرد داده‌ها و طراحی مبتنی بر شیء را پشتیبانی می‌کنند.
امکان نوع قوی در ADA خطاها را هم در کامپایل اولیه و هم در کامپایل مجزا، بسیار ساده‌تر پیدا می‌کند. مکانیسم دستکاری و پردازش استثناء در ایدا، برنامه‌های کاربردی مقاوم در برابر خطا را با ارائهٔ یک روش کامل و قابل حمل خطایابی و واکنش موقرانه به شرایط خطا، پشتیبانی می‌کند. خصوصیات سازماندهی عملیات در ایدا، استفادهٔ هم‌زمان از الگوهای سطح بالا را به جای تک‌کاره بودن و در معرض خطا بودن، پشتیبانی می‌کند.
پیمانه‌ای بودن ساختار و قابلیت خواندن بالای برنامه‌های ADA، اصلاح و بهبود نرم‌افزار نوشته شده را، برای یک برنامه‌نویس دیگر، آسان‌تر می‌کند. پیمانه‌ای بودن همچنین اصلاح پکیج را بدون تأثیر بر ماژول‌های دیگر برنامه، امکان‌پذیر می‌سازد.
موفقیت‌های مستند سراسری ایدا، استفاده آن را در دامنهٔ وسیعی از کاربردها برمی‌شمرند. امروزه ایدا سیستم‌های زیر را طراحی می‌کند:
یکی از برنامه‌های معمول برای نمایش نحو نگارش در یک زبان برنامه نویسی برنامه Hello World است. برنامه زیر نحوه نوشتن این برنامه را در ایدا نشان می‌دهد: with Ada.Text_IO;
procedure Hello is begin end Hello;