On 2011-12-12, at 17:40 , Terry Reedy wrote:
By the same token, have you asked anyone why C/Java/etc. have static typing and name locations? It's an equally valid question.
C was designed for writing a computing machine operating system with mutable sequential memory slots numbered from 0 to 2**n - 1.
On the other hand, there are very few typed assemblies.
The question of typing is somewhat orthogonal to that of naming value objects versus storage locations. There are strong stactic typed named value languages like ML.
I know, hence my quoting the part about typing, not the part about variable semantics.
They even require different operators for int and float arithmetic, just like assembler.
That's got nothing to do with the typing or binding disciplines though, it's an issue of ML's type system. Haskell does not have that issue and is arguably more statically typed than MLs.
Assemblers also type data versus address registers and may have signed versus unsigned int operations. But most typing has to be done by the programmer
Which is the point I was trying to make, a point which kind-of goes against the justification used for C being statically typed, as assemblies are also designed for driving systems with mutable sequential memory slots.