A given implementation of the TuringMachine abstraction must define certain architectural elements for sake of practicality. Some of those elements are things like word size (i.e. register size), stack-size, floating point, etc. These choices will affect the ''types'' that the system makes available, and in practice how higher-level programming languages will define themselves and interface to the machine. ''Architectural elements can be ignored by higher-level programming languages. That's part of what makes them higher-level. It is perfectly reasonable for a higher-level language to provide, say, a built-in integer type that is not a reflection of the underlying hardware, e.g., infinite precision.'' See also ObjectArchitecture. WikiStub.