Porting Squeak
John Hinsley
jhinsley at telinco.co.uk
Sun Jan 13 13:19:56 UTC 2002
Les Tyrrell wrote:
>
> ----- Original Message -----
> From: John Hinsley <jhinsley at telinco.co.uk>
> To: <squeak-dev at lists.squeakfoundation.org>
> Sent: Saturday, January 12, 2002 5:50 PM
> Subject: Re: Porting Squeak
>
> > Just a thought:
> >
> > another approach (altogether!) would be to use Squeak to output files in
> > another language. For example, Small Eiffel (and, no doubt, other
> > Eiffels) can output C code (to be compiled with gcc) and Java byte code.
>
> <disclaimer: going totally from dim recollections here>
> Broadly speaking, such approaches have not been widely used, though there are several that do
> exist for Smalltalk. For instance, Producer was written to create Objective-C programs from
> Smalltalk-80 source files long ago, and an updated version can now be found with POC. Smalltalk/X > has the Smalltalk to C translator which I believe is called StIC. Squeak has Slang, which may be > less ambitious but is perhaps the most widely used of these three. I've never used any of these, > though I've had some revived interest in these things lately. The general idea was that the
> target language was neccessary as there was a perception that Smalltalk was "too slow". Producer > assumed that everything in Smalltalk was too slow- this was never the case, and thus Producer was > largely never used. Slang and StIC assumed that only certain things were too slow, and both have > been used much more than Producer.
>
> Generally, the pattern that seems to work best for Smalltalk is to do nearly everything in the
> image, and in rare cases ( though significant from a CPU useage view ) delegate cpu-intensive
> tasks to specialized primitives. BitBlt is a good example of this approach. Translating the
> entirety of a Smalltalk system into another language has not yielded overwhelmingly good results
> in the past ( just thought of another example- Xanadu 92 was written in ObjectWorks... except that > there, the Xanadu team didn't like the licensing that came with ObjectWorks... so they modified
> ObjectWorks to support translation of their code to another language, called X++ ( a modified
> version of C++, why I don't know ). So, the Xanadu 92 source code is actually just something to
> support coding in X++. I think they would have been better off just sticking to straight St-80,
> but then that is hindsight-enabled armchair quarterbacking speaking.
There are some really nice examples in there: thanks! I've never been
convinced by the speed argument, especially as far as Java is concerned:
just compare Borland's Java IDE (allegedly written in Java) with Squeak
or with the IBM Java IDE (allegedly written partly in Smalltalk). From
time to time I have a running argument with one of the MySQL developers
who claims to have benchmarked a Smalltalk written project against a C++
version with the C++ one benchmarking at 6x the speed, but as I've no
access to either project, it's impossible to see why. One day, maybe,
I'll have to re-write MySQL in Squeak :-( And even he maintains that
Smalltalk is more fun.
>
> > Of course, there are disadvantages, as well as advantages, to doing
> > stuff this way ;-).
>
> Disadvantages, certainly- there are many fewer advantages, though. So, it is best to do this stuff >judiciously, or so it would seem.
Agreed. The only real advantages I can see is that a project produced in
Smalltalk could easily be ported and further developed in the ported
language -- the disadvantage here being that it would be difficult to
re-unite the projects (almost a case of auto-forking), plus the old ones
about the relative obscurity of compiled code and the possibility of
producing a small executable (rather than a big "distributable").
Cheers
John
--
Reputed to be the reason Windows 2000 was nearly a year late, (paid in
shares M$Ds needed the cash and kudos) Netproject's Eddie Bleasdale has
renewed his challenge to virus writers. The first person to infect his
Linux box wins 10,000 pounds.
http://www.silicon.com/bin/bladerunner?30REQEVENT=&REQAUTH=21046&14001REQSUB=REQINT1=48211
More information about the Squeak-dev
mailing list
|