Types in Programming Languages, between Modelling, Abstraction, and Correctness - Inria - Institut national de recherche en sciences et technologies du numérique Access content directly
Conference Papers Year : 2016

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


The 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.
Fichier principal
Vignette du fichier
Cie-revised.pdf (144.69 Ko) Télécharger le fichier
Origin : Files produced by the author(s)

Dates and versions

hal-01335657 , version 1 (22-06-2016)


  • HAL Id : hal-01335657 , version 1


Simone Martini. Types in Programming Languages, between Modelling, Abstraction, and Correctness. Computability in Europe, CiE 2016: Pursuit of the Universal, Jun 2016, Paris, France. ⟨hal-01335657⟩
220 View
315 Download


Gmail Facebook X LinkedIn More