The Semantics of Ugo Montanari - Turini, Franco (Concurrency, Graphs and Models, 2008)
The first time I met Ugo Montanari, he had no beard. It was 1970 and I was a student attending the third year of a master degree in computer science at the University of Pisa (“Laurea in Scienze dell’informazione”) and he had just come back from the States and had been given the job of teaching a course on System theory. The subject was very oriented towards classical theoretical engineering, not very much to do with computer science and programming. I thought his teaching style was great, as was the way he was able to demystify complex concepts. However, I was not particularly impressed by the subject. The following year was my fourth and last year, and, when I looked at the list of courses available, I discovered that Ugo Montanari would be teaching the course on Methods in Information Processing (“Metodi per il trattamento della informazione”). Montanari had planned to teach the most important theoretical foundations of computer science: formal languages, computability theory, and the semantics of programming languages. In the US, formal languages and computability theory were already an integral part of any computer science course. But not so in Italy. In fact my course in Pisa was the first of its kind. And the idea of including semantics of programming languages as the third leg of the theoretical corpus of computer science was really a leap into the future, almost visionary. I remember that the learning material was a paper by Johnston [2] presenting the so-called contour model, which was an initial attempt to formalize the operational semantics of a programming language. That course impressed me more than any other in the entire curriculum. Needless to say, I asked Montanari to be my supervisor for my Master’s thesis. I wrote a thesis on the semantics of nondeterministic languages, mostly inspired by the contour model, in which I tried to extend the stack-based computation model to handle nondeterministic computations and the need to handle efficiently state saving and recovery. The first ideas developed at that time have subsequently kept me busy working for many years [3,4,5]. Imagine my pleasure when in 1990 I was given the possibility of teaching a course on Methods in information processing in parallel with a course taught by Montanari. There were still three subjects: formal languages, computability and formal semantics of programming languages. In the meanwhile much research had been done in the third area. Scott and Strachey had laid down the foundations of denotational semantics, and a few books on this subject had been published. Montanari and I decided to follow Gordon’s book [1] which went down very well with our students. A few years later the teaching of computer science in Italy was redesigned. Courses with a coverage as large as Methods in Information Processing were replaced by shorter courses. A course on Semantics of programming languages was introduced, and Montanari and I taught it in two parallel courses. We taught both operational and denotational semantics and their relationships, and even some elements of semantics of parallel programming languages. We had a good English book [6] translated for us to use. However I was again impressed by Ugo’s desire to improve the teaching, by looking for more elegant proofs of the theorems and a smoother flowing of the results. Well, today Ugo Monatanari and I teach different courses, but I am ready to start tomorrow to design and prepare a new course with him. As has always been in the past, I bet that it would be another highly rewarding experience for me. Finally, let me thank the editors of this book for offering me the opportunity to express my appreciation to someone who really deserves the title of “maestro”.