9 research outputs found

    Foundations of Object-Oriented Languages

    Get PDF
    A report on the workshop Foundations of Object-Oriented Languages, Paris, July 1994

    A Step-indexed Semantics of Imperative Objects

    Full text link
    Step-indexed semantic interpretations of types were proposed as an alternative to purely syntactic proofs of type safety using subject reduction. The types are interpreted as sets of values indexed by the number of computation steps for which these values are guaranteed to behave like proper elements of the type. Building on work by Ahmed, Appel and others, we introduce a step-indexed semantics for the imperative object calculus of Abadi and Cardelli. Providing a semantic account of this calculus using more `traditional', domain-theoretic approaches has proved challenging due to the combination of dynamically allocated objects, higher-order store, and an expressive type system. Here we show that, using step-indexing, one can interpret a rich type discipline with object types, subtyping, recursive and bounded quantified types in the presence of state

    Java is type safe -- probably

    Get PDF
    Amidst rocketing numbers of enthusiastic Java programmers and internet applet users, there is growing concern about the security of executing Java code produced by external, unknown sources. Rather than waiting to find out empirically what damage Java programs do, we aim to examine first the language and then the environment, looking for points of weakness. A proof of the soundness of the Java type system is a first, necessary step towards demonstrating which Java programs won't compromise computer security. We consider a type safe subset of Java describing primitive types, classes, inheritance, instance variables and methods, interfaces, shadowing, dynamic method binding, object creation, null and arrays. We argue that for this subset the type system is sound, by proving that program execution preserves the types, up to subclasses/subinterfaces

    Types in Programming Languages, between Modelling, Abstraction, and Correctness

    Get PDF
    International audienceThe notion of type to designate a class of values, and the operations on those values, is a central feature of any modern programming language. In fact, we keep calling them programming languages, but the part of a modern language devoted to the actual specification of the control flow (that is, programming stricto sensu) is only a fraction of the language itself, and two different languages are not much apart under that perspective. What ``makes a language'' are much more its modelling capabilities to describe complex relations between portions of code and between data. In a word, the central part of a language is made by the abstraction mechanisms it provides to model its application domain(s), all issues the language theorist may well group together in the type chapter of a language definition.The conquest of the summit by the notion of type is the result of a rather slow process in the history of programming languages. In a previous paper we have sketched some of the earliest history, observing that the concept of type we understand nowadays is not the same it was perceived in the sixties, and that it was largely absent (as such) in the programming languages of the fifties. While the technical term ``type'' arrives on the scene at the end of the fifties (for sure in the report on Algol 58, the use of types as a modelling tool for the ``objects of the real world'' is the contribution of the sixties (in particular under the influence of McCarthy and Hoare), which will materialize in languages like Algol W or Pascal. Moreover, we observed in that the notion of ``type'' of programming languages, which we now conflate with the concept of the same name of mathematical logic, is instead relatively independent from the logical tradition, until the Curry-Howard isomorphism will make an explicit bridge between them. The connection between these two concepts remains anonymous for a long time---some of the people knew very well the other field, and it is certain that, from mid sixties, the mathematical logic work started influencing programming languages (we think, among other, to Landin, Scott, Strachey, Hoare, McCarthy, Morris etc.). But there is no explicit, mutual recognition---concepts and formal systems are systematically re-discovered in the two fields. The first explicit connection we know of, in a non technical, but explicit, way is.The present paper will elaborate on this story, focusing on that fundamental period covering the seventies and the early eighties. It is there that the types become the cornerstone of the programming language design, passing first from the abstract data type (ADT) movement and blossoming then into the object-oriented paradigm. This will also be the occasion to reflect on how it could have been possible that a concept like ADTs, with its clear mathematical semantics, neat syntax, and straightforward implementation, could have given way to objects, a lot dirtier from any perspective the language theorist may take

    A theory of primitive objects

    Full text link

    An imperative object calculus

    Full text link
    corecore