Need advice on selecting a development environment

R

Ramon F Herrera

My goal is to study (in the RMS sense) and familiarize myself with
some OSS code, until I reach the point at which I can make non-trivial
modifications to it. The class of applications I have in mind are
almost always written in C and run on Unixes. Historically, I have
used a terminal emulator, vi, and gcc/gdb for this type of project,
but would like to become more productive and take advantage of the
facilities provided by an IDE.

Here's the catch: I would like my front end environment (IDE) to run
on Windows, while the target code, debugger, etc. run on Unix. I
simply won't carry a Linux laptop around, although that day is
approaching by becoming feasible. I will not use remote X Windows,
either.

What I would like to do is take a directory filled with source code,
copy it to my Windows PC and use some IDE to manipulate the code.
These are my candidate IDEs:

- Visual C/C++
- Eclipse with the C++ development plugin
- NetBeans with the C++ development plugin

Notice that I DO NOT care about actually compiling/linking anything! I
will be satisfied with going back to the ancient mode and compiling,
debugging in the remote system vis ssh (after I am familiar with the
code, that is). What I really want out of the GUI IDEs is the ability
to double-click on a variable name and inquire about its definition/
declaration, find all references to it, perform complex searches and
things of that nature.

I hate long postings, so...

To be continued...

-Ramon
 
R

Ramon F Herrera

My goal is to study (in the RMS sense) and familiarize myself with
some OSS code, until I reach the point at which I can make non-trivial
modifications to it. The class of applications I have in mind are
almost always written in C and run on Unixes. Historically, I have
used a terminal emulator, vi, and gcc/gdb for this type of project,
but would like to become more productive and take advantage of the
facilities provided by an IDE.

Here's the catch: I would like my front end environment (IDE) to run
on Windows, while the target code, debugger, etc. run on Unix. I
simply won't carry a Linux laptop around, although that day is
approaching by becoming feasible. I will not use remote X Windows,
either.

What I would like to do is take a directory filled with source code,
copy it to my Windows PC and use some IDE to manipulate the code.
These are my candidate IDEs:

- Visual C/C++
- Eclipse with the C++ development plugin
- NetBeans with the C++ development plugin

Notice that I DO NOT care about actually compiling/linking anything! I
will be satisfied with going back to the ancient mode and compiling,
debugging in the remote system vis ssh (after I am familiar with the
code, that is). What I really want out of the GUI IDEs is the ability
to double-click on a variable name and inquire about its definition/
declaration, find all references to it, perform complex searches and
things of that nature.

I hate long postings, so...

To be continued...

-Ramon


As promised, let's continue. The topic is superimposing an IDE on some
existent code that was developed on a foreign, possibly non-IDE. The
one issue that prompted this posting was the very critical detail of
hierarchically stored source code. We obviously don't want to move the
source files across directories, as things can get real messy (not to
mention the code maintainers' refusal to accept my humble code). I
began experimenting by copying the full source code of Asterisk to my
PC. It is certainly a non-trivial package, with 402 C files spread
across several subdirectories. "Let's try with Visual C++ first", I
said.

The problem is that VC++ doesn't seem to be prepared to handle
hierarchical code in its own terms, does it? (this question will come
back, but about Eclipse and NB). I can create a "filter" where all
the .h, .c and even other files are nicely kept, but this is not the
same thing as the structure afforded by a filesystem. The pervasive
name collision problem is always ready to bite you. A lot of the
source code has includes like this:

#include "asterisk/logger.h"

Those can be several levels deep. Once again, the hierarchy have to be
kept intact.

I guess I don't have a specific question so far, but would love to
hear comments from such experienced and insightful folks. :)

-Ramon
 
R

Ramon F Herrera

What I really want out of the GUI IDEs is the ability
to double-click on a variable name and inquire about its definition/
declaration, find all references to it, perform complex searches and
things of that nature.


Since C and C++ lack Java's inheritance I won't be able to follow or
track it with the IDE, but I should still be able to use some forms
(?) of refactoring, maybe only the simplest which is renaming, I
suppose.

-Ramon
 
S

Sean

My goal is to study (in the RMS sense) and familiarize myself with some
OSS code, until I reach the point at which I can make non-trivial
modifications to it. The class of applications I have in mind are almost
always written in C and run on Unixes. Historically, I have used a
terminal emulator, vi, and gcc/gdb for this type of project, but would
like to become more productive and take advantage of the facilities
provided by an IDE.

Here's the catch: I would like my front end environment (IDE) to run on
Windows, while the target code, debugger, etc. run on Unix. I simply
won't carry a Linux laptop around, although that day is approaching by
becoming feasible. I will not use remote X Windows, either.

I understand not wanting to mess with remote xserver, but the Linux
laptop situation seems pretty good to me. I have an Ubuntu thinkpad as
my main machine. It suspends and hibernates, sometimes faster than
Windows, uses wireless and nearly any type of authentication with ease,
and is simply a rock solid easy to use system.
What I would like to do is take a directory filled with source code,
copy it to my Windows PC and use some IDE to manipulate the code. These
are my candidate IDEs:

- Visual C/C++

Still clearly the best in my opinion. The big downside here is that
there is no Linux version, and likely there never will be.
- Eclipse with the C++ development plugin

Eclipse has a lot of nice functionality, even though configuration and
plugin management can get somewhat complicated at times. My big gripe
about Eclipse used to be an overall slugishness; but the latest version,
Europa, runs nice and smooth with snappy response.
- NetBeans with the C++
development plugin

The C++ plugin for NetBeans is still too new for me to entirely trust to
any of my projects, but the IDE itself seems well thought out. The
drawbrack with NetBeans is the smaller pool of available plugins, and
it's not nearly as configurable as Eclipse

At the end of the day, I prefer Eclipse.
 
S

Sean

Since C and C++ lack Java's inheritance I won't be able to follow or
track it with the IDE, but I should still be able to use some forms (?)
of refactoring, maybe only the simplest which is renaming, I suppose.

-Ramon

You're right about C not supporting inheritance, but C++ most definitely
does. The example below is inheritance in C++:

class Mustang {
public:
Car;
}

Here Mustang is a subclass of Car. You can inherit from multiple classes
by putting a space between each class name, even though multiple
inheritance generally isn't recommended (I can explain further on that
point if you wish).
 
S

Sean

The problem is that VC++ doesn't seem to be prepared to handle
hierarchical code in its own terms, does it? (this question will come
back, but about Eclipse and NB). I can create a "filter" where all the
.h, .c and even other files are nicely kept, but this is not the same
thing as the structure afforded by a filesystem. The pervasive name
collision problem is always ready to bite you. A lot of the source code
has includes like this:

#include "asterisk/logger.h"

Those can be several levels deep. Once again, the hierarchy have to be
kept intact.

I've never hear of Visual Studio messing with package structure before.
It should be able to handle it just fine.
 
W

William Pursell

What I really want out of the GUI IDEs is the ability
to double-click on a variable name and inquire about its definition/
declaration, find all references to it, perform complex searches and
things of that nature.

1) This is totally OT in all of the groups you've
posted to.

2) man ctags

The point I'm making in number 2 is that elsethread you dismiss the
standard tools as "ancient", but you seem to be totally
unaware of the fact that they can easily perform
the tasks you request.
 
R

Richard

Ramon F Herrera said:
Since C and C++ lack Java's inheritance I won't be able to follow or
track it with the IDE, but I should still be able to use some forms
(?) of refactoring, maybe only the simplest which is renaming, I
suppose.

What do you mean by Java's inheritance here? If you think C++ doesn't
have this then I suspect that a lot of your decision making will be
wrong since you don't actually understand or need C++.
 
R

Richard

Ramon F Herrera said:
As promised, let's continue. The topic is superimposing an IDE on some
existent code that was developed on a foreign, possibly non-IDE. The
one issue that prompted this posting was the very critical detail of
hierarchically stored source code. We obviously don't want to move the
source files across directories, as things can get real messy (not to
mention the code maintainers' refusal to accept my humble code). I
began experimenting by copying the full source code of Asterisk to my
PC. It is certainly a non-trivial package, with 402 C files spread
across several subdirectories. "Let's try with Visual C++ first", I
said.

The problem is that VC++ doesn't seem to be prepared to handle
hierarchical code in its own terms, does it? (this question will come
back, but about Eclipse and NB). I can create a "filter" where all
the .h, .c and even other files are nicely kept, but this is not the
same thing as the structure afforded by a filesystem. The pervasive
name collision problem is always ready to bite you. A lot of the
source code has includes like this:

#include "asterisk/logger.h"

Those can be several levels deep. Once again, the hierarchy have to be
kept intact.

I guess I don't have a specific question so far, but would love to
hear comments from such experienced and insightful folks. :)

-Ramon

You don't want to compile? This is silly for a start. Did you think
about simply running VMWare and running the Windows IDE you are familiar
with? Are you familiar with any? Why not just use vi and tags if you are
only browsing the code? You dont need to compile and debug you say
(although this is silly IMO)?

Try dual boot on your laptop maybe? That or VMWare under Windows to run
a Linux system as a virtual machine.

Having said that your aim is to study OSS code. You do realise that a
lot of OSS code can be compiled and run on Windows too?
 
R

Roedy Green

- Visual C/C++
- Eclipse with the C++ development plugin
- NetBeans with the C++ development plugin

one other you might want to throw in the mix see
http://mindprod.com/jgloss/intellij.html

Have a look at the refactorings. Check out the rearranger plugin.
Check out how finely you can control format.

The nice thing is you can take an extended test drive of all three
for free. Every IDE has is strengths and weaknesses. You have to try
each one to see if it gives you lowest overall frustration quotient.

I found IntelliJ quite intuitive, but that may because I did all my
ground breaking in Eclipse.
 
L

Lew

You might as well have made it one posting, since you quoted the first entire
in the second.
You don't want to compile? This is silly for a start. Did you think
about simply running VMWare and running the Windows IDE you are familiar
with? Are you familiar with any? Why not just use vi and tags if you are
only browsing the code? You dont need to compile and debug you say
(although this is silly IMO)?

Another excellent candidate is emacs, which is syntax-aware and integrates
with the gcc suite and gdb should you decide to get over your prejudice
against (test) compilation. It is IDE-neutral, so it will completely not
corrupt whatever project files were emitted by your origin, unless you will it so.

I believe the vi(m) world to be the only reasonable alternative to the emacs
world. Get Cygwin for your Windows environment so that you can work within a
UNIX-like shell. Plus it has an X-Windows server, so you can log in to a UNIX
host through SSH with X forwarding (-Y option to ssh) from your Windows box.
<http://www.cygwin.com/>
 
R

Ramon F Herrera

You might as well have made it one posting, since you quoted the first entire
in the second.

In Google the quoted part conveniently disappears, like functionality
provided by the little '+' and '-' signs used to selectively display
XML and other code in all IDEs. Those are the kind of things that 'vi'
doesn't provide.

Incidentally: what is the equivalent of the vi '%' in the different
IDEs? I want to position the cursor at a parenthesis, bracket or brace
and then jump to the matching one. The original non-Eclipsized
JBuilder has Ctrl-} and Ctrl-{, but I am not sure whether Eclipse, NB
and VC++ have such a convenient shortcut.

-Ramon
 
R

Ramon F Herrera

> I've never hear of Visual Studio messing with package structure
> before. It should be able to handle it just fine.

You are absolutely right. After my posting, I did some
experimentation... It turns out that there are two ways to handle
existent code in VS. In one of them (which should be banished) the
subdirectories are recursively searched and the source files are
flattened. The .c and .h source files are displayed as a link.

The really useful and cool command is "New Project From Existent
Code". The hierarchical structure is left alone, as logic dictates.

I hate to admit it, but even Microsoft can do things the right way
sometimes, and they seem to be slowly changing lately... Believe or
not, they even a a menu called "Community" in VS.

O tempora, o mores...

-Ramon
 
L

Lew

In Google the quoted part conveniently disappears, like functionality
provided by the little '+' and '-' signs used to selectively display
XML and other code in all IDEs. Those are the kind of things that 'vi'
doesn't provide.

I don't use either Google Groups (that's what you meant, right?) nor vi, nor
do I see them as being in the same application space. My newsreader doesn't
have those little '+' or '-' prompts, either. It does show the entire length
of quoted material in a different color, which aids readability. It also
line-wraps quoted material quasi-independently of source line breaks, which
can be helpful or annoying, or both at once.

In the space of development of applications, I don't know much about vi. I do
know that many people swear by variants of it to this day. Perhaps some of
those variants have features you'd like, but far be it from me to talk you
into vi. No one's talked me into it, yet, beyond the essentials to get by
when there is nothing else that will do.
 
L

Lew

Ramon said:
I hate to admit it, but even Microsoft can do things the right way
sometimes, and they seem to be slowly changing lately... Believe or
not, they even a a menu called "Community" in VS.

O tempora, o mores...

Doesn't that translate to, "Resistance is Futile! You will be assimilated!"

Unison: We are the Microsoft Community!
 
R

Ramon F Herrera

> Doesn't that translate to, "Resistance is Futile! You will be
assimilated!"


Yes it does, but the question is: who is the irresistible force and
who the immovable object?

I never said whether it was RMS or BG quoting Greeks and Romans in the
same sentence.

-Ramon
 
J

Jeff Higgins

Ramon F Herrera wrote
[snip]
Incidentally: what is the equivalent of the vi '%' in the different
IDEs? I want to position the cursor at a parenthesis, bracket or brace
and then jump to the matching one. The original non-Eclipsized
JBuilder has Ctrl-} and Ctrl-{, but I am not sure whether Eclipse, NB
and VC++ have such a convenient shortcut.
If you have the mentioned IDEs installed you might try customizing the
key bindings to your preference. If not, a short goog reveals answers.
 
K

Keith Thompson

Lew said:
I believe the vi(m) world to be the only reasonable alternative to the
emacs world. Get Cygwin for your Windows environment so that you can
work within a UNIX-like shell. Plus it has an X-Windows server, so
you can log in to a UNIX host through SSH with X forwarding (-Y option
to ssh) from your Windows box.
<http://www.cygwin.com/>

<OT>
I'm finding that Cygwin and Windows Vista have some serious
compatibility problems. Using the Xming X server rather than the one
provided by Cygwin alleviates some, but not all, of the problems.
Cygwin works well with Windows XP.
</OT>

If you want to discuss Cygwin further, I recommend doing so in a
different forum, either a Windows newsgroup or a Cygwin mailing list.
 
C

CBFalconer

Ramon said:
.... snip ...

I guess I don't have a specific question so far, but would love to
hear comments from such experienced and insightful folks. :)

None of this has anything whatsoever to do with the C language.
Your cross-posting is offensive.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,994
Messages
2,570,223
Members
46,812
Latest member
GracielaWa

Latest Threads

Top