Ada
- Русское название:
- Ада
- Дата создания:
- 1983
- Создан под влиянием:
- Парадигма:
- Типизация:
- Принятые расширения файлов:
- .adb .ads .ada
- Диалекты:
- Реализации и версии (свернуть все | развернуть все):
Ада — мощнейший объектно–ориентированный язык общего назначения, ориентированный на разработку надёжного программного обеспечения. В язык включены механизмы поддержки параллельного исполнения, обработки исключений, настраиваемых модулей, поддержки распределённых вычислений, стандартные интерфейсы к другим языкам и библиотекам. Ада имеет компиляторы под практически любую операционную систему плюс 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 |
Редактирование Ада в SciTE
Ссылки:
- Ada в английской Википедии
- GNU Ada веб сайт
- Англоязычная конференция comp.lang.ada
- Список рассылки GNAT-OSX
- Сравнение Расширенных Паскалей с Адой («Паскалём на стероидах»)
- Список рассылки ada-ru в удобном представлении
- The Big Online Book of Linux Ada Programming by Ken O. Burtch
- Харьковский форум, посвященный языку Ада.
- Статья в Wikipedia (ru)
- Список рассылки ada-ru на Yahoo Groups
- Официальный сайт Ada Conformity Assessment Authority, занимающейся всеми вопросами,связанными с Адой
- Русскоязычный сайт, посвящённый Аде
- Главный сайт AdaCore, технологического лидера в мире компиляторов Ады
- GNAT Pro Reference Manual
- GNAT Pro User's Guide
- Using the GNAT Programming Studio
- Ada Information Clearinghouse задуман как центр сбора всевозможной информации, касающейся языка Ада
- Стандарты Ады on-line и в PDF
- Ada Power — web–сайт, посвящённый Аде
- Аda World — web–сайт, посвящённый Аде
- GNAT for Macintosh
- BUSH (AdaScript) — unix shell, интерпретатор, CGI
- Сайт загрузки компилятора GNAT GPL и сопутствующих утилит
- Демонстрация подвохов C/C++/Java и как успешно их обходит Ада
Примеры:
Hello, World!:
Пример для версий gnat 3.4.5with Ada.Text_IO;
procedure HelloWorld is
begin
Ada.Text_IO.Put_Line("Hello, World!");
end HelloWorld;
Факториал:
Пример для версий gnat 3.4.5В этом примере используется рекурсивное определение факториала.
Следует отметить, что для вывода на печать текста, целых и длинных целых чисел используются разные пакеты. Команда put в общем случае принимает несколько аргументов, изменяющих формат вывода: Item — это число, которое выводится на печать, Width — количество позиций, которые следует использовать при выводе, Fore и Aft — количества десятичных цифр, которые следует вывести до и после запятой и т.д. Если передается только один аргумент, он считается значением Item. Установив Width равным 1 или другому числу, меньшему, чем количество цифр в выводимом числе, можно вывести его без пробелов в начале (что является умолчательным способом для языка Ada).
Кроме того, отметим, что Ada не поддерживает неявные преобразования типов, так что для вычисления N*Fact(N-1) сначала следует явно преобразовать N к типу Long_Long_Integer.
with Ada.Text_IO, Ada.Integer_Text_IO, Ada.Long_Long_Integer_Text_IO;
procedure Factorial is
begin
declare
function Fact (N: Integer) return Long_Long_Integer is
begin
if N=0 then
return 1;
else
return Long_Long_Integer(N)*Fact(N-1);
end if;
end Fact;
i: Integer := 0;
begin
loop
Ada.Integer_Text_IO.Put (Item => i, Width => 1);
Ada.Text_IO.Put ("! = ");
Ada.Long_Long_Integer_Text_IO.Put (Item => Fact(i), Width => 1);
Ada.Text_IO.New_Line;
i := i + 1;
exit when i=17;
end loop;
end;
end Factorial;
Числа Фибоначчи:
Пример для версий gnat 3.4.5В этом примере используется рекурсивное определение чисел Фибоначчи.
with Ada.Text_IO, Ada.Integer_Text_IO;
procedure Fibonacci is
begin
declare
function Fib (N: Integer) return Integer is
begin
if N<3 then
return 1;
else
return Fib(N-1) + Fib(N-2);
end if;
end Fib;
i: Integer := 1;
begin
loop
Ada.Integer_Text_IO.Put (Item => Fib(i), Width => 1);
Ada.Text_IO.Put (", ");
i := i + 1;
exit when i=17;
end loop;
Ada.Text_IO.Put ("...");
end;
end Fibonacci;
Комментарии
]]>blog comments powered by Disqus
]]>