This question pertains to emacs and other GNU tools as well as other
tools (i.e GTK+) that compliment and work well with GNU products. I am
a long time computer user and I am learning "C" programming. I have
done extensive research on what IDE to utilize for my learning but I
also believe in the philosophy behind GNU and would like to be more
involved and prefer to learn their tools.
I would like a recommendation please as to what "separate" GNU tools
to install (also perhaps including GTK+ and Glade) that integrate well
with each other and would allow me the same type tools that are
typically supplied with a complete IDE such as Code::Blocks, Code Lite
etc. for a win32 platform.
In other words, what separate tools do I need to install that will
allow me to build both console and window applications (on a win32
platform) using "C" and eventually "C++" that offer the same or
similar options as those found in your typical IDE's such as
Code::Blocks, Code Lite, lcc-32 and Pelles C?
This is a difficult question for a newbie to locate as I find myself
getting buried in complicated installation procedures for tools I may
not need. Getting over an installation hurdle is certainly a learning
experience but some install instructions can be quite intimidating and
would kindly like to know if I am on the right path.
On the flip side, installing "Code::Blocks", "lcc-win32", "Code Lite"
and "Pelles C" are all pretty much a one click install. However, the
GNU mailing lists are a tremendous support arm and support is critical
to a newbie.
So far I have learned that the following combination of tools for
windows win32 platform x32 (i.e.win2k, winXP and win7) could be a
start but perhaps some are not needed.
Text Editor: emacs
GUI Builder: GTK+2 or Glade
Compiler: MinGW
Debugger: ?
Linker: ?
Standard "C" Library: ?
I am loading my first Linux distro soon and prefer to be involved with
a family of tools that are available for both Linux and Windows. I
also use "Windows" daily (win2k, winXP and win7).
My question above pertains to learning "C" programming and installing
GNU tools as well as GTK+ on a 32 bit win32 platform. Any suggestions
or links would
be much appreciated.
> So far I have learned that the following combination of tools for
> windows win32 platform x32 (i.e.win2k, winXP and win7) could be a
> start but perhaps some are not needed.
> Text Editor: emacs
> GUI Builder: GTK+2 or Glade
> Compiler: MinGW
> Debugger: ?
GDB, of course, available for download from the MinGW site. Nothing
else will debug GCC-generated programs as efficiently as GDB does.
Emacs includes a front end for it, as I'm sure you know.
> Linker: ?
GNU Binutils, from MinGW. You have no other choices if your compiler
is GCC.
> Standard "C" Library: ?
Windows comes with one already, so you don't need anything. MinGW
runtime and headers come with a small set of additional functions that
are missing or grossly misfeatured in the MS-provided standard library
that is part of Windows.
Be sure to download also these important tools:
ID-Utils
Findutils
Make
Grep
and learn about etags and ebrowse that come with Emacs (if you didn't
know about them already).
> Date: Thu, Oct 4, 2012 at 1:26 PM
> From:, Eli Zaretskii <e...@gnu.org> wrote:
>> Date: Thu, 4 Oct 2012 12:48:49 -0400
>> From: Wally Lepore <wallylep...@gmail.com>
>> So far I have learned that the following combination of tools for
>> windows win32 platform x32 (i.e.win2k, winXP and win7) could be a
>> start but perhaps some are not needed.
>> Text Editor: emacs
>> GUI Builder: GTK+2 or Glade
>> Compiler: MinGW
>> Debugger: ?
> GDB, of course, available for download from the MinGW site. Nothing
> else will debug GCC-generated programs as efficiently as GDB does.
> Emacs includes a front end for it, as I'm sure you know.
Thank you Eli. Yes this sure looks like the real deal for sure. Thank
you very much. However I will most certainly have further questions
after this initial reply please and would like to know if this is the
proper mailing list to continue on with this thread/question?
If not, can you please direct me to the proper mailing list? I
certainly don't prefer to drag you thru all questions involved in the
install process as I will most certainly do my homework first before
asking.
Also, getting back to MinGW please. I found this interesting link
http://mingw.org/wiki/New_to_MinGW and it appears they are suggesting I download and install additional files.
Part of the page said:
-- begin --
Download and extract
Because there are many things to use (compiler, linker, utils, API,
etc.) you need to download several files:
- gcc the compiler
- mingwrt the Mingw Runtime system
- w32api the Windows Application Programming Interface
- binutils linker, profiling, windows resources, etc.
- make which gathers all "things to do" to achieve your program
- gdb a great debugger to look inside your app while it is running
The complete name for each file to download includes its version.
You can also download the MinGW-xxx.exe file, and let it download the
rest, but probably it doesn't download the last version of each file.
The new mingw-get intaller will improve this situation when it becomes
available.
Files are compressed in Unix style: .tar.gz
-- end --
>> Linker: ?
> GNU Binutils, from MinGW. You have no other choices if your compiler
> is GCC.
Ok, then I assume GNU Binutils is included in MinGW? On MinGW's web
site it said:
-- begin --
Primarily intended for use by developers working on the native
MS-Windows platform, but also available for cross-hosted use, (see
note below -- you may need to follow the "read more" link to see it),
MinGW includes:
- A port of the GNU Compiler Collection (GCC), including C, C++, ADA
and Fortran compilers;
- GNU Binutils for Windows (assembler, linker, archive manager)
- A command-line installer (mingw-get) for MinGW and MSYS deployment
on MS-Windows
- A GUI wrapper (mingw-get-inst) for the command line installer
-- end --
>> Standard "C" Library: ?
> Windows comes with one already, so you don't need anything. MinGW
> runtime and headers come with a small set of additional functions that
> are missing or grossly misfeatured in the MS-provided standard library
> that is part of Windows.
Ok, but it sure sounds scary having to rely on Windows C Library. I
guess I should be ok with it....... correct?
> Be sure to download also these important tools:
> ID-Utils
> Findutils
> Make
> Grep
> and learn about etags and ebrowse that come with Emacs (if you didn't
> know about them already).
Yes I see lots of files. I have no idea what they are utilized for but
I will study and find out. Also Eli, I have little experience with
working in a console environment. I have been successfully working
through the learning process in regards to how-to verify downloaded
files and checksums using md5sum and md5sums programs in the command
line. No problem. I also have many DOS books from "back in the day" to
refer to which I have benn studying much lately.
Will the set-up scenario you kindly discussed above be too
overwhelming for a newbie programmer like myself or would I be better
off simply starting with installing an IDE already set-up to run on
win32 platform such as Code::Blocks, Code Lite, lcc-win32 etc.where
all procedures are accomplished in the same window?
I understand the drawback to utilizing a complete package associated
with an IDE is that a lot of the procedures and tools are
automatically executed for the user. Most times, the user has no idea
that a particular tool is actually running a process.
At least with your recommended tools (above), I would know why a
particular tool is in my tool box and what its used for and when to
use it. I would understand the whole process better. Its just the
installation part that I would be most concerned with. If I could
survive it.
If you just started with C or programming in general, don't waste your
time searching for a featureful IDE.
Just start coding, it's better to learn a new language without learning
a new editor at the same time.
You probably, also can skip using a debugger at the beginning.
> Thank you Eli. Yes this sure looks like the real deal for sure. Thank
> you very much. However I will most certainly have further questions
> after this initial reply please and would like to know if this is the
> proper mailing list to continue on with this thread/question?
The MinGW mailing list, mingw-us...@lists.sourceforge.net, is a much
better place, since your questions have little to do with Emacs.
> I assume this is the home page for MinGW -> http://mingw.org/ > Is GDB part of the download for MinGW?
> Also, getting back to MinGW please. I found this interesting link
> http://mingw.org/wiki/New_to_MinGW > and it appears they are suggesting I download and install additional files.
> Part of the page said:
> -- begin --
> Download and extract
> Because there are many things to use (compiler, linker, utils, API,
> etc.) you need to download several files:
> - gcc the compiler
> - mingwrt the Mingw Runtime system
> - w32api the Windows Application Programming Interface
> - binutils linker, profiling, windows resources, etc.
> - make which gathers all "things to do" to achieve your program
> - gdb a great debugger to look inside your app while it is running
That's the basic setup, yes.
> >> Linker: ?
> > GNU Binutils, from MinGW. You have no other choices if your compiler
> > is GCC.
> Ok, then I assume GNU Binutils is included in MinGW?
Yes, see above: it's in the list you cited.
> >> Standard "C" Library: ?
> > Windows comes with one already, so you don't need anything. MinGW
> > runtime and headers come with a small set of additional functions that
> > are missing or grossly misfeatured in the MS-provided standard library
> > that is part of Windows.
> Ok, but it sure sounds scary having to rely on Windows C Library. I
> guess I should be ok with it....... correct?
> Yes I see lots of files. I have no idea what they are utilized for but
> I will study and find out.
There's a README there to help.
> Will the set-up scenario you kindly discussed above be too
> overwhelming for a newbie programmer like myself or would I be better
> off simply starting with installing an IDE already set-up to run on
> win32 platform such as Code::Blocks, Code Lite, lcc-win32 etc.where
> all procedures are accomplished in the same window?
MinGW comes with an installer, I suggest you use it.
I cannot tell anything about the IDE's you mention: never used them.
On Thu, Oct 4, 2012 at 4:19 PM, <v.plechin...@gmail.com> wrote:
> If you just started with C or programming in general, don't waste your
> time searching for a featureful IDE.
> Just start coding, it's better to learn a new language without learning
> a new editor at the same time.
> You probably, also can skip using a debugger at the beginning.
> Have fun with emacs
Thank you v.plechinger. Yes I understand. Most of the pre-bundled
IDE's I have looked at are quite simple to install (i.e. code::blocks,
lcc-win32, Pelles C and Code Lite) and easy to navigate.
However I'm simply looking to better understand what each tool
actually accomplishes in a full featured "separate tool" IDE rather
than simply allowing the pre-bundled IDE packages (i.e. Code::Blocks,
Code Lite etc.) to accomplish most tasks automatically for me.
Code::Blocks and Code Lite are certainly great products but I simply
wanted to know what the "separate tool" route would encompass versus
the one-in-all packages.
The "separate tool" component IDE that Eli recommended is exactly what
I was searching for. Perhaps I will install the most basic of the
mentioned tools (emacs and MinGW) and then install the additional
tools as I progress.
Yes you are correct when you say, "Just start coding". Let me not
forget my goal!
On Thu, Oct 4, 2012 at 4:20 PM, Eli Zaretskii <e...@gnu.org> wrote:
>> Date: Thu, 4 Oct 2012 15:41:23 -0400
>> From: Wally Lepore <wallylep...@gmail.com>
>> Thank you Eli. Yes this sure looks like the real deal for sure. Thank
>> you very much. However I will most certainly have further questions
>> after this initial reply please and would like to know if this is the
>> proper mailing list to continue on with this thread/question?
> The MinGW mailing list, mingw-us...@lists.sourceforge.net, is a much
> better place, since your questions have little to do with Emacs.
>> Yes I see lots of files. I have no idea what they are utilized for but
>> I will study and find out.
> There's a README there to help.
Yes I did see that README earlier. Thank you. Reading it now.
>> Will the set-up scenario you kindly discussed above be too
>> overwhelming for a newbie programmer like myself or would I be better
>> off simply starting with installing an IDE already set-up to run on
>> win32 platform such as Code::Blocks, Code Lite, lcc-win32 etc.where
>> all procedures are accomplished in the same window?
> MinGW comes with an installer, I suggest you use it.
All of those Java guys generally do trivial software engineering type
things, so it's to be expected they'd use something like Eclipse or
Netbeans.
On Oct 4, 2012 10:22 PM, "Óscar Fuentes" <o...@wanadoo.es> wrote:
<v.plechin...@gmail.com> writes:
> If you just started with C or programming in general, don't waste your
> time searching for a featureful IDE.
> Just start coding, it's better to learn a new language without learning
> a new editor at the same time.
> You probably, also can skip using a debugger at the beginning.
> Have fun with emacs
Great advice. Specially the part about the debugger. Debuggers should be
banned for beginners. They create terrible habits and foster sloppy
methods (edit-run-crash-debug-edit anyone?) that may ruin your career as
a competent programmer.
Good programmers don't expect to use a debugger when they develop their
software. If you end using one, it is higly probable that the bugs you
are trying to fix is not the worst problem with your project.
Wally Lepore <wallylep...@gmail.com> writes:
> On Thu, Oct 4, 2012 at 10:22 PM, Óscar Fuentes <o...@wanadoo.es> wrote:
>> Nor even on C/C++ Emacs is a top contender as an IDE anymore.
> Please clarify last sentence so I can better understand. Thank you
> very much.
Modern IDEs have a deep understanding of the programming language and
this brings in very interesting features that are out of the reach of
the simplistic syntactical parsing that Emacs does. One of the most
evident examples is code completion. If you write
foo.
on one of those modern IDEs, the type of `foo' is often known and the
candidates for completion that the IDE offers are restrained to the data
members or methods of the class/struct that corresponds to `foo'. Those
candidate methods are shown with signature and documentation. That alone
is a huge productivity boost when you are working with a big API.
Other related facilities are code browsing & navigation, refactoring,
accurate source code filling and unobtrusive error reporting as you
write code.
Emacs has partial support for some of those features, with CEDET always
shining on the horizon, but instead of catching up with other IDEs as
time passes, it is falling behind.
Then, on integrating with the traditional tools that comes with the IDE
(debuggers, profilers, etc) Emacs still is on the 90s. The GDB interface
looks primitive, flaky, arcane and inconvenient compared to other IDEs.
Don't get me wrong. I love Emacs and don't plan to switch anytime soon,
because Emacs is a great configurable *editor*. But I'll have a hard
time justifying the use of Emacs for C# or Java projects. My C++ work
does not suffer so much because I already know the APIs well enough,
although whenever I write or browse some "advanced" C++ I have to
struggle with CCMode auto-fill and font-locking capabilities.
And, to show the whole picture, it is true that Emacs is the best IDE
for quite a few languages. Those tend to be minority (but very
interesting) languages without the backing of Big Money but with very
devoted users that invest lots of time on improving Emacs' support for
their pet language.
> Emacs has partial support for some of those features, with CEDET always
> shining on the horizon, but instead of catching up with other IDEs as
> time passes, it is falling behind.
The Eclipse developers should be persuaded somehow to separate
the completion/refactoring stuff into a separate library. Is there a reason why this part is tied to their GUI editor? If it
were a separate library then any editor could use it, not just Eclipse.
> Text Editor: emacs
> GUI Builder: GTK+2 or Glade
> Compiler: MinGW
> Debugger: ?
gdb
> Linker: ?
> Standard "C" Library: ?
come with Windows
At some point, you want to get 'make', which automates the compile/link steps. Any serious project needs a build program.
~~
This is heresy on an emacs list (hence the private email), but I don't think emacs is a very good debugger. I certainly use it for all my editing in all languages, but not for debugging.
On Windows, I use either Eclipse or MS Visual C++. Both have a learning curve and some setup for each project, but then they work well.
On Linux, I use ddd (a GUI front end to gdb.) The UI isn't as polished as the Windows programs, but it requires zero configuration.
On Fri, Oct 05, 2012 at 02:49:47PM +0000, Tom wrote:
> Óscar Fuentes <ofv <at> wanadoo.es> writes:
> > Emacs has partial support for some of those features, with CEDET always
> > shining on the horizon, but instead of catching up with other IDEs as
> > time passes, it is falling behind.
> The Eclipse developers should be persuaded somehow to separate
> the completion/refactoring stuff into a separate library. Is > there a reason why this part is tied to their GUI editor? If it
> were a separate library then any editor could use it, not just > Eclipse.
I believe there is a project (led by some Google engineers) to have code
completion using clang based servers for editors like Vim and Emacs.
Phoronix reported on it a while back.
Suvayu Ali <fatkasuvayu+linux <at> gmail.com> writes:
> I believe there is a project (led by some Google engineers) to have code
> completion using clang based servers for editors like Vim and Emacs.
> Phoronix reported on it a while back.
But clang does only C/C++ and stuff, doesn't it? Eclipse has excellent
Java support and it is open source software, so it would be logical to
make the completion/refactoring engine independent of the Eclipse GUI, so that other FOSS editors can have access to the same level of
Java support as Eclipse has.
Tom <adatgyu...@gmail.com> writes:
> The Eclipse developers should be persuaded somehow to separate
> the completion/refactoring stuff into a separate library. Is > there a reason why this part is tied to their GUI editor? If it
> were a separate library then any editor could use it, not just > Eclipse.
Right. Something similar is mostly done for C# on Windows. Idebridge [1]
uses the SharpDevelop libraries for smart code completion and online
documentation. It works quite well once you patch it a bit (see the
Issues page on the project database)
> Emacs has partial support for some of those features, with CEDET always
> shining on the horizon, but instead of catching up with other IDEs as
> time passes, it is falling behind.
The programming feature I miss most in emacs is the code browsing: jump to the definition of a method, function, class, variable, and jump back to the original position. I tried to configure CEDET to do this, but have not succeeded so far.
Before drilling into CEDET, I would like to ask whether I'm looking at the right direction. What is the recommended tool for the code browsing in emacs? It should understand the language context, but strictly speaking I do not need any other features that CEDET provides.
On Fri, Oct 5, 2012 at 6:58 PM, Tima <tima.vaisb...@gmail.com> wrote:
> On Oct 5, 2012, at 7:23 AM, Óscar Fuentes wrote:
> > Emacs has partial support for some of those features, with CEDET always
> > shining on the horizon, but instead of catching up with other IDEs as
> > time passes, it is falling behind.
> The programming feature I miss most in emacs is the code browsing: jump to
> the definition of a method, function, class, variable, and jump back to the
> original position. I tried to configure CEDET to do this, but have not
> succeeded so far.
> Before drilling into CEDET, I would like to ask whether I'm looking at the
> right direction. What is the recommended tool for the code browsing in
> emacs? It should understand the language context, but strictly speaking I
> do not need any other features that CEDET provides.
Tima wrote:
> The programming feature I miss most in emacs is the code browsing:
> jump to the definition of a method, function, class, variable, and
> jump back to the original position. I tried to configure CEDET to do
> this, but have not succeeded so far.
I have always used TAGs tables created using the etags comand for
this. Then M-. , C-x 5 . and so forth. Then I usually M-*
pop-tag-mark or pop-global-mark or some such to return. In the Emacs
manual this is described in the "Tags Tables" section.
> Tima wrote:
>> The programming feature I miss most in emacs is the code browsing:
>> jump to the definition of a method, function, class, variable, and
>> jump back to the original position. I tried to configure CEDET to do
>> this, but have not succeeded so far.
> I have always used TAGs tables created using the etags comand for
> this. Then M-. , C-x 5 . and so forth.
Yes, I used TAGs in the past. Well documented in the emacs manual and works as expected.
I remember it could not always find the definition though. I think to get on par with what people called "IDE" the tag system has to understand the language semantics. And this, as Jai said, is indeed what Semantic (a part of CEDET) claims to do. I was wondering whether it is the state of the art or there is a simpler and better successor.
> > I have always used TAGs tables created using the etags comand for
> > this. Then M-. , C-x 5 . and so forth.
> Yes, I used TAGs in the past. Well documented in the emacs manual and works as expected.
> I remember it could not always find the definition though. I think to get on par with what people called "IDE" the tag system has to understand the language semantics. And this, as Jai said, is indeed what Semantic (a part of CEDET) claims to do. I was wondering whether it is the state of the art or there is a simpler and better successor.
At least in C and C++, tags never miss a definition for me. My only
problem with tags is that they sometimes show me more definitions
other than what I had in mind that match the symbol I type, either
because of case insensitivity or because of partial matches.
Tom <adatgyu...@gmail.com> writes:
> The Eclipse developers should be persuaded somehow to separate
> the completion/refactoring stuff into a separate library. Is > there a reason why this part is tied to their GUI editor? If it
> were a separate library then any editor could use it, not just > Eclipse.
Eli Zaretskii <e...@gnu.org> writes:
>> I remember it could not always find the definition though. I think
>> to get on par with what people called "IDE" the tag system has to
>> understand the language semantics. And this, as Jai said, is indeed
>> what Semantic (a part of CEDET) claims to do. I was wondering
>> whether it is the state of the art or there is a simpler and better
>> successor.
> At least in C and C++, tags never miss a definition for me. My only
> problem with tags is that they sometimes show me more definitions
> other than what I had in mind that match the symbol I type, either
> because of case insensitivity or because of partial matches.
Is the TAGS format extensible so a new fields could be added?
It would useful if the identifiers were tagged (pun intended) with the
the "type": class, method, static function, constant etc.
For example find-tag could then support a customized
find-first/find-next order (eg. class first).
You could also use it to make the function guess-class-name-at-point. I
have previously needed this for my tempo expansions for C++ member
functions.