Daniel Ross introduction

Tril dem@tunes.org
Wed, 26 Apr 2000 00:34:15 -0700 (PDT)


Hi this is Tril, the list admin.  I am posting these two messages to the
list on the behalf of Daniel Ross.  I have taken the liberty of formatting
them nicely.  Enjoy!

From: "Daniel Ross" <danross@acm.org>
To: <review@tunes.org>
Subject: Hello, all
Date: Mon, 24 Apr 2000 19:16:42 -0700

I'm new to TUNES, and I am making the arrogant move of posting before 
reading everything.  Please forgive my audacity.

I suggest an alternative approach to the language issue.  Do not attempt 
to define a single underlying language.  Instead, pick some problem or 
application area, think really hard about how to implement the 
application, and describe the implementation as abstractly as possible.  
Invent whatever language conventions or formalities are best suited to 
the abstract description of the solution of this particular application, 
without worrying about generalizing to other applications.  Then pick 
some construct in the language you have created, and treat it as an 
application, and apply the process recursively.  What you wind up with 
is a multiplicity of languages, each one tailored to its specific 
application.  Abstraction has been maintained as much as possible, so 
comprehension of the goals to be achieved is not obscured by 
implementation details.  (Incidentally, that is my objection to all 
current object-oriented languages ... the classes and methods still are 
described in languages cluttered with implementation details, such as 
C++.)  The translation of what you have written will not have one single 
binding time from high level to low level.  Instead there will be a 
multiplicity of binding times, as abstractions are incrementally made 
more concrete.  Eventually in the progression of stating implementations 
of simpler and simpler constructs, the implementation will be so simple 
that it reasonably can be coded in some standard language which already 
has been implemented by somebody else.  That terminates the recursive 
simplification for that particular construct.  When all recursive 
construct simplifications have been thus terminated, you have the code 
to implement the original application.

Summary of concepts:

    Maintain abstraction as long as possible

    Multiplicity of specialized languages, many created for just 1
application without attempting generality, and containing only enough
constructs to solve the problem immediately at hand

    Recursive simplification, each step as small as possible in order to
maintain abstraction as long as possible while still making some progress
toward a concrete implementation

    Multiplicity of binding times

    The more abstract representations are the data for their immediate
recursive simplifications.  The distinction between code and data blurs,
or disappears altogether.  Eliminate the old computer science maxim of
cleanly separating code and data.  It is wrong when the "code" is
sufficiently abstract.  It is correct only when the "code" is cluttered
with implementation details that obscure the underlying algorithm. 


From: "Daniel Ross" <danross@acm.org>
To: <review@tunes.org>
Subject: elaboration
Date: Tue, 25 Apr 2000 01:31:25 -0700

I think I should elaborate just a bit on what I am proposing.

The conventional approach to language design is to create an underlying 
language with enough capability for extension to satisfy all anticipated 
future needs.  Whatever decisions are made at the outset, will limit 
generality of expression for the entire lifetime of the project.

I suggest starting by describing just what is needed, and no more, to 
implement each application as it arises, freely inventing language in 
which to state that description.  Gradually work your way from the 
abstract to the concrete by recursively applying this approach.  
Eventually terminate the recursion by describing in a previously 
existing, implemented language (or languages).

I owe this approach to William M. McKeeman, although he may not 
recognize or agree with my modification of his ideas.