[e-lang] Skeptical words about formalization (was: Security is the Turning Point?)

Mark Miller markm at cs.jhu.edu
Thu Jul 7 18:42:45 EDT 2005


Peter Van Roy wrote:
> According to John Allen [...] force software engineering to become a real
> engineering discipline instead of a hacker's paradise [...] formal semantics

I've been hearing this tune since I first got into computer science in 1975, 
though the supposed forcing function keeps changing. I just recently reread 
Dijkstra's 1972 Turing Award Lecture, in which he says the same thing, but 
cites reliability and software development cost rather than security. Further, 
he predicts that the formal methods revolution is just a small number of years 
away, and that expensive unreliable software will shortly be a thing of the past.

I also just read for the first time Knuth's Turing award lecture, about why he 
called his planned seven volume series "The *Art* of Computer Programming" 
rather than "science" or "engineering". In it, he explores the history of 
these categories over several centuries of human thought. The boundaries we 
currently draw between these categories are not given, and there are many 
other plausible ways of taxonomizing human activities of exploring and building.

Having come back to school after many years in industry, I'm impressed by how 
much formal methods have advanced, and how many more problems formal methods 
have now been successfully applied to. However, every small advance provokes a 
new flowering of optimism that we're finally beyond the difficulties of the 
past, and that the formal methods revolution is now, finally, this time, just 
around the corner.

The formal methods revolution that has occurred is in the domain of academic 
publication.

As more people enter the field, more people submit more papers in order to go 
after increasingly scarce of top journals and academic positions. When demand 
goes up faster than supply, some form of "price" bar must be raised until 
accepted demand meets supply. Ideally, in academia, this "price" should be 
quality of the ideas, and what a wonderful field our's would be if the quality 
of ideas being published kept going up. However, judging quality of ideas is 
hard. It's much easier to raise the formalism bar -- to add more formalism 
hoops that papers need to jump through, just because fewer people are able to 
do it. IMO, economics was destroyed by this same process, starting some 50 
years earlier. Fortunately, economics is now starting to recover, so perhaps 
someday our field may too.

Of course, formalism itself is quite valuable in both fields. None of what I'm 
saying should be taken to imply otherwise. But it's easy to overestimate its 
value, and it's especially easy to allow degree-of-formalism to displace other 
often-more-appropriate metrics of quality.


> So where is the formal semantics of E?

A start at an attempt can be found at 
<http://www.erights.org/e-impls/e-on-isabelle/Min_E.thy>. Having gone through 
this exercise, I find it did not at all contribute to my understanding of 
Kernel-E. Kevin Reid and Dean Tribble are both re-implementing Kernel-E. I 
would not recommend that they or anyone refer to this document to help clarify 
their questions about the definition of Kernel-E.

Rather, the existing Java implementation is slow largely because it's heart is 
written to read like an executable specification of the semantics of Kernel-E. 
Programming languages are, in some ways, good formalisms to express the 
semantics of other programming languages.


> Where is the kernel
> language of E?  Trying to define such a kernel language
> will point out lots of little problems, I'm sure of it!

The stale documentation that exists is at 
<http://www.erights.org/elang/kernel/index.html>. The heart of the Kernel-E 
implementation-as-executable-specification is in the "subEval" methods 
implemented by subclasses of EExpr, and "testMatch" methods implemented by 
subclasses of Pattern. Obviously, this state of affairs is intolerably ad-hoc. 
However, at this stage, I think we could all benefit much more from careful 
Guy-Steele-like technical documentation of Kernel-E's semantics -- together 
with a rationale! -- than we would from bringing the above Isabelle theory 
file to completion.

-- 
Text by me above is hereby placed in the public domain

     Cheers,
     --MarkM



More information about the e-lang mailing list