A revolutionary OS/Programming Idea
Lynn H. Maxson
Lynn H. Maxson" <lmaxson@pacbell.net
Sat Oct 4 07:14:02 2003
John Newman writes:
"...From what I gather from these ideas, each and every
object, every construct down to the somewhat lowest
level of the most basic procedures, should have its
own signature--something like a hash value. ..."
Firstly, if you pursue your quest further on the tunes mailing
list, you had best become LISP friendly. Almost no respect
exists here for C++. More likely you should pay some
attention to Scheme and Maude, LISP derivatives.
Secondly, I don't suggest using a hash value, but a naming
convention using two parts, one a content-based value on the
first X characters in the statement (say 16) and the other a
32-bit index value appended to the first part. The difficult
task of maintaining names must account for synonyms (same
referent, different names) and homonyms (different referents,
same name). This particular naming convention deals with
resolving homonyms with a side-effect of providing builtin
version control for every name.
The data repository only stores two forms of source, data
element declarations (primitive referents) and source
statements (references). These represent the "raw material"
from which we construct all higher level assemblies. These
higher level assemblies, data and statement aggegrates, exist
only as ordered lists of names of "raw material" and
assemblies. This processes everything as part of a pure BOM
(Bill Of Material) manufacturing system, allowing for every
name to answer two questions: "What is this a part of?" and
"What are the parts of this?"
If you implement this within a relational database, the
software tool can use SQL to automatically maintain the two
source forms, data elements and statement, as well as all
assemblies (ordered list of names) thereof. If you extend this
further to include source text as well as source code, you
now have an automated basis for "literate programming", of
associating formal with informal descriptions.
Thirdly, we probably mean different things when we say "file
system". When I look at your representations I think "vectors"
as a contiguous space representation of a set of values. I
imagine the LISP people think lists as a logically contiguous
but possibly physically discontiguous set of values.
Fourthly, syntax results in a body of rules for the
decomposition of strings of values. That says you have rules
for what constitutes a "string" and rules for discriminating the
values within the string. We skip over the syntax we have for
the rules themselves, not recognizing that these in turn must
appear as strings with values themselves.
The question ultimately comes down to whether or not there
exists one syntax which we can not only use to define any
other but also itself. Historically we have used a two
language approach, the programming language and the BNF
(Backus-Naur Form), translating the latter in terms of the
former. A "true" specification (and thus programming)
language would be self-reflexive, thus self-defining and
self-extensible.