ALP Election 2008: John Gallagher
|
Professor, Department of Computer Science, University of Roskilde, Denmark (November 2002 - present).
Formerly (1990-2002) Department of Computer Science, University of Bristol, UK;
(1989) K.U. Leuven, Belgium; (1987-1989) Weizmann Institute, Israel; (1984-1987) SCS GmbH Hamburg, Germany; (1976-1984) Trinity College Dublin, Ireland.
|
Short CV
Active Research
Program specialization, static analysis, verification, meta-programming.
Recent research focuses on:
-
Precise type inference methods: Abstract domain of nondeterministic tree automata. Deriving pre-interpretations from tree automata. Deriving polymorphic well-typings of programs.
-
Backwards analysis: Deriving conditions on an initial goal that guarantee that given properties hold at run-time.
-
Program specialization with abstractions: Combining abstract interpretation (using convex hulls and regular trees) with program specialization.
-
CLP to implement semantics: Tools developed for CLP can be applied to other formalisms by implementing their semantics in CLP.
From 2002-2006 I collaborated with partners in Madrid, Southampton, Bristol and Düsseldorf in the
EU Framework 5 ASAP project, in which CLP techniques for analysis and specialisation were applied to developing pervasive system software. Currently I am running a Danish Research Council project called
SAFT (Static Analysis with Finite Tree Automata).
Entries in the DBLP bibliography
Logic Programming and Computing
It's an honour to be nominated to be invited to stand for the ALP Executive Committee. Over the last 25 years or more logic programming has been at the centre of my research. I have been involved with logic programming since 1979 when I was a PhD student in Trinity College Dublin. I requested a tape of Edinburgh Prolog for the DEC-20 from David H.D. Warren. Originally a LISP enthusiast, I was interested in automated reasoning and program synthesis and had thought of using Prolog for some logical tasks. Quite soon I found that I preferred using Prolog for practically every programming task.
What are and are not the selling points of LP?
I have often asked myself since then what is the main selling point of logic programming. I've always believed that the insight embodied by logic programming, that logical deduction is computation, will lead to powerful program generation and analysis tools that will consign today's programming techniques to the history books. But this dream is taking a long time to come true and there is still much research to do to understand fully and exploit the connections between semantics, computation models, data models, constraints, knowledge representation and verification that logic programming opens up.
Logic programming languages may possibly offer some advantage in programmer productivity and program reliability - this is certainly true for me - but it is probably impossible to give any objective proof of this. One reason is that the difference in productivity between individual programmers is much greater than the potential gains from a particular programming language.
The same goes for writing correct programs. The most complex thing about any non-trivial application is the application domain itself, not the programming language it is coded in. So I don't really believe (though I'd like to) that a hand-written logic program for a complex application has a much greater chance of being correct than a C program.
What can ALP do?
I'd like to see a thriving logic programming community producing tools and applications in a wide range of domains. These are important demonstrators to the programming language community and wider computing world. There is a lot more we could do to build up libraries of code and applications and make them portable among different Prologs; the ALP should support and promote such initiatives.
One particular idea that could promote logic programming is a library of student project resources. Unfortunately logic programming is not so widely taught in undergraduate computing curricula as 10 years ago, but many more students could be encouraged to choose projects in CLP if they could see examples of the kind of thing that they could build and find plenty of resources.
But selling CLP as a programming languages is only part of the challenge. ALP should especially encourage efforts in those areas where where "logic" is central and so logic programming can be expected to have a demonstrable advantage over other languages. Being able to reason about logic programs is one such area; executing logical specifications is another. We have always said that logic programming is "good" for this kind of thing, but can we back up such claims with real evidence? There is also great scope for using CLP as a computational meta-language for analysis, generation and coordination of systems in many other languages, in the way that temporal logic and Datalog already are used to some extent.
Finally we need to play a much bigger role in the computational logic community and ensure that logic programming retains a strong connection with logic in computer science generally. The colocation of ICLP with FLoC in 2006 and with CP in 2005 were very positive moves in this respect and the ALP should continue to seek collaborations of this kind.
John Gallagher,
jpg@ruc.dk