|
From: Eric W. <scr...@gm...> - 2007-02-13 07:06:50
|
# from Daniell Freed
# on Monday 12 February 2007 04:37 pm:
> but it lacks real IDE features =A0
>like GUI designer, code completion, and inline syntax checking.
IMO, the GUI designer doesn't belong in the IDE since it shouldn't be=20
generating code (more on that below.) I'll also pass on syntax=20
checking unless it *always* knows what I mean better than I do.
At this point, if you build a good xrc editor, the wxWidgets and=20
wxPython users would all jump on it. Hmm, maybe even plugins with=20
Inline::CPP and Inline::Python?
I think the XRC system seems fairly workable, but I haven't fully=20
wrapped my head around it yet. The C++ examples make instantiation=20
seem rather tedious, and it appears that your code is still very much=20
bound to the layout (or at least the named contents.) Basically,=20
anything that needs to be connected to an event has to have some code=20
fetch it out of the XRC, and it appears that some objects can't be=20
represented while others have to be manually instantiated. I'm sure=20
there's a method to the madness, but I'm also sure a lot of it has to=20
do with technical limitations of C++. Just now looking at it again, a=20
perlish implementation might involve auto-vivifying (hierarchical?)=20
accessors for each of the XRC entities. But this is just a first (err,=20
fifth) glance and somewhat uninformed opinion at this point.
<mildly educational rant about wxglade>
To be clear, *statically* generated *code* is *always* going to (at=20
least eventually) cause maintenance trouble. Unless you can subclass=20
and tweak the generator from your own code (i.e. meta-programming (i.e.=20
Moose)), you *will* run out of rope somewhere.
This means using wxGlade will eventually earn you a visit from swarms of=20
locusts (or at least a really long session with sed and such.) It=20
doesn't matter how smart it seems to be about tagging the code or if=20
you think you're safe because you subclass what gets generated or=20
whatever. One day you realize that it drops all of your button id's on=20
the floor instead of storing them and your best options (besides=20
ditching it altogether) are to maintain some duplicate table of=20
manually assigned id's or mine the wxg file for them and then generate=20
more code. So now you're writing a compiler compiler and perl6 is sure=20
to beat you to a ship date. Or maybe not that, but simply different=20
versions of glade have different bugs and suddenly the commits in your=20
version control system are full of noise and you don't know what's=20
changing and what isn't. For me, it was lots of big and little things=20
adding up to "this tool is just not working." I almost forgot to=20
mention "generates code that doesn't run under 'use strict'."
I learned long ago that code generation doesn't work, but I saw how=20
wxglade did it and thought "hey, this might be feasible." Those who=20
forget (or ignore) the past are doomed to repeat it and all that jazz.
Your milage may vary, mine didn't.
</rant>
=2D-Eric
=2D-=20
We who cut mere stones must always be envisioning cathedrals.
=2D-Quarry worker's creed
=2D--------------------------------------------------
http://scratchcomputing.com
=2D--------------------------------------------------
|