[Mono-list] laus stultitia

Hans Van Wesenbeeck h.vanwesenbeeck@computer.org
19 Oct 2002 07:31:55 -0700


> > -----Original Message-----
> > From: Hans Van Wesenbeeck [mailto:h.vanwesenbeeck@computer.org] 
> > Sent: Friday, October 18, 2002 9:55 AM
> > To: Michael Poole
> > Cc: mono-list@ximian.com
> > Subject: Re: [Mono-list] laus stultitia
> <snip>
> > Is bytecode necessary, be it JVM or CIL, 
> > when the sources are available? Is it really a desirable 
> > intermediate representation, before becoming 'executable'?
> </snip>
> 
> Is bytecode necessary? No, probably not.
I am really not claiming to have an answer myself. 
That's why I put it in the form of a question.
 
> Is binary distribution of executables necessary? No, not technically.
> You can build everything from source, in theory.
I am not writing off the distribution of binary executables. But, for
software developers, source code seems to be a better starting point
than bytecodes. I also do believe, that software users will ultimately
pay the penalty for the bytecode distribution model, i.e. they are still
faced with the installation and keeping up to date of the runtime. They
will probably pay for it again in terms of performance and even
reliability.  

> Are they equivalent? Yes, virtually. (bytecode being a binary
> distribution medium for executables targeted at a 'virtual' machine)
The use of hardware independent bytecode undoubtedly has virtues as an
intermediate representation for use in compiler technology. However,
does it justify JIT'ting, does it justify deploying an elaborate
runtime? Or, should it's role end as an intermediate representation for
compiler developers? From this point of view, is CIL worth standardizing
on? This is probably not a good time nor place to be asking these
questions. It is really just a question, but a question that matters to
me. Will I be developing in java for the next 5 years, will it be
c#/mono, or should I just stick to c/c++ and deal with its pre-historic
forward declarations, #includes, and clumsy namespace handling.  
> Are both of these convenient mechanism for distribution of software
> packges? Do they provide a means by which 95% of computer users can feel
> comfortable installing an application by reducing complexity and
> bandwidth requirements? Yes, undoubtedly.
I do believe a single, self-contained executable that fits on a floppy
may well benefit software users. We have departed from this such a long
time ago, it may seem absurd. A frequent 30Mb JDK download has become
the norm.
> Remember, not everyone is capable of installing gentoo or using cvs. If
> you limit your target audience to those that are then you're shooting
> yourself in the foot.
The software developer decides what goes into the executable, starting
from sources and sources only. Depending on the audience, the final
product is either the sources, or a self-contained binary executable
which is deployed with as few runtime dependencies as possible, the
software developer has taken care of this. To me it seems java bytecode
and M$.CIL have found their existence mainly to promote the flourishing
of a binary component industry. And we're all paying the price.  
> This isn't some religious crusade we're on here, we're just trying to
> make it easier for people to run applications an application servers on
> their machines, and if possible, provide some compatibility across
> platforms.
I have really not been trying to say it is some sort of a crusade you're on. 
It was probably not a good time nor a good place to be posting these questions 
and comments, while so much admirable work is being invested. 
I apologize, and will refrain from posting to this mailing list unless I 
really have something to contribute. After all, I am using Ximian Evolution
to post these messages. 
 
> Piers.

Hans.