Re: Controlled natural language for program debugging
Before commenting on the recent notes by Jeffrey Schiffel
and the Party of Citizens, I'd like to clarify some
points about controlled natural languages:
1. The term CNL has been used in a variety of ways
for languages that use the basic vocabulary
and syntax of some natural language in a more
controlled or restricted way than usual.
2. The versions of CNLs I have been talking about are
true formal languages, which map to some subset
of first-order logic. In that sense, they can be
considered logical notations that are readable
even by people who have never studied logic.
3. Although CNLs are easier to read than other notations
for logic, authors do require some practice or study
before they can write a CNL. Good editing and help
facilities are important for teaching people how
to stay within the restrictions. Various CNLs have
already proved to be useful for many applications,
but it's not clear exactly which applications are best
suited to CNLs. In general, CNLs have a lot of promise,
but that promise is not likely to be realized without
good tools and a good development environment.
4. In my recent note about CNLs for program debugging, I
pointed to some studies that are being carried out at
Carnegie-Mellon. Those studies are still works in
progress, and I hope that other people will explore
the potential of CNLs for other kinds of applications.
Jeffrey Schiffel said
> ... I'd like to comment on the lack of rigor in the use of
> natural languages throughout the software development life cycle.
It is impossible to use CNLs in a way that is nonrigorous.
> It would be much better if a CNL could be used during the writing of
> requirements. Even if not used to produce code by programming directly
> in CNL, verification of the development process end-to-end through
> traceability studies, product validation via qualification testing,
> and writing accompanying documents like user guides would be enhanced.
> Automated development support tools built around CNL could rely on a
> consistent, closed semantics.
I can foresee a potential problem: it is impossible to use a CNL
until after the semantics has been defined. But during the design
stage, the semantics are still undefined. However, it might be
possible to design tools that can aid users in converting informal
NLs to more formal CNLs. An example of tools designed to help
that transformation is the FactGuru system developed by Doug Skuce
and his colleagues:
http://www.factguru.com
There is still an enormous amount of work that has to be done
in designing good tools, and I don't want to claim that CNLs
will solve all the world's problems without a lot more R & D.
Party of Citizens said
> Any comments on the approach to software taken at
> http://www.care-t.com ?
> Are they trying to achieve the same objective?
I took a look at some of their whitepapers, and they do
not seem to be using CNLs. They are developing conceptual
modeling tools, which might be usefully commbined with
CNLs. In fact, one way to use a CNL is for the *output*
stage: after a system designer had specified a conceptual
model, the tools could automatically generate a complete
specification in a CNL, which the manager who requested
the design is more likely to read than other notations.
John Sowa