Одна из проблем, которую необходимо учитывать, заключается в том, чтобы определить, в какой степени ваша система, которая портирована, использует поставляемые поставщиком пакеты для выполнения своей функции. То, что я видел с более старыми, большими системами, особенно с Apex, - это склонность гуру-языку в течение его времени разработки, чтобы решить, что ваниль Ada просто недостаточно хороша и так привязана ко всем этим пакетам, поставляемым поставщиками. Если это то, что ваша система делает прямо сейчас, это сильный аргумент в пользу модернизации внутри вендора и использования Apex (при прочих равных условиях).
Всякий раз, когда я делал порты таких систем, если бы у меня была возможность, я изо всех сил старался вырвать все поставляемые поставщиком вещи - девять раз из десяти, заменив специфические для вендора вещи ванильными реализациями Ada работали так же хорошо, и вам больше не нужно иметь дело с причудами пакета, специфичного для компилятора. Кроме того, вы повышаете переносимость и поддерживаемость системы, позволяя ей лучше адаптироваться к будущим изменениям.
Переписывание не является вариантом. Это 1,5 миллиона строк кода. – Dave
GNAT работает в Linux, в общем, поэтому вам не нужно беспокоиться о конкретном дистрибутиве. Фактически, версия GNSS для FSF распространяется как часть всех основных дистрибутивов Linux. Поддержка GNU, поддерживаемая AdaCore, может быть немного ограничена по распространению, вам придется с ними проверить. –
О, и я один раз поделл 1,2 MSLOC от Ada (GNAT) и около 200 KSLOC из C (gcc) от Silicon Grahics/IRIX до PC/Linux в течение 4-месячного периода пару лет назад. Ада заняла около 2 недель, я потерял много волос за остальными ... (:-) –