This is the mail archive of the guile@sourceware.cygnus.com mailing list for the Guile project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Goops and the module system


Jost Boekemeier <jostobfe@calvados.zrz.TU-Berlin.DE> writes:

> Michael Livshin <cmm@verisity.com> writes:
> 
> [external overrides]
> > well, there obviously are times when you do want to override things.
> 
> Could you please give an example?  

Anytime I'm developing with an interactive system.  For instance in my
present CLOS application I am working on several supporting libaries
as well as the framework that uses them.  Sometimes I like to override
definitions, adding some format calls, or maybe recompile the function
with some breakpoints installed, or simply find a mistake or a better
way to do it.  Often these changes never make it to the source file,
only appearing in my buffer and in the running image

Redefining at runtime is critical IMO to the lisp (scheme included)
development process.  Particularly when you don't have a distinct
compile stage, which bigloo does.  Also, if I was forced to reload the
entire module after making a change and saving the file that defines
it, then I'm still screwed, because some of these modules can take up
to 2 minutes to compile.  And if I had to restart the image and reload
the module after making the change in source code, well, might as well
go back to hacking C.

I don't quite understand the masochist, straight-jacketed approach to
languages you seem to be recommending for guile.  I am enthused about
guile and other lisp dialects precisely because they don't embody this
premature optimization and totally derogatory stance towards their
users.  I've written reams of code in scheme and lisp without these
protective measures and I'm still alive, my programs all work, and
more importantly I developed them faster and with pleasure!


> > [ not really a disagreement, just a datapoint.  I guess I should read
> >   the paper you reference, too. ]
>
> Itīs the ObjectiveC approach.  You can attach all kinds of additional
> information to the original class but you have to take care that
> you donīt shoot yourself (or other people) in the foot.

ObjC has a compile cycle, guile doesn't.  Don't remove that advantage
from guile by trying to make it like other statically compiled
languages.  Dynamic and proud, baby!  Living life dangerous just the
way we like it.  Just because some lame-ass language can't redefine
classes and their instance storage requirements at runtime doesn't
mean we should suffer with them by adopting hair-shirts in sympathy.

Oh gawd, you're makin me relive my ObjC days, waiting for the
compiler, M-x compile every 20 seconds, elaborate mechanisms to
perform testing when I had to start from zero state after the
recompile.  This is exactly why we moved our devel team off of ObjC
and WebObjects and onto Lisp/CLOS and customer tools.

> BTW Miroslav, have you red his comment on multiple dispatch (page 53):
> "obsolete, dangerous" and doesnīt go together with his external
> overrides (no "run-time extensibility") . -- Very cool...

Whose comment? Kiczales?

As someone who has just spent the last three months doing CLOS
programming and making extensive use of multiple-dispath when
designing protocols, I say that this is utter crock.  Please consider
the topic that Kiczales was addressing in that paper.

-- 
Craig Brozefsky                      <craig@red-bean.com>
Free Scheme/Lisp Software  http://www.red-bean.com/~craig
"Hiding like thieves in the night from life, illusions of 
oasis making you look twice.   -- Mos Def and Talib Kweli

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]