Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 24 Oct 2004 00:45:55 +0300
From:      Giorgos Keramidas <keramida@ceid.upatras.gr>
To:        John Oxley <john.oxley@gmail.com>
Cc:        questions@freebsd.org
Subject:   Re: A good IDE for C development?
Message-ID:  <20041023214555.GA4233@gothmog.gr>
In-Reply-To: <ba2001e504102313521b515350@mail.gmail.com>
References:  <42734323-2522-11D9-8790-000A95BE58A4@tf7.so-net.ne.jp> <20041023193924.GA52933@gothmog.gr> <ba2001e504102313521b515350@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On 2004-10-23 22:52, John Oxley wrote:
> On Sat, 23 Oct 2004 22:39:24 +0300, Giorgos Keramidas wrote:
> > On 2004-10-24 03:35, Choy Kho Yee wrote:
> > > Hi, I am a student of Computer Science.
> > > I am looking for a good IDE(integrated development environment?) for
> > > developing C programs. Something like netbeans for Java would be good.
> > > Since I am still learning, I will mainly develop with source codes.
> >
> > Emacs is perfectly fine for most of this.
>
> Not to start a flame war on which is the better editor, but vim with
> ctags is my way.

Yeah, I know :-)

I use both Emacs and vim, with reasonable levels of comfort.  I haven't found
a way to convince ctags that it's ok for a tag to appear multiple times (which
can really be annoying when editing the sources of a kernel, where names are
*bound* to appear multiple times), but I know what you mean.

When I'm working remotely, on machines that I can't install Emacs, knowing how
to do my work with vi/vim is extremely cool too.

To the original poster.  The UNIX way of working on large software projects, a
lot of times, uses a different paradigm from the "all in one" philosophy of
IDE environments that you might have gotten used to until now.

There are two parts of working on a software project that are mostly important:

	- Source code browsing.
	- Building, linking and debugging.

The first can be done remarkably well on UNIX, without the need for a special
IDE, once you get used to making the best out of your editor and shell.
A typical example of this is searching for the definition of a particular
variable, function or macro in a large tree.  Object browsers integrated with
the commonly used IDEs help with that.  The same can be done with a short grep
command on UNIX.  The need for complicated "search" dialogs that some IDEs
have is non-existent here, in the UNIX world, because we don't need a special
"integrated" environment to search our files ;-)

If you use tools like ctags or etags, which John mentioned in the message I'm
replying to, this can be done even faster.  Moving from any file in the kernel
tree of FreeBSD to the beginning of the ether_input() function that I
mentioned above is as simple as hitting `ESC .' (that is ESC followed by a
dot).  The same can be done in vim with ^] (CTRL + closing bracket).  The
entire operation takes a few milliseconds.  The same can be done for macros,
variables, struct members, enums, typedefs, and a lot of other things.

The building, linking and debugging of programs can also be done from within
your editor; modern vi clones like vim and Emacs can compile any program, keep
a log of the warnings and errors, show the compile output in a buffer, move
from an error message to the correct line of source, etc.

You don't *have* to use the editor/IDE to do that though, and this is even
more comfortable at times.

You mentioned that you're still learning, this is why I wrote this long post.
Since you are learning, you might as well learn to work without the need for
netbeans, eclipse, kdevelop or whatever :-)

- Giorgos



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20041023214555.GA4233>