I've been learning c++ for a few months on a windows os. (Not using the API)
And im building a new computer soon. I will install Backtrack at first, then win if I need it.
My goal is to become a professional developer (I will most likely write code for pentesting and everything related to it) So... do you think should I continue to learn c++ on linux ? Or stick to windows ? I'll be writing portable code anyways. And what are good IDEs for linux/unix ? Or should I do it the old way with no ide ?
Im familiar to linux os, however i've never written code on a linux os.
Sorry for my english, im not a native speaker.
Use an IDE that is available on both operating systems, such as Code::Blocks or QT. Actually you might want to learn both CB and QT as well as portable libraries such as wxWidgets and boost. Which you will need to learn depends on what company you work for. So I'd suggest you learn both of them.
Personally I use an IDE that runs on both Windows and Linux and provids a License key that works on both. Editrocket is the application name and it works with multiple languages and includes code snipites and what I have found to be many other great utilities. The price was within reason too.
So... do you think should I continue to learn c++ on linux ? Or stick to windows ? I'll be writing portable code anyways.
Definitely, yes. Linux is by far preferred to Windows as a development OS. Windows is more of an impedance to development than anything else. It is not so much a matter of the quality of IDEs or of the GUI tools, but everything else, such as the stability of the ABI, the ease of installation and use of external libraries, the fixed architecture, the very rich set of unix tools (GNU), etc... Development under Windows is only preferred if you only target Windows for your applications, which is, of course, the case for a majority of people, but if you are doing cross-platform development. And this is even more true if you want to do pentesting and related development.
And what are good IDEs for linux/unix?
There is a pretty wide array of possibilities. Like many things in the world of Linux/Unix, things are fairly segmented into small tools for specific jobs, as opposed to Windows where the tradition is to spend some big bucks for some big tool that has everything. There are a number of basic tools that most IDE rely on for basic tasks. GCC is the main compiler, with Clang as one popular alternative. GDB is the debugger. Valgrind is the memory-debugger / profiler (and a whole bunch of other extensions). GProf is the GNU profiling tool (but valgrind is better). Make is the main build system, but most people use a higher-level build scripts that rely on a build system like CMake (highly recommended), autoconf, qmake (mostly for Qt applications), or Boost.Build. Doxygen is the code documentation system for C++, and Qt Assistant is the equivalent to Windows' compressed help files (.chm).
Most IDEs in Linux are highly integrated with the above-listed tools, i.e., they are GUI interfaces for those command-line tools. The main thing that differs between them is their look and feel, their text-editing features and things like background parsing, code completion, and tooltip documentation cues. The best one on most of these fronts is KDevelop, in my opinion. It integrates all the tools mentioned above, its text-editing is based on the Kate enhanced text-editor, its code completion is the best of all IDEs I have ever tested, and it is fully integrated with the doxygen / Qt Assistant duo as well. Other recommended choices of IDEs include Geany, Qt Creator (for Qt development), and CodeBlocks.
Many experienced programmers prefer to use more light-weight tools like. In other words, using a simple or enhanced text editor to write the code, and then use command line tools directly for all the other tasks like compiling, testing, configuring, profiling, etc. Good text-editors include Kate, emacs, and vim.
Every single tool I mentioned above are available to be installed from the package manager. So, you can install them all, test them, and see what suits you best.
Ok thanks for your help