Ada's limitations can in many cases be circumvented easily and legally via pre-processors that recognize non-Ada constructs and translate them to Ada. A useful example is the C macro pre-processor, which can be used as-is to extend Ada's strict typing to allow Fortran-like re-definition of the layout of an array.