On Tunes infrastructure

Lynn H. Maxson Lynn H. Maxson" <lmaxson@pacbell.net
Sun Jun 1 07:56:02 2003


James Michael DuPont writes:
"I see that the issue here is the one of a programmable 
system that is available from gui at any point in the TUNEs 
system. An access point so to say. ..."

Again full apologies to Fare for the inappropriateness of this 
response in this mailing list.  As I exist in a connected universe 
I find that all roads eventually lead to where I am going.<g>

We can  increase our productivity and the scale of our effort 
through the use of software tools.  If our source operates as a 
cause, delays in receiving effects decrease our productivity.  
Thus for maximum productivity we should prefer an 
interactive, integrated, and interpretive GUI tool over any form 
of an IDE using batch-oriented (and thus time-delayed) 
components.

You have four functions in the processing of source in any 
programming language: syntax analysis, semantic analysis, 
proof theory, and meta theory.  See "Simply Logical: 
Intelligent Reasoning by Example" by Peter Flach.  Third 
generation (imperative) languages differ from fourth 
(declarative) only in the proof theory involved.  Third 
generation proof theory only involves machine code 
generation, while fourth encompasses a completeness proof 
with backtracking, machine code generation, and an 
exhaustive true/false proof.  Thus fourth generation includes 
third as a proper subset.

In the "classical" software development cycle which begins 
with user requirements as input we have five stages: 
specification, analysis, design, construction, and testing.  Third 
(and previous) generation languages force us to pursue each 
stage using manual methods (writing or drawing) assisted 
where possible by software tools.  Fourth generation 
languages through their two-stage logic engine (completeness 
and exhaustive true/false proofs) reduce the manual writing 
to a single stage, specification, automating the remaining in 
the software.

Thus we should recognize the continued use of third 
generation languages (C, C++, JAVA, Perl, Python, Lisp, etc.) 
as "counter-productive".  At the very least continued use 
should adopt the two-stage logic engine of fourth generation 
in our software tools, which themselves should function 
interpretively with an option of compiled output.

Natural language includes both formal and informal usage.  
Hardware and software, both based 100% on formal language, 
i.e. formal logic, constraints, have no basis in informal usage.  
In every instance we have to translate the informal to formal 
form.  Thus our language need only formal constraints.  To 
include informal, thus spending increased time answering 
questions, becomes counter-productive.  We have enough 
questions to resolve about ambiguities iteratively in the formal 
form.

In reality we have no need for the software to ask us 
questions.  We need it only to dynamically present us visually 
in text and graphical form the "effects" of our "causes", our 
source specifications.  These effects result from the syntax 
and semantic analysis as well as the completeness proof 
performed by the software.  So the GUI interface exists not 
only to allow our input (the cause), but to also produce all 
the desired outputs (the effects).  The effects will show how 
complete or incomplete the source as well as any ambiguities 
which remain.  The resolution of remaining ambiguities or 
incompleteness lies only in writing (or rewriting) 
specifications.

The principle of "logical equivalence" between two forms 
does not say that they are "identical", only that one can be 
used to create at least a part of the other.  This allows for a 
reversal of historical roles.  For example, initially flowcharting 
preceded writing source, where today it follows it.  That says 
that the same could occur with the different forms of UML: 
that the software could produce all of them from a single 
source, the specifications or "cause".

This approach differs "operationally" but not "conceptually" 
from the "introspector" supported by James Michael DuPont.  
It uses only one specification language, which by being 
self-defining becomes self-extensible, and one software tool.  
It short it is a universal specification language, i.e. capable of 
specifying itself, covering all of formal logic.  It combines 
features of LISP, APL, and PL/I with fourth generation 
capabilities.  For reasons not clear to me PL/I does not appear 
on the tunes language list though for 39 years now it has 
been the most complete and powerful programming language 
available.<g>

As a final note programs cannot modify themselves in ways 
other than predefined by the logic of the authors.  In short 
they cannot and do not arbitrarily modify themselves 
according to any other logic, specifically "their" own.