C++ IDE with graphical application building and good portability

45 views
Skip to first unread message

Lars Uffmann

unread,
Jan 11, 2008, 11:01:41 AM1/11/08
to
Does anyone have a good suggestion?

I am currently using Eclipse Europa with the C-Development Toolkit (plus
gnu-toolchain under cygwin) and the Widestudio Native Application
Builder plugin.

While I am surprised I actually got this configured and running, it has
some things that I do not like too much - especially a couple of bugs
(build tools vanishing from the builder settings upon switching between
projects, for example). And then the NAB plugin has some nasty
limitations, plus I seem to be unable to include my own "tool" libaries
when using the NAB/MWT Builder.

So I was wondring what other people use - I mean - there's a bazillion
of GUI applications out there, you can't tell me that everyone builds
their windows by typing in the code... :)

I would like to avoid Visual Studio (have been suggested that in the
past), and preferably use something that includes the gnu compiler (for
license reasons and for being - afaik - the best c-compiler around).

I do not mind a bit of configuration work (getting eclipse & plugins to
run properly took me days the first time), but the end result should
produce binaries can simply be copied to another computer and will run
on any computer that uses the same operating system and meets the
hardware/driver requirements for the programs. Copying of dlls along
with the executable is acceptable, of course :)
Having to install a framework (.NET comes to mind) is absolutely not
acceptable :)

Thank you for any inputs - also good commercial platforms!

Lars

Erik Wikström

unread,
Jan 11, 2008, 12:52:28 PM1/11/08
to
On 2008-01-11 17:01, Lars Uffmann wrote:
> Does anyone have a good suggestion?
>
> I am currently using Eclipse Europa with the C-Development Toolkit (plus
> gnu-toolchain under cygwin) and the Widestudio Native Application
> Builder plugin.
>
> While I am surprised I actually got this configured and running, it has
> some things that I do not like too much - especially a couple of bugs
> (build tools vanishing from the builder settings upon switching between
> projects, for example). And then the NAB plugin has some nasty
> limitations, plus I seem to be unable to include my own "tool" libaries
> when using the NAB/MWT Builder.
>
> So I was wondring what other people use - I mean - there's a bazillion
> of GUI applications out there, you can't tell me that everyone builds
> their windows by typing in the code... :)

There are only a few widely used GUI frameworks out there, and either
you simply type all the code or they come with some kind of builder (or
you use a builder developed by someone else for your framework).

> I would like to avoid Visual Studio (have been suggested that in the
> past), and preferably use something that includes the gnu compiler (for
> license reasons and for being - afaik - the best c-compiler around).

Personally I think that VS is the best GUI available for Windows, and if
you do not want to use MFC you can use Qt, it should integrate quite
nicely into the IDE.

As far as compilers are concerned the VS compiler is more or less as
good as gcc, but not of them are the best. By the way, what are those
licence concerns you are having?

> I do not mind a bit of configuration work (getting eclipse & plugins to
> run properly took me days the first time), but the end result should
> produce binaries can simply be copied to another computer and will run
> on any computer that uses the same operating system and meets the
> hardware/driver requirements for the programs. Copying of dlls along
> with the executable is acceptable, of course :)

Compile with static linkage.

--
Erik Wikström

Lars Uffmann

unread,
Jan 11, 2008, 1:28:13 PM1/11/08
to
Erik Wikström wrote:
> There are only a few widely used GUI frameworks out there, and either
> you simply type all the code or they come with some kind of builder (or
> you use a builder developed by someone else for your framework).

Hmm - I'm surprised that typing the code is actually still being done -
considering that very good integrated building environments were already
around over 10 years ago... Thinking of Borland Delphi & C++ Builder,
Visual Basic, VBA (MS Access). And considering that it sorta wastes a
lot of expensive programmer workhours if the design needs to be done by
foot...

> Personally I think that VS is the best GUI available for Windows, and if
> you do not want to use MFC you can use Qt, it should integrate quite
> nicely into the IDE.

Hmm - I've downloaded Qt and while it is fancy looking, it instantly got
earned my disapproval for two reasons:
- I didn't have a clue how to integrate it into any program, even
after 5 minutes of looking at it (short attention span, because
self-explaining software allows you to make a first progress within a
minute or two, usually) - I can live with that if it's worth taking a
deeper look
- the whole Qt installed in german without ever asking me, while I
downloaded what I thought to be an international (or at least english)
version - despite me running an english XP - apparently by locating my
ip upon download from the webserver, and linking me to a german
installation. In my eyes, everyone who *silently* uses the users IP
address to link him to a localized version of a webpage / software
apparently shows a total lack of common sense, to put it gently. Thus, I
have a strong aversion against installing software when I have to go out
of my way to get my hands on the english setup files.

Anyways - due to your reply, I'll give Qt a second chance, once I manage
to get the english setup files ;)


> As far as compilers are concerned the VS compiler is more or less as
> good as gcc, but not of them are the best.

Actually, I had enough of Visual C++ back in '97 or '98, when I first
saw it on my roommates comp, and it detected a syntax error in the
source but nevertheless finished compiling and linking to an executable,
that then - of course - would crash with an exception upon getting to
the module with the error. I felt like back in the old interpreter
days... I won't using Visual Studio to develop any serious software. Not
Ever.

> By the way, what are those licence concerns you are having?

It's NOT open source, and Microsoft has the copyrights, and I do not
trust that no-good-company further than I can throw a bookshelf
containing hardcopies of the full msdn knowledge base. What is keeping
them from making the next version of Visual Studio non-free? Nothing.
Actually - what's keeping them from discontinuing the development and
starting a brand new project instead? Righto - Nothing!

A company that's been shoving their software up users behinds ever since
the success of Win95. I am speaking banana-products: maturing at the
customer.

Then of course: .NET - need I say more? I don't want to have to force a
user to install 20 megabytes of .NET framework that will be just
annoying, waste diskspace, mess up the registry and add a lot of
security risks / annoying windows update messages for the future - all
this just to execute a tiny little application

> Compile with static linkage.
Thank you! That was helpful :)

Have a nice weekend!

Lars

Tomás Ó hÉilidhe

unread,
Jan 11, 2008, 1:48:24 PM1/11/08
to
Lars Uffmann <ar...@nurfuerspam.de> wrote in comp.lang.c++:

> C++ IDE with graphical application building and good portability


I only started cross-platfrom programming in the last week, but I'll give
you my opinion.

First of all, an IDE for programming in C++. I wholeheartedly recommend
"Dev-C++" by Bloodshed. You can get it for Windows and for Linux, (and
probably for other OS's too). It uses gcc and g++ by default. I've been
using it for years, even before I dabbled in cross-platform.

For a cross-platform library for GUI, I recommend wxWidgets. I only
started using it literally less than a week ago but it's incredibly
simple and intuitive to use. You make a remarkable amount of progress in
just an hour or two.

If you want an IDE for doing cross-platform C++ programming for GUI
applications, then I have to recommend the excellent, the brilliant,
"wxDev-C++". It's basically Dev-C++ that has been tailored for GUI
development. It has a graphical dialog designer and all. You design the
dialog, hit save, and then miraculously the class's code has changed to
implement the dialog you designed.

You only need to download wxDev-C++; everything else you need comes
bundled with it. Here's the Windows binary:

http://kent.dl.sourceforge.net/sourceforge/wxdsgn/wxdevcpp_6.10.2
_setup.exe


--
Tomás Ó hÉilidhe

Tomás Ó hÉilidhe

unread,
Jan 11, 2008, 1:49:54 PM1/11/08
to
"Tomás Ó hÉilidhe" <t...@lavabit.com> wrote in comp.lang.c++:

> You only need to download wxDev-C++; everything else you need comes
> bundled with it. Here's the Windows binary:
>
> http://kent.dl.sourceforge.net/sourceforge/wxdsgn/wxdevcpp_6.10.2
> _setup.exe

And it's 100% free.

--
Tomás Ó hÉilidhe

Erik Wikström

unread,
Jan 11, 2008, 1:57:38 PM1/11/08
to
On 2008-01-11 19:28, Lars Uffmann wrote:
> Erik Wikström wrote:
>> There are only a few widely used GUI frameworks out there, and either
>> you simply type all the code or they come with some kind of builder (or
>> you use a builder developed by someone else for your framework).
>
> Hmm - I'm surprised that typing the code is actually still being done -
> considering that very good integrated building environments were already
> around over 10 years ago... Thinking of Borland Delphi & C++ Builder,
> Visual Basic, VBA (MS Access). And considering that it sorta wastes a
> lot of expensive programmer workhours if the design needs to be done by
> foot...

Of course, most sane people use a builder when possible, but it is not
uncommon to generate controls etc. based on data and user input in which
case you must code since the tools can only be used for static designs.

>> Personally I think that VS is the best GUI available for Windows, and if
>> you do not want to use MFC you can use Qt, it should integrate quite
>> nicely into the IDE.
>
> Hmm - I've downloaded Qt and while it is fancy looking, it instantly got
> earned my disapproval for two reasons:
> - I didn't have a clue how to integrate it into any program, even
> after 5 minutes of looking at it (short attention span, because
> self-explaining software allows you to make a first progress within a
> minute or two, usually) - I can live with that if it's worth taking a
> deeper look

Read the tutorials on their site and you should get an idea.

>> As far as compilers are concerned the VS compiler is more or less as
>> good as gcc, but not of them are the best.
>
> Actually, I had enough of Visual C++ back in '97 or '98, when I first
> saw it on my roommates comp, and it detected a syntax error in the
> source but nevertheless finished compiling and linking to an executable,
> that then - of course - would crash with an exception upon getting to
> the module with the error. I felt like back in the old interpreter
> days... I won't using Visual Studio to develop any serious software. Not
> Ever.

Well, VC++6 is well-known as a not very good C++ compiler, but that was
10 years ago.

> > By the way, what are those licence concerns you are having?
> It's NOT open source, and Microsoft has the copyrights, and I do not
> trust that no-good-company further than I can throw a bookshelf
> containing hardcopies of the full msdn knowledge base. What is keeping
> them from making the next version of Visual Studio non-free? Nothing.

Of course not, but considering that the current version is non-free too
that can hardly make things worse.

> Actually - what's keeping them from discontinuing the development and
> starting a brand new project instead? Righto - Nothing!

Money, they get paid by companies who buy their products. The employees
at those companies have become used to VS works and to make any radical
changes without backwards compatibility would be a big mistake.

Anyway, if you are using standard C++ and Qt (or some other non-MS GUI
framework) you can just take you code and use the next compiler if that
should happen, by then perhaps a decent IDE alternative is around.

> Have a nice weekend!

The same!

--
Erik Wikström

Ole Nielsby

unread,
Jan 12, 2008, 8:14:50 AM1/12/08
to
Lars Uffmann <ar...@nurfuerspam.de> wrote:

> I would like to avoid Visual Studio (have been suggested that in the
> past), and preferably use something that includes the gnu compiler (for
> license reasons and for being - afaik - the best c-compiler around).

I use VC Express/wxWidget and doublecheck my code with
GCC occasionally. That way, I get the ease of VS debugging,
and code that works with both compilers.


EricF

unread,
Jan 13, 2008, 1:44:31 AM1/13/08
to
VC Express is Visual Studio, though what you say makes sense. I've used it and
Eclipse (on Windows), which uses gcc/g++ via cygwin. (It can be configured to
use ming).

Eclipse gives you some portability.

I've been doing Java development for 10 years and recently returned to C++. I
develop applications in C++ for AIX in my new job. I'm underwhelmed with VC
Express/VS and Eclipse. Both are adequate IDES. VCE/VS are primarily for doing
Windows development. They probably are good at that, but I'm not qualified to
comment. But getting a console project setup is not intuitive. I find that
most things work fine, but then I run into a usability issue.

Eclipse with the C/C++ tools seems a bit buggy. Note that I have MyEclipse, a
commercial product built on Eclipse with a lot of Java plug-ins. After getting
it configured to work with Cygwin/g++, it worked fine for a month, then
started throwing exceptions at startup. They were benign at first, but after a
few weeks of that, the outline view quit working.

My 2 cents: If you have a small application without a lot of classes, you
don't want these guis. You probably don't need a gui. A decent text editor and
command line builds are better.

If you have a large application and lots of classes, a gui is useful. Expect
some headaches. You may be better off with the gui as a text editor and
building/debugging with the command line tools.

Eric

James Kanze

unread,
Jan 13, 2008, 5:44:17 AM1/13/08
to
On Jan 13, 7:44 am, efriedNoS...@yahoo.com (EricF) wrote:
> In article <4788bd45$0$2109$edfad...@dtext02.news.tele.dk>,
> "Ole Nielsby" <ole.niel...@tekare-you-spamminglogisk.dk>
> wrote:>Lars Uffmann <a...@nurfuerspam.de> wrote:

[...]


> My 2 cents: If you have a small application without a lot of
> classes, you don't want these guis. You probably don't need a
> gui. A decent text editor and command line builds are better.

> If you have a large application and lots of classes, a gui is
> useful. Expect some headaches. You may be better off with the
> gui as a text editor and building/debugging with the command
> line tools.

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.

--
James Kanze (GABI Software) email:james...@gmail.com
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34

Erik Wikström

unread,
Jan 13, 2008, 5:56:31 AM1/13/08
to
On 2008-01-13 07:44, EricF wrote:
> In article <4788bd45$0$2109$edfa...@dtext02.news.tele.dk>, "Ole Nielsby" <ole.n...@tekare-you-spamminglogisk.dk> wrote:
>>Lars Uffmann <ar...@nurfuerspam.de> wrote:
>>
>>> I would like to avoid Visual Studio (have been suggested that in the
>>> past), and preferably use something that includes the gnu compiler (for
>>> license reasons and for being - afaik - the best c-compiler around).
>>
>>I use VC Express/wxWidget and doublecheck my code with
>>GCC occasionally. That way, I get the ease of VS debugging,
>>and code that works with both compilers.
>>
>>
> VC Express is Visual Studio, though what you say makes sense. I've used it and
> Eclipse (on Windows), which uses gcc/g++ via cygwin. (It can be configured to
> use ming).
>
> Eclipse gives you some portability.
>
> I've been doing Java development for 10 years and recently returned to C++. I
> develop applications in C++ for AIX in my new job. I'm underwhelmed with VC
> Express/VS and Eclipse. Both are adequate IDES. VCE/VS are primarily for doing
> Windows development. They probably are good at that, but I'm not qualified to
> comment. But getting a console project setup is not intuitive. I find that
> most things work fine, but then I run into a usability issue.

I usually create an empty console application and that works fine. Of
course there are a number of compiler settings that have to be changed
but you run into that with any compiler that I know of.

> My 2 cents: If you have a small application without a lot of classes, you
> don't want these guis. You probably don't need a gui. A decent text editor and
> command line builds are better.

Yes, the extra overhead of having to set up a project and whatnot can be
a bit much for small apps.

--
Erik Wikström

Przemyslaw Koprowski

unread,
Jan 13, 2008, 11:41:36 AM1/13/08
to
On Fri, 11 Jan 2008 17:01:41 +0100, Lars Uffmann wrote:
> Does anyone have a good suggestion?
>
My favorite is Code::Blocks (http://www.codeblocks.org/).
It still has some hard edges, but is already very usable
and actively developed.

Before I used: Borland C++ (for DOS), VS, Dev-C++,
MinGW Developer Studio and Borland C++ Builder (don't
remember vesrion numbers). In comparison, *IMHO* only
VS is in the same league (in fact slightly more
feature-rich) as C::B, but C::B is
a) open-source and free
b) cross-platform.

Przemek

EricF

unread,
Jan 13, 2008, 11:45:32 PM1/13/08
to

Yes, the empty console app is the key. I made the mistake of letting the
wizard set up the console project, naively assuming a wizard would set it up
right. After doing that, it was impossible to compile without including some
ms specific header. :-(

Eric

cnboy

unread,
Jan 13, 2008, 11:56:21 PM1/13/08
to
bu dong!
"EricF" <efried...@yahoo.com> 写入消息新闻:FNBij.40358$k27....@bignews2.bellsouth.net...

Linonut

unread,
Jan 14, 2008, 11:30:04 AM1/14/08
to
* 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.

--
Your supervisor is thinking about you.

Riyad

unread,
Jan 14, 2008, 11:35:23 AM1/14/08
to
On Jan 12, 11:44 pm, efriedNoS...@yahoo.com (EricF) wrote:

> In article <4788bd45$0$2109$edfad...@dtext02.news.tele.dk>, "Ole Nielsby" <ole.niel...@tekare-you-spamminglogisk.dk> wrote:>Lars Uffmann <a...@nurfuerspam.de> wrote:
>
> >> I would like to avoid Visual Studio (have been suggested that in the
> >> past), and preferably use something that includes the gnu compiler (for
> >> license reasons and for being - afaik - the best c-compiler around).
>
> >I use VC Express/wxWidget and doublecheck my code with
> >GCC occasionally. That way, I get the ease of VS debugging,
> >and code that works with both compilers.
>
> VC Express is Visual Studio, though what you say makes sense. I've used it and
> Eclipse (on Windows), which uses gcc/g++ via cygwin. (It can be configured to
> use ming).
>
> Eclipse gives you some portability.
>
> I've been doing Java development for 10 years and recently returned to C++. I
> develop applications in C++ for AIX in my new job. I'm underwhelmed with VC
> Express/VS and Eclipse. Both are adequate IDES. VCE/VS are primarily for doing
> Windows development. They probably are good at that, but I'm not qualified to
> comment. But getting a console project setup is not intuitive. I find that
> most things work fine, but then I run into a usability issue.
>
> Eclipse with the C/C++ tools seems a bit buggy. Note that I haveMyEclipse, a

> commercial product built on Eclipse with a lot of Java plug-ins. After getting
> it configured to work with Cygwin/g++, it worked fine for a month, then
> started throwing exceptions at startup. They were benign at first, but after a
> few weeks of that, the outline view quit working.
>
> My 2 cents: If you have a small application without a lot of classes, you
> don't want these guis. You probably don't need a gui. A decent text editor and
> command line builds are better.
>
> If you have a large application and lots of classes, a gui is useful. Expect
> some headaches. You may be better off with the gui as a text editor and
> building/debugging with the command line tools.
>
> Eric


Eric & Others,
For you guys that are doing large Eclipse-based installs you might
consider using Pulse (http://www.poweredbypulse.com/) to manage these
installs. As you found out trying to keep all the cross-dependencies
in line with each other and all the products functioning correctly,
with so much overlap is *is* unfortunately still possible to run into
"DLL-hell".

Pulse is a free provisioning technology from Genuitec, LLC (folks that
make MyEclipse) that allows you to configure "profiles". A profile is
just a platform (Eclipse Java, Eclipse C/C++, MyEclipse, etc.) that
you can then Drag and Drop more software onto using the GUI
(Subversion support, Swing GUI builder, Report Designer, etc.) and
simply "Run" that profile (you can have any number of profiles you
want). Pulse then goes and grabs all the plugins for you that are
required to make that profile work. It also manages dependencies,
updates and all the compatibility nightmares you can run into when you
try and juggle this stuff manually. Because of this, the days of
needing to do new installs of Eclipse + all your favorite plugins is
hopefully no more.

Let me know if you have any questions about it, I *do* work for
Genuitec, LLC but that doesn't stop me from hoping that the service
can help simplify your installations for you.

Best,
Riyad

James Kanze

unread,
Jan 14, 2008, 3:46:39 PM1/14/08
to

> 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.

Linonut

unread,
Jan 15, 2008, 7:36:57 AM1/15/08
to
* 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?

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.

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.

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.

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.)

Ah, nice sig monster!

--
"The Street finds its own uses for technology."
-- William Gibson

James Kanze

unread,
Jan 15, 2008, 4:45:10 PM1/15/08
to
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.)

red floyd

unread,
Jan 15, 2008, 6:32:06 PM1/15/08
to
James Kanze wrote:

>
>> 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.)
>
>

Just be glad you're not using Telelogic TAU for your diagrams!!!!

Lars Uffmann

unread,
Jan 16, 2008, 4:28:14 AM1/16/08
to
Tom wrote:
> You only need to download wxDev-C++; everything else you need comes
> bundled with it. Here's the Windows binary:

Hey Tomás, and everyone else that made suggestions :)

Thanks for all the inputs, and a fruitful debate - I had 2 days off from
work, so sorry for the late reply. I definitely will have a look into
those suggestions you made, wxWidgets, wxDev-C++, Code::Blocks, libSDL,
and I actually had Bloodshed-DevC++ installed before, but didn't manage
with it the way I was able to work with eclipse CDT. I might have
another look.

I'll let you know if I find any environment to be particularly suited
for my purpose (tool programming with GUI, socket-usage and xml parsing
as well as mdb-access - gotta be good for something that I have been a
silent reader on the mdb-tools mailing list for like 8 years now ;)

Best Regards,

Lars

Linonut

unread,
Jan 17, 2008, 12:35:04 PM1/17/08
to
* James Kanze peremptorily fired off this memo:

>> 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.

Well, based on what I've seen from other developers, they will then
not write complete comments, nor will they leave the code in
a nicely-formatted state.

If you can't do a seamless round trip, I'd rather refine the code
by editing and then regenerated the diagrams.

>> 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.

Only for larger projects. Smaller projects don't need the overhead
UML.

> 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.

We call it "Crational" around here. Even Rose. I'm finding umbrello to
be reasonable.

I still don't think UML is up to the task of generating code. And you
have to become an expert in the UML process to actually create a real
design that will result in compilable and working code.

What I find works best for me is to do a lot of the skeletal header
files up front, until I start to lose the picture of their
relationships. Then I reverse engineer, find the obvious flaws, then
continue coding, then reverse engineer again.

It's too bad there isn't a diagramming tool that will make only
/incremental/ changes to your code, preserving the rest of the
documentation and code without the need to use arcane markup.

Maybe a method where each item is a database entry in a relational
database, and you edit the items, and then can assemble them into
code that you examine, compile, and then throw away until the next round
of database updates.

There's a similar problem with requirements. How does Rational handle
it? With a stinking-awful Microsoft Word-based user interface.

--
A woman shouldn't have to buy her own perfume.
-- Maurine Lewis

James Kanze

unread,
Jan 18, 2008, 7:45:45 AM1/18/08
to
On Jan 17, 6:35 pm, Linonut <lino...@bollsouth.nut> wrote:
> * James Kanze peremptorily fired off this memo:

> >> 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.

> Well, based on what I've seen from other developers, they will then
> not write complete comments, nor will they leave the code in
> a nicely-formatted state.

That's more or less my point. I've had no problems with the
formatting of the code, but they don't integrate seemlessly a
good text editor, for the textual parts of the design. Still,
I'm significantly more productive with Rose than with any of the
alternatives I've tried.

> If you can't do a seamless round trip, I'd rather refine the

> code by editing and then regenerate the diagrams.

You do the diagrams first, regardless.

> >> 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.

> Only for larger projects. Smaller projects don't need the overhead
> UML.

It's not really overhead. Do the UML first, and you're more
productive.

Of course, there is a break-even point---I don't bother with UML
(or C++, for that matter) for things less than about 500 lines
of code. I'll just bang it into shell script and awk, without
really much design up front.

> > 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.

> We call it "Crational" around here. Even Rose. I'm finding
> umbrello to be reasonable.

Rose is really the only such tool I've used to any extent. (I
did try Together a little---it has some nice points as well, but
it doesn't seem to work well in my environment---a very small,
very slow Sparc, with not very much memory.)

> I still don't think UML is up to the task of generating code.
> And you have to become an expert in the UML process to
> actually create a real design that will result in compilable
> and working code.

As I said, I've used Rose for code generation in several
projects. Including one very small one (about 50 KLOC). It's
always resulted in significantly improved productivity.

> What I find works best for me is to do a lot of the skeletal
> header files up front, until I start to lose the picture of
> their relationships. Then I reverse engineer, find the
> obvious flaws, then continue coding, then reverse engineer
> again.

How do you know what classes you're going to need, if you
haven't done a few class diagrams, scenarios, etc.? (I find
scenarios particularly useful in the early stages of design.
But I think part of what I use them for might better be handled
with CRC cards.)

> It's too bad there isn't a diagramming tool that will make
> only /incremental/ changes to your code, preserving the rest
> of the documentation and code without the need to use arcane
> markup.

I'm not sure what your problem here is. Rose separates the code
fairly cleaning into the part it maintains, and the part you
maintain. It never modifies the part you maintain.

As for the mark-up---you want something, so you know what you
can modify, and what you can't (or if you prefer, what's yours,
and what's Rose's). The last time I used it, I set up the
editor (I was using emacs at the time) so that it displayed the
mark-up very discreetly, unlike normal comments. (I use a dark
green background: the Rose generated mark-up was dark-gray,
normal comments yellow.)

> Maybe a method where each item is a database entry in a
> relational database, and you edit the items, and then can
> assemble them into code that you examine, compile, and then
> throw away until the next round of database updates.

> There's a similar problem with requirements. How does
> Rational handle it? With a stinking-awful Microsoft
> Word-based user interface.

We didn't handle requirements with Rose. On the last project I
used Rose on, they came from outside. In Word format:-) (which
was a pain, because we didn't have any PC's in the development
group---just Sun Sparcs---and only had it in hard copy form).

But again, that's the weakness I've been talking about:
integration of text and diagrams.

Nick Keighley

unread,
Jan 18, 2008, 8:51:19 AM1/18/08
to
On 11 Jan, 18:48, "Tomás Ó hÉilidhe" <t...@lavabit.com> wrote:
> Lars Uffmann <a...@nurfuerspam.de> wrote in comp.lang.c++:

> First of all, an IDE for programming in C++. I wholeheartedly recommend
> "Dev-C++" by Bloodshed. You can get it for Windows and for Linux, (and
> probably for other OS's too). It uses gcc and g++ by default. I've been
> using it for years, even before I dabbled in cross-platform.

maybe I was unlucky. But
- the debugger works, sometimes
- it's picky where you install it
- the IDE is pretty clunky looking


<snip>

Visual C++ (Express) 2008 is free and detects more problems.


--
Nick Keighley

Nick Keighley

unread,
Jan 18, 2008, 8:56:34 AM1/18/08
to
On 13 Jan, 10:44, James Kanze <james.ka...@gmail.com> wrote:
> On Jan 13, 7:44 am, efriedNoS...@yahoo.com (EricF) wrote:
>
> > In article <4788bd45$0$2109$edfad...@dtext02.news.tele.dk>,
> > "Ole Nielsby" <ole.niel...@tekare-you-spamminglogisk.dk>
> > wrote:>Lars Uffmann <a...@nurfuerspam.de> wrote:
>
>     [...]
>
> > My 2 cents: If you have a small application without a lot of
> > classes, you don't want these guis. You probably don't need a
> > gui. A decent text editor and command line builds are better.
> > If you have a large application and lots of classes, a gui is
> > useful. Expect some headaches. You may be better off with the
> > gui as a text editor and building/debugging with the command
> > line tools.
>
> For editing code (or text documentation), a classical editor is
> probably the ideal tool.  

classical? vi?

these things are a matter of perference but graphical
editors can be nice. I use ConText.

> For building, you need a command line
> interface anyway---

why?

> you'll want to trigger your complete rebuilds
> at a time when no one is using the system.

I can do this with a gui


> 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.

yes


--
Nick Keighley

Nick Keighley

unread,
Jan 18, 2008, 9:08:40 AM1/18/08
to
On 15 Jan, 21:45, James Kanze <james.ka...@gmail.com> wrote:
> 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:

<snip>

> 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.

but sometimes it's a pain.

- no! no! I don't want a cpp file".
- no, I don't want all the setters and getters generated automatically
- nor do I want all the setters to return a reference
- is it *really* quicker to dig though 3 or 4 dialog boxes,
find the obscure setting (maybe have to read the help)
just to make a method const? I only have to type 5 characters to
do it in c++!

yes you can do these things, but is it easy?

<snip>

when I'm not forced to use Rose. I write the header first.
Then copy it into the cpp file and hack in the code.
The cpp and h files automatically match.

I have a large Rose model (legacy code). But if I want
to find something I search for it in STI's Understand for C++.
Understand is far easier to jump around in than Rose's UML.
Maybe its a bad model.


--
Nick Keighley

Nick Keighley

unread,
Jan 18, 2008, 9:18:10 AM1/18/08
to
On 14 Jan, 04:45, efriedNoS...@yahoo.com (EricF) wrote:
> In article <z7mij.2697$R_4.2...@newsb.telia.net>, =?UTF-8?B?RXJpayBXaWtzdHLDtm0=?=

> <Erik-wikst...@telia.com> wrote:
> >On 2008-01-13 07:44, EricF wrote:

<snip>

> >> [...] getting a console project setup is not intuitive. I find that


> >> most things work fine, but then I run into a usability issue.
>
> >I usually create an empty console application and that works fine. Of
> >course there are a number of compiler settings that have to be changed
> >but you run into that with any compiler that I know of.
>
> Yes, the empty console app is the key. I made the mistake of letting the
> wizard set up the console project, naively assuming a wizard would set it up
> right. After doing that, it was impossible to compile without including some
> ms specific header. :-(


"beware of wizards, for they are subtle and quick to anger"

"meddle not in the affairs of wizards"

--
Nick Keighley

Paul M. Dubuc

unread,
Jan 18, 2008, 3:16:53 PM1/18/08
to
James Kanze wrote:

> 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.

But at least the documentation tends to be more accurate. :-)

--
Paul M. Dubuc

Linonut

unread,
Jan 18, 2008, 3:35:59 PM1/18/08
to
* James Kanze peremptorily fired off this memo:

> On Jan 17, 6:35 pm, Linonut <lino...@bollsouth.nut> wrote:
>> * James Kanze peremptorily fired off this memo:
>

>> If you can't do a seamless round trip, I'd rather refine the
>> code by editing and then regenerate the diagrams.
>
> You do the diagrams first, regardless.

Sorry dude, although our process calls for diagrams/design first, I
personally use code as they way to get a jumpstart on the diagrams.

Anyway, I think the whole Rational thing is a bit of a sinkhole, and I
have trouble understand how it was desirable enough to support the huge
cost. Rose is the best tool of the bunch in the "Suite", but it is
still buggy in the version we have.

>> Only for larger projects. Smaller projects don't need the overhead
>> UML.
>
> It's not really overhead. Do the UML first, and you're more
> productive.
>
> Of course, there is a break-even point---I don't bother with UML
> (or C++, for that matter) for things less than about 500 lines
> of code. I'll just bang it into shell script and awk, without
> really much design up front.

It really depends how your mind works.

Also, once the stuff gets out in the lab, you probably will find stuff
that was not thought of up front.

> Rose is really the only such tool I've used to any extent. (I
> did try Together a little---it has some nice points as well, but
> it doesn't seem to work well in my environment---a very small,
> very slow Sparc, with not very much memory.)

I haven't found the perfect one yet. I've tried Rose, umbrello, argouml
(Java based), and bouml (a one-man project, but not bad).

And they all generate a different flavor of UML XML.

>> What I find works best for me is to do a lot of the skeletal
>> header files up front, until I start to lose the picture of
>> their relationships. Then I reverse engineer, find the
>> obvious flaws, then continue coding, then reverse engineer
>> again.
>
> How do you know what classes you're going to need, if you
> haven't done a few class diagrams, scenarios, etc.? (I find
> scenarios particularly useful in the early stages of design.
> But I think part of what I use them for might better be handled
> with CRC cards.)

Well, we do requirements, use-cases, etc. And a lot of the classes are
pretty obvious (at a high-level) based on what you need to do.

I just find the drawing is too slow, and I can't easily add comments.
When I feel I'm losing a grip on the design, then I'll reverse-engineer
it and use the diagrams to reorient.

>> It's too bad there isn't a diagramming tool that will make
>> only /incremental/ changes to your code, preserving the rest
>> of the documentation and code without the need to use arcane
>> markup.
>
> I'm not sure what your problem here is. Rose separates the code
> fairly cleaning into the part it maintains, and the part you
> maintain. It never modifies the part you maintain.

Cool. Unfortunately, we don't have a Linux implementation, and probably
never will. Ironic, since the UNIX roots of Rational are so obvious.
The customer had this installation available, so we might as well use
it. Think of the money we'll save. <grin>

> As for the mark-up---you want something, so you know what you
> can modify, and what you can't (or if you prefer, what's yours,
> and what's Rose's). The last time I used it, I set up the
> editor (I was using emacs at the time) so that it displayed the
> mark-up very discreetly, unlike normal comments. (I use a dark
> green background: the Rose generated mark-up was dark-gray,
> normal comments yellow.)

I've gotten used to Doxygen markup. That's all the markup I care to
use. And, since Rose has the bugs, I just don't bother with it anymore.

> We didn't handle requirements with Rose. On the last project I
> used Rose on, they came from outside. In Word format:-) (which
> was a pain, because we didn't have any PC's in the development
> group---just Sun Sparcs---and only had it in hard copy form).

Count your blessings. We have to open up a Word document to enter
requirements. And use special add-in menus to save it, or else the
document is corrupted. It's insane.

> But again, that's the weakness I've been talking about:
> integration of text and diagrams.

Which is why I tend to not rely on UML. It is helpful, but not a
panacea.

--
I can't die until the government finds a safe place to bury my liver.
-- Phil Harris

Ian Collins

unread,
Jan 18, 2008, 5:07:21 PM1/18/08
to
James Kanze wrote:
> On Jan 15, 1:36 pm, Linonut <lino...@bollsouth.nut> wrote:
>
>> 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.
>
Don't get me going on that one!

>
>> 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.
>

I've found it more productive to use a small application maintained by
me or my team to generate boilerplate (on our case, class and unit test
header and cc files) and update project build and test files. That way
we get the exact formatting, copyright and stubs we want for a
particular project or client.

>> 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.
>

Solve that problem by writing the two together.

>> 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.
>

My first task in my last job was to review all of the tools available
and select one for my team. Rose would have been a good fit for the
given requirements, but the cost was prohibitive and we didn't like the
idea of having our process driven by a tool.

In the end I concluded that the best tool was no tool, spent the money
elsewhere and took the team on a most enjoyable and successful journey
into the land of Agile.

--
Ian Collins.

Reply all
Reply to author
Forward
0 new messages