New paper: Theory of Programs






Programming, wrote Dijkstra many years ago, is a branch of applied mathematics. That is only half of the picture: the other half is engineering, and this dual nature of programming is part of its attraction. Descriptions of the mathematical side are generally, in my view, too complicated. This article [1] presents a mathematical theory of … Read more




Framing the frame problem (new paper)






Among the open problems of verification, particularly the verification of object-oriented programs, one of the most vexing is framing: how to specify and verify what programs element do not change. Continuing previous work, this article presents a “double frame inference” method, automatic on both sides the specification and verification sides. There is no need to … Read more




A gold medal






The French National Research Center (CNRS) has just awarded [1] its annual gold medal to Gérard Berry, a great recognition for an outstanding computer scientist. I first discovered Berry’s work through a brilliant 1976 article, Bottom-Up Computation of Recursive Programs [2], which explained recursion using methods of denotational semantics, and should really figure in collections … Read more




Programming language features






  InfoWorld is currently publishing a series of programming language assessments: 9 Things We Hate About Objective-C, 4 June. 15 Things We Hate About Java, 6 March. 10 Features Apple Stole for the Swift Programming Language, 9 June. Notable in these articles is what they do not mention: Eiffel has most of what the author … Read more




Code matters






(Adapted from an article previously published on the CACM blog.) Often, you will be told that programming languages do not matter much. What actually matters more is not clear; maybe tools, maybe methodology, maybe process. It is a pretty general rule that people arguing that language does not matter are defending bad languages. Let us … Read more




New article: passive processors






  The SCOOP concurrency model has a clear division of objects into “regions”, improving the clarity and reliability of concurrent programs by establishing a close correspondence between the object structure and the process structure. Each region has an associated “processor”, which executes operations on the region’s objects. A literal application of this rule implies, however, … Read more




Eiffel as an expression language






A functional-programming style, or more generally a style involving more expressions and fewer instructions, is possible in Eiffel. In particular, Eiffel’s agent mechanism embeds a full functional-programming mechanism in the object-oriented framework of the language. To make the notations simpler, we are discussing and tentatively implementing a number of proposed extensions. They involve no fundamental … Read more




Negative variables: new version






I have mentioned this paper before (see the earlier blog entry here) but it is now going to be published [1] and has been significantly revised, both to take referee comments into account and because we found better ways to present the concepts. We have  endeavored to explain better than in the draft why the … Read more




Niklaus Wirth birthday symposium, 20 February, Zurich






In honor of Niklaus Wirth’s 80-th birthday we are organizing a symposium at ETH on February 20, 2014. This is a full-day event with invited talks by: Vint Cerf Hans Eberlé Michael Franz me Carroll Morgan Martin Odersky Clemens Szyperski Niklaus Wirth himself From the symposium’s web page: Niklaus Wirth was a Professor of Computer … Read more