1) Can't really answer that as everyone learns in different manners. I personally started with the tutorials on this site, then bought a couple books. From there I was confident enough to venture off and learn on my own.
2) If you're on Windows, Visual Studio is excellent. There's an Express version you can get for free, or if you have a .edu email address you can get the Professional version for free.
Mac has Xcode.
Code:Blocks and Eclipse are both very popular and are cross platform. These are your main choices on Linux.
I am going to urge you to start without an IDE, though. Learning how to compile and link from the command line is very important, and will greatly help you down the road.
Both of your questions are very vague and you will likely receive multiple different answers to them based on who you ask.
1. Everyone learns different so everyone will have different opinions about different tutorials, books, or whatever learning material. Though a good start would be to check out the tutorial on this website. Though also do your research and find some other beginner C++ tutorials (I assume this is what you are talking about?) that have received high praise by experienced programmers.
One of them might work better for you but sucks for someone else. It really comes down to the individual for what the "best" learning material is.
2. Again you will receive different answers to this based on peoples opinions. Some will say Visual Studios while others will say Sublime Text or Code::Blocks or Eclipse. Some prefer a full blown IDE (Which I would recommend since you are a beginner, this contradicts what RB said but personally I feel you should get a hang of everything first then jump into the compiling details so you aren't so overwhelmed in the beginning) while others prefer just a text editor and a console to compile/debug in.
This choice really comes down to what you prefer the most. Try them all out and choose for yourself, this would probably be the best way to go.
Sorry for being so vague on the answers but these question are really something only you can answer.
I realise this I didn't plan on seeing one IDE or tutorial I was going to check them out and pick my bes. Also CodeGrazer I'm not a beginner at programming. I've programmed in alot of other languages though I now want to conquer C++ which I have only learnt a bit of.
programming in other languages doesnt bring you above the level of beginner. for example, ive done stuff in basic, assembly, perl, and ruby, but if the stuff i wrote in that was all i did i would be a beginner still. anyways, as to 1) i cant remember. its gotten to the point where i read tutorials for new languages to get the bare minimum idea and then just google how to do certain featues, like foreach loop in lang x or associative arrays in language y. as to 2) IDEs arent for everyone. im perfectly happy with gedit, gcc/clang, flex, bison, make, and gdb
edit: im going to have to disagree with codegrazer (respectfully of course. he is very wise). i started out with just gedit and gcc writing c code and because i wrote it badly, i learned quickly how to fix what error where. i also got into the habit of remembering to close all ([{<'s, include all the proper libraries, and learned lots of compiler flags. an ide will typically handle these things for you
I use use Linux & I would recommend that to anyone who is into programming: there is just so much stuff available - all kinds of languages & scripting, all for free.
QtCreator is a great IDE, and is available on Linux, Windows possibly MAC as well.
On Linux, I also have KDevelop, which is a very mature application that can compile many languages (provided you have a compiler for them)
I agree with CodeGazer, compiling from the shell and using make files is a very important thing. But starting out that way can be a very hard road. So I would recommend a mixed approach: better to use an IDE to start with, look at what shell command and make file it uses to compile with, then find out what all the things mean. Do some debugging with the IDE debugger, then try to do the same with shell version. But don't become dependant on the IDE.
Also clang++ is an excellent compiler - it has easy to read error messages, and it is fully C++11 and C++14 compliant. Visual Studio is still not C++11 compliant.
I was like Little Bobby Tables with the ([{<'s: for about 20 years I would type the opening one and immediately do a closing one, then go back and fill what I wanted. Now my IDE does that for me, I have had to unlearn that behaviour :+o
toggy11: no it doesnt. if i were to take my experience with those four languages i listed then i would still be considered a beginner instead of bottom tier intermediate. so what if you dont have to relearn the concept of variables and oop? when i learned oop in c++ i was still a beginner
Also CodeGrazer I'm not a beginner at programming. I've programmed in alot of other languages though I now want to conquer C++ which I have only learnt a bit of.
Sorry about that was just taking a guess from what you posted. Since you have previous experience from other languages you should be fine with just doing a quick run through of the tutorials on this website to get a basic overview on the basics of C++.
Just make sure to dig in deeper to the subjects that other languages might not have like manual memory management and pointers, template programming, RAII, and how the compiling/linking process works. Some of these subjects aren't covered to in depth in these tutorials on this website but a quick Google search should do the trick for those.
Though if you are looking for maybe a quick book to run you through the basics and advanced topics of C++ you might wanna check out "Accelerated C++" which was released awhile ago but is still a very good C++ book.
Otherwise if you are just looking for a reference book I would recommend "C++ Primer" (Not to be confused with "C++ Primer Plus" which is not the greatest in my opinion).
Little Bobby Tables wrote:
no it doesnt. if i were to take my experience with those four languages i listed then i would still be considered a beginner instead of bottom tier intermediate. so what if you dont have to relearn the concept of variables and oop? when i learned oop in c++ i was still a beginner
I would say it actually does, almost all of the core aspects of programming can be transferred between languages. The syntax will differ sure but that is easy to pickup when you are already familiar with how programming works.
If someone was a expert in C++ and decided to learn Java I wouldn't consider them a beginner in Java since they already are very familiar with how programming works and how to solve problems in code. Sure there are a very things that are different you will need to learn but them are usually by no means beginner topics.
@code gazer: i would it actually doesnt. as i said, just knowing the core aspects of programming doesnt bring you above beginner. if you are an expert in c++ then yes im sure youll be good at java. i never said you wouldnt. what i said was just programming in many languages doesnt bring you above beginner
What gets you above beginner is being familiar with the language and gaining experience in it (or them). Even if you are an intermediate programmer in C, C++, and C# and go to Java or Python you don't just jump over being a beginner because you know some of the basics that are paralleled between the languages. Knowing the basics that are parallel between languages just makes it easier to learn the other languages, but again, in no way makes you above a beginner on any language you don't have experience in.