Most of my programming experience is in either C or assembly language, and a good portion on embedded devices. Recently at my job I have been learning perl, which is obviously an entirely different animal. I find it particularly interesting coming from this background to look at the different data types- In assembly, there really are no data types but only the hardware, in C, the data types are basically just abstractions of the hardware (pointers, arrays, etc). But perl has all kinds of things like typeglobs, and hashes and references (which still strike me as the english major's version of a pointer), which are far more abstracted. The hardware is doing the same things as always, but the model of the computer portrayed by the language is much different.