I say this somewhat facetiously as a major difference between  
third and fourth generation HLLs lies in who does the analysis,  
design, and construction.  In third generation languages we  
perform these stages manually.  In fourth generation the  
software performs them. 
Now if you understand the principle of logical equivalence,  
then the specifications contain the necessary and sufficient  
information while analysis, design, and construction represent  
different logically equivalent forms of the same information.  I  
tried also to illustrate that using the predicate logic option of  
logic programming (the basis of fourth generation languages)  
you can specify ranges of data values, leaving it up to the  
software as part of its exhaustive true/false proof to  
automatically generate the test data. 
So if you only have five stages--specification, analysis,  
design, construction, and testing--and you can relegate four  
of them to software, that logically implies their clerical  
nature.  That's the penalty we pay when mired in third  
generation mode with C, C++, JAVA, Python, Perl, and  
whatever else you fish out of this pot. 
That leaves only specification as the creative (non-clerical)  
task which requires people to do what software cannot.  Once  
done the software takes over.  That leaves us with only two  
written input forms, one, the text of the user requirements,  
and, two, their translation into formal specifications.  Literate  
programming offers us a means not only to associate the two  
forms but also ease the task of keeping them in sync. 
Now how many tools do we need to write text or code?  Do  
we need two editors or can we do equally well with only  
one?  What's the best filet knife when we base both, easily  
discernable forms in ascii text?  Why have two when they  
can't do more (or better) than one? 
So you develop an "extra-smart" editor which lets you do  
your creative thing on input while it does its clerical thing on  
output.  Just because its clerical thing executes a seamless  
sequence of activities producing the various outputs along the  
way doesn't mean it has to compromise on any activity.  Thus  
its analogy to a Swiss Army knife or any other such  
multi-purpose tool falls way off the mark. 
A multi-purpose tool in hardware may have to compromise its  
function due to physical constraints.  It doesn't apply to  
software which we base 100% in logic within the physical  
constraints of the host system.  We have only three such  
physical constraints with respect to software: storage  
(internal and external), channels (i-o), and processor.   
Today's technology brings all of these in excess of any  
physical needs in executing software. 
I don't engage in speculation about how fourth generation  
languages work.  SQL executed tens of millions of times daily  
works that way.  I didn't invent it.  I don't make it up. 
It doesn't violate or modify the software development process  
in any manner.  It simply shifts who, people or software, does  
what.  It allows people to do less and software more.  No  
matter how you cut it that increases productivity.   
===================================================== 
To unsubscribe from this list, send an email message 
to "steward@scoug.com". In the body of the message, 
put the command "unsubscribe scoug-programming". 
For problems, contact the list owner at 
"rollin@scoug.com". 
===================================================== 
<< Previous Message << 
 >> Next Message >>
Return to [ 01 | 
April | 
2003 ]
The Southern California OS/2 User Group
P.O. Box 26904
Santa Ana, CA  92799-6904, USA
Copyright 2001 the Southern California OS/2 User Group.  ALL RIGHTS 
RESERVED. 
SCOUG, Warp Expo West, and Warpfest are trademarks of the Southern California OS/2 User Group.
OS/2, Workplace Shell, and IBM are registered trademarks of International 
Business Machines Corporation.
All other trademarks remain the property of their respective owners.