I would like to learn to program using the Linux environment. What do you suggest for Editors/ IDEs?
If you really want to learn to program in a Linux environment, I'd recommend a simple text editor and the GNU toolchain (GCC, GDB, make).
Some popular editors:
- Vim (vi improved) or just vanilla vi
- Emacs (also has viper mode so the best of both worlds)
- nano
This route is great if you eventually have to work on a system without other tools available. Most Linux distributions will come with the toolchain and 1 or more of these command line editors installed. It's also beneficial to have a good understanding of these tools, as programs like the Eclipse CDT use these as a back-end, and you will be able to understand error messages brought forth which will make debugging easier.
Someone else suggested vim, emac and nano, but I wouldn't suggest them. For Vim and Emacs you'd spend more time learning how to use the editor than how to program, and nano is just like Gedit except you can't use the mouse to select where you want the cursor to be.
I do agree with the idea of doing things the Linux way (tm), which would be a text editor and makefiles. They're very easy if you start off looking at a simple one. Look at this if you're interested. They're nice because it's generally easier to build Linux packages if you have a Makefile. (If you're going the simple editor and a Makefile route, I suggest Gedit because it does syntax highlighting).
If you're not interested in learning how to write makefiles, I suggest Eclipse, KDevelop (if you use KDE) or Netbeans (my favorite -- similar to Eclipse).
Qt Creator is nice and small C++ IDE (you don't have to develop Qt applications if you don't want to).
Using an IDE for programming is perhaps a bit faster at the beginning. But this is a double-edged sword. You will grow into a lazy programmer who doesn't know the basics, the internal things behind the curtain.
By using a text editor and the Linux console you will progress slower, but you will learn a lot of additional useful tricks. You will also grow into a humble programmer, who thinks more before typing some code, before copypasting some code, before running a test/build process just for the sake of it. At some point it might become obvious for you that an IDE would speed up your development process, without getting into your way. Then you could try to switch to an IDE. But even then you'll observe some of the advantages of using simple tools: you can hook them together the way you want.
I would also like to mention a third approach, that is somehow different from "IDE vs text editor". It is called Literate programming. I won't claim it is absolutely better, but it certainly has some advantages. Consider having a look at leo, that is a great tool for this job.
KDevelop v4 (from SVN), it is very powerful and surprisingly stable, built in support for qmake and cmake.
Try Code::Blocks. It's a high quality C++ IDE, like the Visual Studio.
I think the priorities should be:
- gcc / g++ understand that little bugger. Setup your libraries properly, any specially requests you need, cmake, compiling techniques, etc ...
- Start with a simple to use IDE such as CDT. That way you focus on the language and the environment
- Backtrack and slowly move away from CDT into VIM or emacs