Ада — мощнейший объектно–ориентированный язык общего назначения, ориентированный на разработку надёжного программного обеспечения. В язык включены механизмы поддержки параллельного исполнения, обработки исключений, настраиваемых модулей, поддержки распределённых вычислений, стандартные интерфейсы к другим языкам и библиотекам. Ада имеет компиляторы под практически любую операционную систему плюс Java и .NET байткод.
Ада — язык программирования, созданный в 1979–1980x годах в результате проекта, предпринятого Министерством Oбороны США с целью разработать единый язык программирования для так называемых встроенных систем (то есть, систем управления автоматизированными комплексами, работающими в реальном времени). Имелись в виду, прежде всего, бортовые системы управления военными объектами . Перед разработчиками не стояло задачи создать универсальный язык, поэтому решения, принятые авторами, нужно воспринимать в контексте особенностей выбранной предметной области.
Ада — это структурный, модульный, объектно-ориентированный язык программирования, содержащий высокоуровневые средства программирования параллельных процессов. Синтаксис унаследован от языков типа ALGOL или Pascal, но расширен, а также сделан более строгим и логичным. Ада — язык со строгой типизацией, в нём исключена работа с объектами, не имеющими типов, а автоматические преобразования типов сведены к абсолютному минимуму.
Для удовлетворения требованиям надёжности язык построен таким образом, чтобы как можно большее количество ошибок обнаруживалось на этапе компиляции. Кроме того, одним из требований при разработке языка была максимально лёгкая читаемость текстов программ, даже в ущерб лёгкости написания. Результатом такого подхода стал несколько «тяжеловесный» синтаксис и множество ограничений, часто воспринимаемых непрофессиональными программистами как «глупые» и «ненужные».
Язык Ада используется в США и Европе при разработке сложных больших проектов, главным образом, встроенных систем, причём, далеко не только в военных приложениях.
Элементы синтаксиса:Комментарий до конца строки -- Регистрозависимость нет Регулярное выражение идентификатора переменной [a-zA-Z](_?[a-zA-Z0-9])* Присваивание значения переменной := Объявление переменной variable: type Группировка выражений ( ... ) Блок begin ... end или foo ... end foo where foo in { if, do, ... } Тождественное равенство = Тождественное неравенство /= Сравнение < > <= >= Определение функции function f(p1 : type1; p2 : type2; ... ) return returntype is begin ... end f; Вызов функции f(a, b, ...) Вызов функции без параметров f Последовательность ; Если - то if condition then ... end if Если - то - иначе if condition1 then ... elsif condition2 then ... else ... end if Бесконечный цикл loop ... end loop Цикл с предусловием while condition loop ... end loop Цикл с постусловием loop ... exit when condition end loop Цикл for - next для диапазона целых чисел с инкрементом на 1 for i in 1 .. 10 loop ... end loop Цикл for - next для диапазона целых чисел с декрементом на 1 for i in reverse 1 .. 10 loop ... end loop