(это не упрёк команде FPC - это упрёк всем программерам-прикладникам) - очень часто мы завязываемся на всякие условности (int - 32 бита) и т.д. - тут нужна ломка стереотипов и принципов работы с данными.
Когда я работаю с IP-адресами (например, писал прогу рассчета диапазонов), то мне удобно хранить IP в cardinal, при этом точно зная, что он именно 4 байта, одновременно ассоциировав переменную с массивом из 4 чисел типа byte, которые, соответственно, занимают 1 байт.
Да, на 64-битных процессорах программа будет работать уже неверно, так как cardianl там, вероятно, 8 байт. Однако пример показывает, что переменные фиксированного размера иногда очень удобно использовать.
Другой пример, структуры, которые напрямую записываются в файлы, имеющие строгий формат. Например, при работе с форматом WAVE (столкнулся, когда писал программу звукозаписи), приходится отправлять в файл т.н. чанки - записи, содержащие частоты и др. параметры звука. Если такая запись окажется не того размера, то вместо разговора, мы услышим хз что.
С другой стороны, если мы хотим настоящей кросс-компиляции, то либо мы должны смириться с тем, что мы не знаем, какой размер занимает та или иная переменная, либо разработчики компилятора должны фиксировать размеры переменных раз и навсегда (как это сделано в Java). А при изменении разрядности процессоров, во втором варианте можно просто вводить новые типы данных (например, integer -> int64 -> int128 и т.д.).
Так что еще неизвестно, кому это упрек.
