Re: C++ IDE with graphical application building and good portability
On Jan 15, 1:36 pm, Linonut <lino...@bollsouth.nut> wrote:
* James Kanze peremptorily fired off this memo:
On Jan 14, 5:30 pm, Linonut <lino...@bollsouth.nut> wrote:
* James Kanze peremptorily fired off this memo:
For editing code (or text documentation), a classical editor is
probably the ideal tool. For building, you need a command line
interface anyway---you'll want to trigger your complete rebuilds
at a time when no one is using the system. For anything but the
smallest project, however, you'll really want some graphical
documentation---things like class diagrams, etc. And that
supposed some sort of graphic tool.
Or doxygen plus graphviz.
Which is doing it backwards. You need the class diagrams in
order to define the classes and write the header files.
Nah. Look at this way: would you rather edit a class's
attribute and operation signatures inside a relatively clumsy
dia, Visio, umbrello, argouml, or bouml dialog box, or using
your favorite programmer's editor?
You've hit on a sore point with me. There are good tools for
editing text---gvim is hard to beat---and there are good tools
for editing class diagrams (I like Rose). But they don't
integrate. You can't generate diagrams in vim, and as you say,
editing the parameter lists, etc., is a bit long winded in Rose.
(Actually, the parameter lists are nothing compared to the pre-
and post-conditions, and all the rest.)
What I'd like is a graphics tool which pops you into your
favorite editor when you get down to the functional level.
Obviously, at some point you want to generate class diagrams,
and maybe even use them for a purpose other than satisfying
your boss's directives, such as clarifying your own
understanding of your code.
Normally, that point is *before* you write the first line of
code. Typically, before you even decide on the name of the
class.
I was amused to see a product (don't recall the name) that
made a big deal out of doing UML using an "easy-to-edit"
text-based format. This format was essentially a strict
version of a header file.
The point of class diagrams is not to save typing time -- they
don't save any, in fact they can double it if you're not
careful. The point of class diagrams is not to create the
code -- they're not always tractable in that way.
I've used Rose to generate code in some projects. I find that
I'm a lot more productive using it that writing my headers by
hand.
The point of class diagrams is to provide various views of
your prospective code. Or, even better, other people's code.
At least in my view.
The point of class diagrams (and requirements specifications,
and a lot of other documentation) is to define what you are
going to write in the code. I'm very sceptical of people who
code first, and write the documentation later. I've seen a lot
of code developed that way, and it's always pretty bad.
As for doxygen and graphviz, they do indeed come later, after
you've satisfied yourself enough to start commenting the code,
which should come pretty early in my book.
Don't feel bad if you disagree. I go round and round at work
about UML. At least now we've /finally/ dumped the use of
Microsoft Word for documenting the design. It was awful
writing each function signature in Visio, Word, and, finally,
the code. (Even dia makes it easier to edit a class than does
Visio, at least Visio 2000 anyway.)
Obviously, you need a specialized tool. Because I've usually
started with class diagrams, I've not been able to experiment
with CWeb, but I think some combination of CWeb, embedded in
Rose, would be just about perfect.
(FWIW: at one place I worked, header files were marked as
"derived" in Clearcase, and couldn't be edited at all. They
were generated by Rose from its petal files. And if Rose had
more capabilities for handling the textual parts of the
documentation, I think that this would be the ideal solution.)
--
James Kanze (GABI Software) email:james.kanze@gmail.com
Conseils en informatique orient=E9e objet/
Beratung in objektorientierter Datenverarbeitung
9 place S=E9mard, 78210 St.-Cyr-l'=C9cole, France, +33 (0)1 30 23 00 34