Creating dll's before learning about OOP doens't seem like the right order IMO. |
I don't see why bringing in another library to help you learn is so tabboo. If anything I'd recommend people start with simple libs like SDL or allegro, rather than trying to learn the "traditional" way with cout and other console stuff.
Learning console stuff is a waste of time. Let's face it -- having to learn how to get input from the console is a whole thing in of itself, and it's something the person will ultimately discard for the most part (I don't know about you, but in my 10+ years of C++ programming I've made about 3 console programs that I actually use -- and none of them accept input past the commandline). Why learn this cryptic nonsense when it is of little/no value to you? Why not start with what you're interested in?
Learning how graphics work isn't hard. In fact it's very intuitive for most people. Copy a rect from here to there, this surface represents the screen, when you draw to this surface, your changes are visible on screen, etc, etc. There's enough abstraction to where it isn't really a complicated process. In fact I'd argue that trying to understand how the console works is far more daunting.
Printing text might not be as straightforward (at least not with SDL) but I don't really see that as much of a downside. In fact, text is a far more comlpicated topic than many C++ introduction tutorials lead on. Look at some of the posts on this forum -- how many people are having trouble because of text input errors, or buffer overflows, or string->integer conversions, or any other cin/string/stringstream problem? Graphics are
far simpler than text. Especially since most libs make using them relatively painless and fullproof.
As for learning C++ basics -- that can be done with any library as a medium. Like we both agree -- the way to learn is to write programs. But how come everyone seems to think these programs have to be console? Screw console -- make programs you want to make. If you want to make games -- then learn C++ by making simple games.
EDIT:
To further illustrate my point -- many people start with languages like VB, where you're dropped right into a complex world of widgets, window events/messages, mouse control, window management, etc, etc. No console training wheels -- you start working on GUI driven programs from day 1. And not surprisingly -- most people find VB to be
easier to learn than C++ as a first language. Sure some of that is due to syntax, but most of it is because C++ tutorials focus on the console and standard libs, rather than stuff that's actually useful and programmer friendly.
With the right libraries, C++ can be just as easy to learn as VB.