Это все, скорее всего, из-за секретности. Высоты на которых проводят свои операции военные засекречены, и именно поэтому передатчик останавливается на FL600.
Не факт, что у них int изначально был 32 битный ;) М.б. как раз 16 битный, а то и вовсе 8 битный. А потом получилось так, что формат структуры оставили для совместимости :) В общем то обычная практика для долгоиграющих проектов, к которым военные как раз относятся. Помимо этого существуют ещё «зипы» — оборудование, которое должно спокойно хранится несколько десятилетий, и м.б. быстро использовано в качестве замены в случае отказа установленного.
Ну вот там сидели два программиста и обсуждали:
— Слушай, у нас высота может большая быть сделаем ее 32-битной.
— Да не, не будет никто так высоко летать, а у нас железка 16-битная. Так что давай делать 16 бит высоту, съэкономим память, и работать побыстрее будет.
Так и получается потом, что потом самолеты под землю уходят при переполнении интов. :D
Читал о похожей проблеме в израильских ВВС — программное обеспечение самолётов не было расчитано на отрицательные высоты и стабильно падало при полётах над Мёртвым Морем, уровень которого значительно ниже уровня моря.
Товарищей, которые 8-битным счётчиком на установке по радиотерапии убили несколько десятков человек (из-за переполнения подавалась бешенная доза радиации вместо указанной) перевели в авиационный отдел? Они сделали выводы из предыдущей ошибки и больше никогда не используют 8-битные счётчики.
Обратите внимание на новость — «официальные источники молчат, но мы думаем, что дело было так». Вспоминается серия из Южного Парка. «Переселенцам помогали инопланетяне. Не верите? А вы можете предоставить доказательства, что инопланетян там не было? Вот то то же!» Как-то так делаются новости…
Вот я сегодня схожим вопросом озадачился, когда документация IBM на DB2 сказала мне, что имя администратора базы в линуксе не может быть более 8 символов. В противном случае база даже не поставится.
Запросто — микроконтроллеры наше всё. Ещё пять лет 16-битные контроллеры широко применялись. И дадже сейчас применяются.
Во-вторых, система могла и 20 лет назад разрабатыватья — оно с авиационной безопасностью свзяано и потому никто не торопится менять.
И самое главное — есть языки программирования, где целое до сих пор 16 бит — вот такой сюрприз.
Сто раз твердили — проверяй входные данные, но некоторые очень любят получать по лицу старыми граблями — видать лицо уже приняло форму ручки граблей. Можно ведь было сделать вывод сообщения об ошибке с требованием узнать у пилота — а на какой высоте он сейчас, или перевести работу в ручной режим, а не тупо интерпретировать неправильные значения.
Из-за программного бага задержали более 200 авиарейсов: не летайте выше 65535 футов