[net.unix-wizards] Avl

wje@sii.UUCP (Bill Ezell) (10/07/83)

b
I noticed a reference to AVL in the article 'Re: TOPS-20 --> UNIX'.
I thought that I would provide a little more information about it.

AVL is a structured language that looks very much like C in syntax
but has a completely different view of data structuring and manipulation.
There are no explicit declarations in AVL; data is interpreted automatically
as either string or numeric, depending upon use. The basic datatype
is an arbitrarily subscripted array of strings (actually a tree):

	a[1,"foo","Third subscript",...]

Not only are the subscripts arbitrary strings, but each node in the
array can have a value.  All storage is dynamically allocated,
nothing needs to be predefined.

Additionally, data may be either in memory, as in the example above,
or it may reside on the disk, as in MUMPS:

	^a

is a disk variable. Note that if you pass a variable to a function,
the function cannot tell the difference between a transient, in-memory
variable or a permanent disk variable.

There are many tree walking functions built into AVL to allow easy
manipulation of the arrays.

AVL provides the usual arithmetic operators, plus a concatenation
operator, and an aggregate assignment (tree copy) operator. The
relational operators have been extended to provide either numeric
or string relations; a == b is a numeric comparison, a $== b is
a string comparison. Regardlesss of the current contents of a and b,
the data is coerced into whatever is specified by the operator.

Aside from the basics, there are lots of other interesting features,
such as dynamic linking and unlinking of functions, a very
flexible indirection operator, access restrictions enforced on a
per variable basis, an interactive debugger, plus much more.

If anyone wants more information, contact me and I'll send you a
copy of a paper that includes a formal specification of AVL.

	Bill Ezell
	Software Innovations, Inc.
	(ittvax!sii!wje, decvax!sii!wje)

thomas@utah-gr.UUCP (Spencer W. Thomas) (10/12/83)

At the risk of being flamed at for flaming, I would like to make one
comment about the AVL language (which I have never used, but I think the
comment is appropriate, anyway).

As I recently pointed out to my intro CS class, automatic (implicit)
declarations are DANGEROUS.  They make it VERY EASY to write buggy code,
as anybody who has written much Fortran (God help them) will know.  A
simple spelling error can screw up your whole program.  Requiring
variable declarations is a VERY GOOD THING, which is why all "modern"
languages have them.

=Spencer

mem@sii.UUCP (Mark Mallett) (10/13/83)

b

       As I recently pointed out to my intro CS class, automatic (implicit)
       declarations are DANGEROUS.  They make it VERY EASY to write buggy code,
       as anybody who has written much Fortran (God help them) will know. 

                                                     =Spencer


The Fortran language may be a bit of a pain (a bit! yes, I've written a
lot of it, God help me).  But it is kind of nice to use a compiler that
tells you a lot about what it thinks it is doing.  If I can remember back
to Fortran days; I recall that when opening the program listing (imagine
that, a compiler producing a listing?) (no sarcasm.  really.)  one of
the first things to do was to check to symbol table map.  Unused and
undefined variables were flagged in special ways.  If I had undeclared
variables which I hadn't meant to be undeclared, I could spot them
immediately.  And I must say I'm awfully tired of 

	int	i,j,k;			/* scratch */
	int	c,c1;			/* characters */

Which isn't to say I'm interested in FORTH-style i,j,k with their
magical (er, magic/l?) values.

Admittedly this is a tangential article.  Just reminiscing about
compiler output.

Mark Mallett
decvax!sii!mem

steve%brl-bmd@sri-unix.UUCP (10/13/83)

From:      Stephen Wolff <steve@brl-bmd>

Well........... sure.  Don't know about AVL, but it's hard to beat AWK for
sheer quaintness!  "Awk variables take on numeric ..... or string values
according to context."  "Array elements are not declared; they spring into
existence by being mentioned."  And buggy code?  What despair can compare with:

		awk: Syntax error near line 42
		awk: Bailing out near line 42
		$

rbbb.rice%rand-relay@sri-unix.UUCP (10/16/83)

From:  David Chase <rbbb.rice@rand-relay>

Don't knock awk -- Awk is wonderful.  Fine programming in the "strong
typing is for weak minds" paradigm.

drc