What I meant was that most wouldn't be motivated to do their best when they can hack together something that simply works.
C++ is a lot harder to get into (which is not a good thing if you're a beginner), and as almost 10+ years of awsome games and applications should tell you, you don't need OOP to create a good application. (Hint: Start with C)
C++ is really only as hard as you make it. The two reference books that I mentioned earlier take programming concepts one step at a time. Nothing C++ specific is even dealt with until after at least half a dozen chapters. Variables, constants, looping, switch statements, function calls and many other things have no functional difference between the two. When you start looking at memory allocation and classes, then you would see the differences, but those aspects only surface after the basics are well understood.
Do these books teach Algorithm theory and efficiency?or are they just a technical overview and a dry introduction to programming? Knowing algorithm theory is, in my view, a basic block before moving on to actual practice - maths are needed, who knew!
Aaah. Touche'. Some books these days try to expose you to classes earlier rather than later. They are a main feature of C++. I assume they figure 'the sooner the better'. Accelerated C++ is apparently the best book to learn the language. Weirdness of it is learning vectors before arrays, string before char, and getting into templates a bit over halfway through the book. Oddly enough, this book does not talk one lick about threads or sockets... both more useful than templates (for me anyway) and somewhat difficult to grasp for the novice.
Most programming books do not touch algorithmic efficiency. In the same manner, most algorithm books don't apply the practices to programming. It's one of those things that you sometimes have to learn one and then figure out how to apply the other while you learn it. Personally, I don't think that classes and other OO concepts should be taught before structured/linear programming techniques.
This is where I'm starting from: http://www.cplusplus.com/doc/tutorial/program_structure.html I'll pick up a book or two when I'm back in the US in July. My first read is to get a conceptual idea of the language, then I'll read it again to learn more about actually using it. I like switching views between the outside in and the inside out. One question about "behind the scenes" so to speak. When you write the programs you reference different commands or pools of data, like the iostream. Are these pieces of information stored in the OS? I understand the need to reference them but I don't know where they exist themselves. Conmputers have these files built in to them for many different programming languages? Thanks!
This is where you'll likely run into a bit of a crossroad... or obstacle. Most tutorials are going to be teaching you C++ based on the Unix world. While the sytnax is technically the same (AFAIK), the implementation of something like visual C++ is likely quite different. I assume Visual C++ has some nice classes with it that will prevent you from some low-level things you have to do on a Unix implementation. A direct answer to your question is no, iostream, etc. are not part of the OS. They are header files. Technically, they are supposed to follow a standard and work more or less the same. Microsoft is really bad about following rules like this, although I have zero experience w/ VC++. iostream and other header files exist in a specific place on your system...they are no part of the kernel. On my linux machine, I believe they are in /usr/include (you can always do a system search). They work just like header files you might make. FYI, here's mine on my gentoo box: /usr/lib/gcc/i386-pc-linux-gnu/3.4.4/include/g++-v3/iostream