Компиляторы Ады для Linux

Я провожу торговое исследование для разработки Ada для Linux. Есть ли у вас хорошие рекомендации по компилятору/ОС?

Пока у меня есть GNAT от AdaCore, работающий на CentOS 5.4, и у меня есть запросы на лицензию для Rational Apex и Aonix ObjectAda.

Это попытка портирования. Исходной кодовой базой является Apex 3.0 на OSF1 4.0d.

Что-нибудь еще, что я должен рассмотреть? В идеале это должна быть поддерживаемая среда.


person Dave    schedule 14.01.2010    source источник
comment
Переписать не вариант. Это 1,5 миллиона строк кода.   -  person Dave    schedule 14.01.2010
comment
В целом GNAT работает на Linux, поэтому вам не нужно сильно беспокоиться о конкретном дистрибутиве. Фактически, версия GNAT для FSF распространяется как часть всех основных дистрибутивов Linux. GNAT, поддерживаемый AdaCore, может быть немного более ограниченным в распространении, вам нужно будет уточнить у них.   -  person Marc C    schedule 14.01.2010
comment
Да, и я в одиночку перенес 1,2 MSLOC Ada (GNAT) и около 200 KSLOC C (gcc) с Silicon Grahics/IRIX на PC/Linux за 4 месяца пару лет назад. Ада заняла около 2 недель, за остальное время я потеряла много волос... (:-)   -  person Marc C    schedule 14.01.2010
comment
@bmargulies: Хорошее проявление невежества. Даже если бы Ада был совершенно дерьмовым языком (подсказка от того, кто действительно его использовал: это не так), только полный идиот пытается перекодировать 1,5 миллиона строк кода на другой язык, чтобы сделать то же самое, когда компилятор для его родного языка не работает. доступный. Это было бы почти преступной глупостью.   -  person T.E.D.    schedule 15.01.2010
comment
@bmargulies: Просто из любопытства, почему вы думаете, что Ада — плохой язык? Я еще мало что знаю об этом, но мне это действительно интересно как альтернатива C, поскольку DoD использует его и не будет использовать что-либо еще.   -  person L̲̳o̲̳̳n̲̳̳g̲̳̳p̲̳o&#x    schedule 21.01.2010
comment
@bmargulies: Что вы имеете в виду, что все реализуют разные 2/3? Прошло 25 лет с тех пор, как кто-либо делал компилятор подмножества Ады. Определение языка Ада состоит из основного определения и приложений. Каждый поставщик реализует ядро, иначе это не Ада. Я не знаю ни одного поставщика, который также не реализует как минимум Приложения A (Стандартная библиотека) и B (Интерфейсы к другим языкам), а поставщики смешаны на остальных, некоторые из них легкие (цифры), некоторые сложнее ( Распределенные системы).   -  person Marc C    schedule 26.01.2010
comment
@Longpoke: Ada действительно интересна сама по себе и как альтернатива C. К сожалению, я должен поправить вас насчет ее использования в DoD. Мандат Ады был снят еще в середине 90-х (хотя его все равно широко игнорировали), и хотя самые большие кодовые базы Ады находятся в системах Министерства обороны, я не знаю, чтобы какая-либо крупная система начиналась на Аде, хотя существующие системы сохраняется и будет работать еще много лет. Есть небольшие и средние усилия, в том числе новые старты, но они в основном связаны с защитой преданных делу разработчиков программного обеспечения Ada.   -  person Marc C    schedule 26.01.2010


Ответы (4)


Одна из проблем, которую необходимо принять во внимание, заключается в том, чтобы определить, в какой степени ваша переносимая система использует пакеты, поставляемые поставщиком, для выполнения своих функций. То, что я видел со старыми, большими системами, особенно с Apex, — это склонность языковых гуру во время их разработки решать, что ванильная Ада просто недостаточно хороша, и поэтому привязываться ко всем этим пакетам, поставляемым поставщиками. Если это то, что ваша система делает прямо сейчас, это веский аргумент в пользу обновления внутри поставщика и использования Apex (при прочих равных условиях).

Всякий раз, когда я делал порты таких систем, если мне давали возможность, я делал все возможное, чтобы вырвать весь материал, поставляемый поставщиком - в девяти случаях из десяти замена компонентов, специфичных для поставщика, на ванильную реализацию Ады работала так же хорошо. , и вам больше не придется иметь дело с особенностями пакета, специфичного для компилятора. Кроме того, вы увеличиваете переносимость и ремонтопригодность системы, позволяя ей лучше адаптироваться к будущим изменениям.

person Marc C    schedule 14.01.2010
comment
Спасибо, это отличный совет к размышлению. За исключением любых полезных новых рекомендаций по компилятору в ближайшие несколько дней, я отмечу это как ответ. - person Dave; 15.01.2010
comment
P.S. Судя по твоему профилю, ты в Алабаме и отвечаешь на вопросы Ады. Ты должен быть в Ханствиле, да? - person Dave; 15.01.2010
comment
Понял за 1 :-) Хотите передать порт на аутсорсинг? - person Marc C; 15.01.2010
comment
Аутсорсинг? Есть шанс, что мы работаем в одной компании :) - person Dave; 15.01.2010
comment
Скорее всего, не. В компании есть только один парень по имени Дэйв, и он известен как Дэвид. И вы бы меня уже знали :-) - person Marc C; 15.01.2010

Всегда есть SPARK, но я считаю, что это специализированная/подмножественная версия языка Ада. Возможно, вы захотите связаться с SigAda или с группой Ada usenet, чтобы узнать, есть ли какие-либо другие идеи.

Честно говоря, GNAT — отличный набор инструментов. Вы можете использовать GNATBench, интерфейс Eclipse, или GPS, облегченную среду разработки GTK+, для взаимодействия с инструментами GNAT.

person Dr. Watson    schedule 14.01.2010
comment
Да, GNAT пока выглядит хорошо. СПАРК посмотрю, спасибо. - person Dave; 14.01.2010
comment
Ты прав; SPARK — это подмножество или надмножество Ады. Спасибо, в любом случае. - person Dave; 14.01.2010
comment
С технической точки зрения СПАРК представляет собой единую систему разработки и проверки программного обеспечения, использующую в качестве рабочего языка подмножество Ады. - person Marc C; 14.01.2010
comment
ммм... Spark можно рассматривать как отдельный язык программирования сам по себе, поэтому IMO не стоит рассматривать его набор инструментов для переноса существующего проекта Ada на другую платформу/компилятор. Я думаю, что Spark великолепен, но преобразовать существующее приложение Ada в Spark (спаркифицировать код Ada) непросто. - person Santiago; 15.01.2010

Другие известные мне компиляторы: Green Hills AdaMULTI (для различных ОСРВ) и ОЦЕНКА DDC-I (также для различных ОСРВ)

person T.E.D.    schedule 15.01.2010
comment
Да, я нашел их, но я не вижу поддержки Linux. Это удивительно для меня. - person Dave; 15.01.2010
comment
Настоящая поддержка Windows также отсутствует, за исключением целевых симуляторов. Я не думаю, что товарные операционные системы — это не их рынок. - person T.E.D.; 15.01.2010

Поставщики сертифицированных компиляторов, поддерживающих Linux (помимо перечисленных в вопросе):

Irvine Compiler Corp.

Системы OC

программное обеспечение RR

Sofcheck

person Dave    schedule 18.01.2010