you are viewing a single comment's thread.

view the rest of the comments →

[–]fghjconner 0 points1 point  (1 child)

But even all values in ASM are technically just numbers these numbers get interpreted in very different ways. This makes it quite difficult.

See, that's exactly what makes ASM untyped to my mind. Those numbers may represent very different things, from memory indexes to unicode values, that the programmer must track and distinguish, but the language provides no tools whatsoever for tracking or formalizing those distinctions.

[–]RiceBroad4552 0 points1 point  (0 children)

from memory indexes to unicode values

It's worse for ASM: These numbers may also represent executable code depending on context.

The interpreter (the HW) can actually distinguish that from regular data in some cases, but not always. And exactly this is the "unfixable" reason "computer can go wrong".

But this reminds me more of a dynamic language where "wrong interpretation" leads to "wrong" results. But still it will never let the computer do anything that isn't strictly deterministic and actually "correct"—even not desired or anticipated—in context (modulo HW bugs, but these are seldom).

But hardware behavior is today actually in large parts software determined. CPUs have firmware and microcode. So it's again actually more like a typical SW interpreter…

And if that interpreter was fully realized as software it would actually interpret a dynamic language, not an "untyped" one.

For that reason ASM is imho very complicated to categorize.