Juliusz, old chap!

Dr. J. Van Sckalkwyk (external) SCHALKW@odie.ee.wits.ac.za
Mon, 19 Dec 1994 15:29:16 SAT


Dear Juliusz

> hopes I completely mirific.  
{?}

> JVC's answer seemed to imply that he..
I am not a VCR (JVS)!


> agrees with me on everything, but arrives to completely different
> conclusions.  I have to say that I don't really understand his
> reasoning.
1. It is not possible to create a platform that will run everything,
always, faultlessly.
2. I do believe however that  it IS possible to create a "symbolic
assembly language" (convention) that can be used on most (all?) 
current machines. Good assembly language programmers only use a small 
proportion of the wide variety of instructions available on most 
current processors. You only _need_ a small selection of instructions 
to execute most tasks.
3. This symbolic assembly language can then be used to create HLL(s) 
that do useful work on all the machines, with a common "core". I do 
_not_ mean that you can now take code in any arbitrary language and 
exepct it to run faultlessly in "our" system.
4. The simpler we keep things, the more likely we are to succeed.
5. If you have formal proof that the above is bullshit, please submit 
it.
6. If however, you merely _believe_ that I am talking rubbish, and 
have nothing substantial to contribute, don't waste your time with 
this group!

> 
> > The reason why _I_ve been forced down to a lower and lower level 
is 
> > simply that, although several languages (eg LISP) have very 
desirable 
> > features, and have indeed tickled my fancy, NONE has come up to 
> > scratch when it comes to getting down and doing some really 
serious 
> > work (especially as the OS is quietly fucking you underneath, all 
the 
> > time).
> 
>   What do you mean by doing really serious work?  Coming to scratch?
> Quietly fucking sb. underneath?  (I do understand what fucking is
> about, but I have trouble imagining fucking quietly :-) ).

1. really serious work. Well I don't know. Maybe I've never really 
done _really serious work_ in my life! The last (trivial) job I did 
was a little program for a specialist cardiologist that enables his 
secretary to enter a complete and detailed medical history, 
examination, and all relevant special investigations (in nit-picking 
detail) in about 3-8 minutes, and then generates a complete report in 
good English. She selects from a few of several hundred menus. The 
whole thing is under 200k. I tried several of the commercially 
available databases, and found them to be dreadful. I was tinkering 
with C at the time, but eventually wrote it in my own language, and 
it runs very well on an 8086 at 4MHz.

2. Coming up to scratch. Just my personal opinion - that no current 
languages that I have (in my incredibly limited experience) come 
across are worth a rats arse! I'm sure I stand alone in this view, 
but, that's life! You presumably know of the perfect language.

3. I was not aware that Frenchmen fuck loudly all the time. Thanks 
for enlightening me.

4. But seriously, I was referring to the tendency of the underlying 
O/S interfering with one's attempts to get something that works, or 
being so badly designed that all your attempts are thwarted. Simple 
irritations like int 14h in DOS, certain EMM's ..
>   More seriously, I believe serious work *can* be done in Lisp (next
> time you try to imply the opposite, I flame you!).

The ideas behind Lisp are great. When I played around with it about 
10 years ago, the implementations were _shit_! I'm sure they have 
improved. You can do very serious work in Lisp, provided you have 
a very fast, powerful machine with lots of memory. But would you (for 
example) choose to write a DTP package in Lisp? If you can tell me of 
a reasonably priced Lisp package that will run well on my little 386 
with 2 meg of memory, I'd love to try it again!

> > Can we not have efficient core code (DNA has 4 different bases 
> > grouped in triplets) that is simple; fairly complex intermediate 
> > levels; and then a fairly well-defined, useful building block 
(the 
> > cell) that encapsulates a lot of hidden processing power, but is 
> > nevertheless small enough to be useful? 
> 
>   DNA is at the hardware implementation level (it is the actual 
means
> used to store information); the right analogy would be the use of
> magnetic material for storing information on disks.  Non relevant to
> the discussion.

Well, I was arguing by analogy (always dangerous, and often pretty 
pointless). BUT
1. I do think there is some validity in the analogy.
2. I was more concerned about the information storage/encoding than 
the "hardware" aspect. ie. the information stored in a codon is 
analogous to the information stored on a hard disk (or wherever), I 
couldn't give a damn about the magnetic medium, adenine/guanine etc!
4 different bases grouped in threes (what could be simpler) code for 
about 20 AA's, which go to make up an infinite variety of enzymes, 
structural proteins , whatever, which go to make up "cells". A few 
simple ASM instructions go to make up (let's say) about 100 primitive 
verbs etc, which make an infinite variety of "constructs" which go to 
make up "objects". I _like_ the analogy!

> 
>   In another message, you wrote about the
> > PROPOSED CORE CODE FOR IMPLEMENTATION OF LLL
>   Very good proposition, but not for a doubly universal LLL
> (i.e. independent of both the application area and the target 
machine
> architecture -- my opinion is that such a beast cannot exist), but 
for
> the actual assembler of a certain machine; that is *not* what we 
would
> like.

I think you should read my letter again. I think you missed the point 
completely.


>   A few examples:
> 
> > All references are to DWORDs (32 bits)
>   Why?  I'd like the code to work on a PDP-11 (18 bit words).

Hey, hey, hey. 
You say the thing's impossible, and then immediately insist on added 
complications! This is self-fulfilling prophecy, if ever I saw it!
The whole point is that it's a _symbolic_ assembler, NOT specific to 
an actual machine. Sure, you'll get a performance hit on a PDP-11. I 
believe it will however run!

> Furthermore, you are implying that the machine has a flat memory
> model, and that addresses are represented with integers (I'd rather
> favour an approach with an abstract 'pointer' object -- thus making
> the LLL dynamically typed).

I do not see that the memory model has to be flat. Please explain. 
Include code. 


> > All numbers are hexadecimal
>   Is that relevant to the topic of the discussion?  Aren't you 
mixing
> the definition of the language with the syntax of the assembler?

You misread. I was not setting a gold standard. I was helping you to 
understand what followed. (that 80000000 is in hex).



> 
> > Naming and operand conventions are 80X86 flavoured
>   Exactly my point: you are defining a machine code for *one* single
> machine.

As I intimated, there is no bias. A convenience. Re-read my letter.

> 
> > b. Registers, Stacks, memory
>   Where's the distinction between registers and memory?  If it's 
only
> one of efficiency, it is not relevant.
> 

It's all very well for you in your theoretical ivory tower. If I had 
an infinite number of registers at my beck & call, I might agree. 
Fortunately, I work in the real world. I use memory. I use registers.

>  [follows the list of all instructions, and an operationally-
oriented
> very informal explanation.  Nothing is defined.  After that, we get 


Ah you got that. I wrote you a sketch. Note. A sketch. Obviously what 
you wanted was a complete OS. Forgive me.


> exaple of compilation techniques worthy of the first weeks of an
            ^^^^^^^^^^^
           I suspect you read through the code _very_ quickly. I 
wrote (or at least I think I wrote) a sketch of a very simple 
**interpreter**. Fix this in your mind.         
                
> undergrad course.  Follows a more interesting section on the 
[no comment]


> > Am I being too simplistic?
>   Nope.  You have the right approach to solving a different problem.
> You did not design a LLL, you simply created an example assembler in
                                                          ^^^^^^^^^
And now it's an assembler. The word to focus on is **interpreter**
The other word that might help you is **sketch**.     
                                                     
>   I just hope I did not sound to much like flaming.  If I did, 
No, in the sense that Milford Sound is surrounded by small hillocks.


> forgive me, and remember that English is a (very) foreign language 
You're managing just fine! What I really would like is, however, some 
_code_.



>   Merry Christmas!

And to you too, sir!


Bye, JVS.< 


P.S. On the left, as you sail out of Milford Sound, you will see a 
5600 foot granite cliff. The right side is pretty impressive, too.<