That was an example of a different approach (in my own language) to dealing
with families of integer types.
I strongly recommend conspicuously labeling all uses of such a different
approach in a C-oriented forum to prevent any possibility of confusion
with C's standard-defined terms that have the same spelling. For
instance, instead of 'int', write something like mylanguage::int.
....
So where is size_t and ptr_diff_t amongst that lot? See, it's possible to
manage without it! So C's approach *does* seem untidy.
C90's integer types have sizes that vary from one implementation to
another, which is why a typedef is needed for a type like C99's int32_t,
that has the same size on all platforms (or at least, on all platforms
where there is any supported integer type of that size). The example you
gave appeared to be of languages where the basic types have a fixed
size, which would remove the need for such typedefs. However, by the
same token, that creates the need for other typedefs: one for the
natural int type for a given platform, regardless of what size that type
is - call it natural_int or nint, corresponding to C's built-in 'int'
type (in C99, int_fast16_t is a clumsier representation of roughly the
same idea). Either way, if you have multiple similar types, you
sometimes need to have the type chosen vary with context, and you then
need something like C's typedef to record which of those types was
chosen. And that's where things like size_t and ptrdiff_t come in.
However, the context in this subthread was whether C was a suitable starting
point for a hypothetical universal language. Since such a language would
need to incorporate, amongst many other extremes, the type handling of Ada,
with that of Python, plus all the manipulations allowed by C, then that's
obviously a non-starter.
If you're giving those languages as examples because you consider them
to be the best in each of those areas, you're probably aiming too high.
An "everything" language will necessarily involve a lot of compromises;
you'll be lucky if it handles types as well as the average language;
it's not likely to handle them as well as the language (whichever one
that is) that handles types best. The same is likely to be true of every
other desirable feature of the language.