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