Rob Thorpe <[EMAIL PROTECTED]> wrote: +--------------- | > So, will y'all just switch from using "dynamically typed" to "latently | > typed", and stop talking about any real programs in real programming | > languages as being "untyped" or "type-free", unless you really are | > talking about situations in which human reasoning doesn't come into play? | | I agree with most of what you say except regarding "untyped". | | In machine language or most assembly the type of a variable is | something held only in the mind of the programmer writing it, and | nowhere else. In latently typed languages though the programmer can | ask what they type of a particular value is. There is a vast | difference to writing code in the latter kind of language to writing | code in assembly. | | I would suggest that at least assembly should be referred to as | "untyped". +---------------
Another language which has *neither* latent ("dynamic") nor manifest ("static") types is (was?) BLISS[1], in which, like assembler, variables are "just" addresses[2], and values are "just" a machine word of bits. However, while in BLISS neither variable nor values are typed, operators *are* "typed"; that is, each operator specifies how it will treat its input machine word(s) and how the machine word(s) of bits it produces should be interpreted. So "+" is (mod 2^wordsize) [unsigned?] integer addition, and "FADR" is floating-point addition with rounding (as opposed to "FADD", which truncates), and so on. So this (legal but non-sensical!) BLISS: x := .y FMPR (.x - 13); would, in C, have to be written roughly like this: ((void*)x) = (void*)((float)(*(void*)y) * (float)((int)(*(void*)x) - 13)); On the PDP-10, at least, both of them would generate this assembler code: move t1, x subi t1, 13 fmpr t1, y movem t1, x So is BLISS "typed" or not? And if so, what is that kind of typing called? -Rob [1] "Basic Language for the Implementation of Systems Software", see <http://en.wikipedia.org/wiki/BLISS>. Created at CMU, added-to by DEC, used by CMU, DEC, and a few others for in the 70's-80's. [2] Well, approximately. A BLISS variable is, conceptually at least, really a "byte-pointer" -- a triple of a word address, a byte-size, and a byte-position-within-word -- even on target architectures other than the DEC PDP-10 [which had hardware byte-pointer types]. The compiler (even on the PDP-10) optimizes away LDB/DPB accesses into natively-addressible load/store sizes, when possible. ----- Rob Warnock <[EMAIL PROTECTED]> 627 26th Avenue <URL:http://rpw3.org/> San Mateo, CA 94403 (650)572-2607 -- http://mail.python.org/mailman/listinfo/python-list