Abstract :
Traditional computer languages are all ultimately based on mathematical logic, which, after all, is the foundation of practically all of modern mathematics. This is a natural outcome of the initial algorithmically-oriented applications of electronic computing machines and is even revealed in how we´ve chosen to name these devices (i.e., "computers"). One obvious aspect of this is reflected in the fact that values in programs are typically represented by "logical" data types, such as integers, reals, or strings, which are quite intentionally shorn of any physical connotations. Consequently, in cases where such data is intended to represent relevant physical quantities, such as length or communication bandwidth, the association with the corresponding physical dimensions is typically informal, through convention. This has led to some catastrophic and expensive failures, such as the case of the unfortunate Mars Lander spacecraft, which was attributed to an undetected mismatch between metric and imperial systems measures. The informal nature of the association between values expressed in programs and their corresponding physical dimensions can also greatly complicate proper verification of such software. Whereas a great deal of effort has been expended in evolving various type theories for computer languages in order to avoid mismatches between "pure" data types, very little has been done to help us with problems with "physical" data types. In the past, this was perceived as a concern primarily for the relatively specialized field of real-time computing. However, as more and more software involves interactions with the physical world, this deficiency is becoming more obvious, more pervasisve, and more critical. Thus, with the growth of the Internet, many modern software systems are physically distributed and, consequently, highly sensitive to physical phenomena, such as communication delays, equipment failures, out-of-sequence events, and the like. In other words, more and more software is becoming "real-time". In this talk, we focus on the issues involved in the somewhat contradictory relationship between the orderly logical world of traditional software and the complex and sometimes unpredictable physical world with which it interacts. Specifically, we look at how computer languages should be constructed to deal more effectively with this complex combination.