SCOUG-Programming Mailing List Archives
Return to [ 02 | 
January | 
2004 ]
<< Previous Message << 
 >> Next Message >>
 
 
 
Content Type:   text/plain 
Peter Skye wrote:  
"The difficulty here comes when someone wants to read and   
understand the specs, Lynn.  Things need to be organized so   
they can be understood.   Can you imagine studying chemistry   
and not learning the table of elements until three semesters   
on? ..."  
 
Peter,  
 
We live in different universes.  You live in one in which you   
can always predict change;I, in one in which change often   
occurs unpredictably, in fact randomly.  I have two things that   
I need to accomplish.  One, I need to insure that I have   
specified a change correctly.  Two, I need to insure how this   
change works within its set of associated specifications.  
 
The first only I can do, correctly or otherwise.  Correctly or   
otherwise it remains my responsibility.  The second I leave up   
to the software to determine the optimal, logical organization   
of the source.  This means at the end of the process I have   
two sources of equivalent content for viewing.  
 
The software has no concern if a change or set of changes   
impacts an existing logical organization.  It doesn't use the   
currently logical organization as source input, which   
imperative languages require you to do.  It simply generates a   
new logical organization.  It does it hundreds and perhaps   
thousands of times faster than it takes you to alter a single   
logical path in an existing logical organization.  It regenerates   
from scratch, from unordered specs, where you must rewrite.  
 
"...I'm serious here.  There's the engineer who makes the   
theoretical (which is quite organized) and makes it practical.    
There is the scientist who takes random pattern-matches and   
creates a concept (which is organized).  Then there are the   
weed-smoking, pill-popping artists who are all tangentially   
connected to Haight-Ashbury and can't even get organized   
enough to buy groceries at 7-11.  
 
Which camp are you in?"  
 
I'm in the camp of the division of labor where I do what the   
software cannot, i.e. write specifications, and it does what I   
need not, i.e. analysis, design, construction, and testing.  It   
doesn't do anything that I cannot view, follow, or understand.    
It produces a global logical organization without concern for   
how many times it gets tossed and regenerated from scratch.    
It does it in less time than I can write a single statement.  
 
The point is I can write a single specification once regardless   
of the number of instances it occurs reused in the optimized   
logical organization.  That says I only have to modify a single   
source, submit it to have all use instances occur.  I can choose   
to have it occur once invoked repeatedly as a subroutine or   
have it replicated in each use instance or through   
meta-programming, again written as a specification, any   
mixture of each.  
 
While I can only speak to my experience I don't know of any   
imperative language implementation which allows this   
flexibility.  It's builtin to declarative language implementations.    
It's what occurs as part of the completeness proof.  It's part of   
the compilation/interpretive process.  I have at another time in   
another thread suggested that you could make it work for   
imperative languages by making changes to the   
implementation without having to change the language.  
 
Logic programming uses a two-stage proof engine.  Nothing   
prevents an imperative language implementation from doing   
the same.  In that manner we could take advantage of   
people's ability to write error-free code in the small in   
conjunction of software to do the same in the large.  It simply   
means not requiring a programmer to perform global logical   
organization prior to submitting for a compile.  
 
This means that you can have named reusable code segments   
from the statement level up through any sequence of control   
structures up to a procedural level.  Any reusable code at any   
level can have reuse instances within any other including   
across multiple procedures.  By implication it means that you   
can input multiple "main" procedures into one compile as a   
single unit of work producing multiple output executables.  
 
You can do this by modifying the existing GCC compiler if you   
so choose with all the benefits of doing so.  You don't have to   
wait for SL/I.  It's not an SL/I-specific thing.  It's a logic   
programming thing that doesn't care if its input source is   
imperative or declarative or a mixture of both.  
 
 
 
 
=====================================================  
 
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 [ 02 | 
January | 
2004 ] 
  
  
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.
 
 |