# New N00b, (kinda, just read)

This topic is 3836 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

Some background: I am a 14 year old Texan. I come from a background of web designing, and therefore know HTML, PHP, javascript, little ASP, little bit of other languages. I have been coding PHP since I was ten, and learned HTML at 8. -------------------------------------------------------------------------------- I started learning C++ recently, mainly just because I wanted to see if I could :p, but I didn't get very far at all because it was extremely dull, I knew the basics, just not the syntax for them, so I switched to visual basic. I have created an extremely advanced calculator in it, but I have decided that it isn't the best language to learn because it really creates sloppy coders, and has no where near the power I want. I still have all my C++ stuff, including the Digital Mars compiler. I have also downloaded Visual C++, Visual C#, and of course Visual Basic (all express, I am fourteen and therefore have no $$). So, I searched around and have decided the most popular starting language is C++, however when I go to you for beginner reource fo people who are already coders, then it gives me a crapload of stuff about Direct X. Questions: 1.) Are C# and C the same thing? 2.) How do I make games with directX (is it free)? 3.) If DirectX is not free, C or C++ (or c#?)? #### Share this post ##### Link to post ##### Share on other sites C++ is NOT a beginners' language! In fact, I would go so far as to say that if your goal is to develop games, you should stay away from C++ and choose another language instead. C++ is, on the other hand, a great language if your goal is to learn about computers. To learn how memory works. To learn about how to interact with Windows on a more technical level. But not if your goal is to create games, especially if you're somewhat new. Why? Because you will spend more time banging your head on the desk trying to figure out why your code doesn't run, and less time actually enjoying making games and accomplishing projects. Given that you have a pretty good amount of experience in scripting languages, I would actually recommend that you go with a language called Python. It's very beginner friendly - you'll feel like the language just "fits". And once you learn the language itself, you can learn about PyGame, which is an "extension" to the language that is specifically made for creating games. You can visit python.org to learn more about the language itself: www.python.org. You can also find some beginner tutorials by searching the web. Quote:  1.) Are C# and C the same thing? No they are not. C is a relatively old language. It's not used widely anymore since it was largely replaced by C++. C++ is used a lot today, but as you have already found out, it's quite a difficult language to learn. What mostly makes it different from C is that it adapts the "object-oriented" method of programming. This is a feature of many programming languages to divide the code into self-contained "objects" that "communicate" with each other. Perhaps you have heard of it, or perhaps you just need some more experience to understand it fully. C# is yet another language. It tends to be more beginner friendly. What makes it different is that it enforces object-oriented programming to a much higher degree. Also, in my opinion, C# code is a lot clearer than C++ code. Both C++ and C# can be used for game programming. Quote:  2.) How do I make games with directX (is it free)? Yes, DirectX is free. However, you need to know either C++ or C# in order to use DirectX. Don't worry about it for a while. There's not much that DirectX can do for you yet. Quote:  3.) If DirectX is not free, C or C++ (or c#?)? The languages are free. However, tools are not always free. If you choose to go with C++ or C#, you did the right thing by installing the free Express editions from Microsoft. Those are the best tools that you can get at this point. However, I once again make the recommendation that you should stick with Python. It's a great language - much easier to learn than either C++ or C#, and it's quite powerful, too. #### Share this post ##### Link to post ##### Share on other sites I, like you started learning to program young, I had qbasic down when I was 9. I then started learning C++, and am still learning big time even though I am 17. Believe me when I say C++ is not a beginners language, but It has paid off a lot learning it, because it has opened the programming world. Once I got the hang of it, I could look at code in any language (with the exception of assembler) and be able to understand it. It's nice to have C++ one of the first languages you learn. #### Share this post ##### Link to post ##### Share on other sites If you do decide to stick with C++, here's a free book which seems to be good. Another two-volume free book can be found here. It is a bit difficult for a beginner because it moves fast in the beginning and has poor code examples, but it is really great at explaining how the language works, and why it works the way it does (by the way, I learned C++ from this book). I would say that you should use the first book, and when there's a specific feature you don't understand/want more info on, look it up in the second book. Also, the second volume of the second book talks about many advanced and interesting topics. #### Share this post ##### Link to post ##### Share on other sites My first major language (programming) was C#, and I use it for just about everything. It's very easy to use, and powerful enough for anything I've put at it. It forces Object Oriented design, so you can learn all of those ideas/techniques. It's very user friendly, I highly recommend it. It also uses very similar syntax to C++, so switching from C# to C++ isn't TOO huge, mostly have to learn memory management. I don't know Python, so I can't say much about it, but I'd say learn Python (Then PyGame) or C# (Then use XNA, for games). #### Share this post ##### Link to post ##### Share on other sites Quote:  Original post by NiddlesI, like you started learning to program young, I had qbasic down when I was 9. I then started learning C++, and am still learning big time even though I am 17. Believe me when I say C++ is not a beginners language, but It has paid off a lot learning it, because it has opened the programming world. Once I got the hang of it, I could look at code in any language (with the exception of assembler) and be able to understand it. It's nice to have C++ one of the first languages you learn. Any procedural language, perhaps. Check out Prolog if you have the time. #### Share this post ##### Link to post ##### Share on other sites Quote: Original post by aceofspaceman Quote:  Original post by NiddlesI, like you started learning to program young, I had qbasic down when I was 9. I then started learning C++, and am still learning big time even though I am 17. Believe me when I say C++ is not a beginners language, but It has paid off a lot learning it, because it has opened the programming world. Once I got the hang of it, I could look at code in any language (with the exception of assembler) and be able to understand it. It's nice to have C++ one of the first languages you learn. Any procedural language, perhaps. Check out Prolog if you have the time. Or lisp. Even fortran can be a bit difficult to follow if you aren't used to it. I would say that knowledge of C++ should allow you to follow code written in any language that falls in the "curly braces" family, for the most part. But, then again, perl is in that category. :-) #### Share this post ##### Link to post ##### Share on other sites As you have no "$$$", I recommend Code::Blocks (codeblocks.org; a GPL (open source, free)) IDE, running on top of gcc (GPL, too; gcc.gnu.org)). Code::Blocks has fine support for C/C++ and many other languages. Under GNU/Linux, you get most stuff you need for free, and if you're a hacker, you can modify that very stuff. Languages available in GNU/Linux-Land are e.g. Java, C#, C/C++, of course PHP, Haskell, Fortran, Simula, Algol and many more. A great plus is also the wide set of tools if you're an advanced programmer once in the future (e.g. objdump, dissy, embroider (here), strip et cetera). Under GNU/Linux you have many free and open source IDE's, maybe not that blown like some none-free IDE's, but really, who needs enterprise software in her/his private bureau ;). #### Share this post ##### Link to post ##### Share on other sites While I don't understand why this topic suddenly is about which language to start with, I will give my$0.02 here:

I'm gonna go against popular opinion: go ahead and learn C++. Sure, some of the more exotic features of the language might be more difficult to understand, but a large part is the same as any other OO/imperative programming language. Different syntax, same stuff. Actually, syntax wise C++ is alot like other languages (the basic stuff anyhow). I don't understand why people always make such a fuss over the languages. Unless you're considering coding in assembler it's all pretty much the same after a while (popular languages anyway, I'm not going to go into functional and logical languages, which are more academic in nature). The big difference with C++ is that if you screw something up, you usually screw up badly (mostly when you start messing with pointers). It's all relative though. Want something a bit more safe? Start with java.

My main point: Don't pick the laguage purely for the language, pick the language that is best suitable for achieving your goals. Any language can be learned in a reasonable ammount of time, and there are large simmilarities between many languages.

1. No, they're not. The name is misleading. It is one of those cases however where the syntax is very similar.
2. Yes it's free. You can download the SDK to start coding DX from the MS site somewhere. It comes with coding examples too. There are many, many online tutorials that will help you with Direct X coding. A simple google search will give you a ton. Alternatively, you could browse through MSDN.
3. C is quite old, but still usable. C++ would be prefered, because it's Object Oriented (you can create classes) and considering OO is the popular programming method nowadays.

You seem to think that Direct X is a seperate programming language from C/C++ (because of your last question). It is however something that uses C++. An addition to it, if you will.

Okay, enough ranting from me.

##### Share on other sites
Quote:
 Original post by MennoI don't understand why people always make such a fuss over the languages. Unless you're considering coding in assembler it's all pretty much the same after a while

I disagree. In C++, if you dereference a NULL pointer or use an invalid array index, the program crashes with a cryptic error message. In C#, an exception is thrown that tells EXACTLY what happened and even provides the location of the error (and the stack trace). That, for me, is probably the biggest reason why I switched to C# (even though I know C++ pretty well). Another thing is that with C++, you have to take greater care to avoid "shooting yourself in the foot". C# is much safer in that respect (include guards, copy-c'tor/assignment operator, uninitialized variables, undefined initialization of globals, etc.). And, automatic memory management doesn't hurt either.[smile]

To be proficient in C++, you have to really take your time to learn the language. With C#, you can be productive much more quickly. That's why C# is a much better language for a beginner.

##### Share on other sites
[quote]Original post by Gage64
Quote:
 I disagree.

It's a free country, err, world. But you misread my statement. I wasn't talking about the errors generated, or the idiosyncrasies of a language. A for loop is a for loop, and a class is a class. The way you define and put together programs is largely the same in the sense that if you know one language, it's gonna be relatively easy to start working in most others.

Every language has its weird and obscure parts, and it could take a lifetime to learn them all. Question is how often you'll actually use them, and how long it takes to get used to them.

[quote]Original post by Gage64
Quote:
 To be proficient in C++, you have to really take your time to learn the language. With C#, you can be productive much more quickly. That's why C# is a much better language for a beginner.

You could also reason that starting with something a bit harder will make you to learn much more, and faster in comparison. All the 'easymode' stuff in C# might just make someone a complacent and sloppy coder, as the compiler takes care of everything.

##### Share on other sites
Quote:
 You could also reason that starting with something a bit harder will make you to learn much more, and faster in comparison. All the 'easymode' stuff in C# might just make someone a complacent and sloppy coder, as the compiler takes care of everything.

Learning the theory, data structures, algorithms, that kind of thing will make you better coder - the choice of language is secondary, and is quickly becoming tertiary, with the most important choice being management and design strategies.

Starting in assembly will not make you leet coder, starting in VB will not make you sloppy. Each will teach you habits. But understanding the theory and fundamentals is what will improve you. Languages are just syntax - it's not what makes the programs or algorithms.

On topic:
Learn the language you're comfortable with. C++ isn't popular, especially not as starting language. Java is a learning language. But since it's so reliable, it's also boring as hell.

Python and .Net (any language) are also good choices. So is any other "normal" language.

Industry (any industry) has demands. If C#+XNA is currently in, so be it - in two years, things will completely turn around. C++ will continue to be in demand, but that's not language. There's plenty of C++ developers, but getting to useful guru level where you can comfortably and consistently achieve results takes years. For CS people.

The only beneficial thing you can learn to further yourself is theory (CS, math, physics, even literature, philosophy, foreign languages, ...). Everything else is just syntax.

A huge downside to C++ as beginner language without supervision is that the internet is littered with garbage and literally criminal advices, even in plenty of respected sites. At least half of the tutorials are not even C++, they are C. Sometimes with classes. This makes C++ an extremely poor language for self-learning - you'll learn things incorrectly.

For what you want, games + DX, C# is the way to go. Quite safe, gives access to the DX API, fast compilation, plenty of documentation.

And as a plus, there's a C# workshop going on on this site right now.

##### Share on other sites
Yay!!! Language flamewar!!!!!!

Anyway, I would also recommend python, not because it is that much easier to learn, but because you can focus more on making games. Even if you are talented at programming and can learn and use C++ easily, that just means that it will be even easier in python. C++ is good to learn at some point, but if you want to actually finish a game, python will help you a LOT more.

Also the Win32 API is ewwy. Really ewwy. I mean it, really, absolutely disgusting. It will ruin all your thoughts of having pretty, straightforward code. Pygame = winner.

##### Share on other sites
If you call this a language flame war then you have never really seen one. :)

I am going to suggest C# and XNA. There are a few reasons for this. First it is just a darn good language and has very nice libraries for Windows or Game programing. Next it is closer to C and C++. If in the future you want to learn C++ you will already have a leg up on doing so because you will for the most part of the syntax down.

Next important thing to learn is that you can write good or bad code in any language. It is up to the developer to make sure that their code is nice code, not up to the tool you are using. I have been a developer for over 20 years now, and I have seen sloppy code in every language I have worked in. So don't blame the language.

Remember languages are just tools, they are not a way of life.
theTroll

##### Share on other sites
Quote:
Original post by Menno
Quote:
 Original post by Gage64To be proficient in C++, you have to really take your time to learn the language. With C#, you can be productive much more quickly. That's why C# is a much better language for a beginner.

You could also reason that starting with something a bit harder will make you to learn much more, and faster in comparison. All the 'easymode' stuff in C# might just make someone a complacent and sloppy coder, as the compiler takes care of everything.

But that's just a bad way of doing things. Whenever you have to face a challenge, the best way to tackle with it is to make it simpler, not harder. When you start learning math (as a child), you begin by the addition, not Taylor series. Starting with the hard stuff just doesn't make much sense, not to mention that it will be more frustrating.

I don't agree that doing things in the simple way makes you a sloppy coder - from my experience, it's far easier to be a brain-dead C++ coder than a brain-dead C# coder. C++ don't even force you to use a particular paradigm - you can just do plain and horrible C, or even worse, C with classes.

C# has some nice properties, one of them is the style and the coding guidelines that are given by Microsoft and that are apparent in the whole .NET library. Since a beginner often imitate what he sees, it's going to be better for him to learn how to structure code by using C# instead of C++.

And I don't agree with you regarding this 'easymode' thing that would exist in C#. C# is not an easy language - the paradigms that are used are well beyond what one would call "easy". The thing is that it's easier to get things running, which doesn't mean that the language itself is easier or more lenient. The compiler is very precise when it describes an error (something that can't be bad - unless you want to be the only person on earth that understand the compiler messages), but it doesn't "take care of everything". You have to do your part of the job - and if you do it well, the compiler will tell you so.

##### Share on other sites
Amazing how quick everybody is to bite my head off. Your comparsion is flawed. Comparing addition to taylor series is like comparing riding a bicycle to driving a bus. You should be comparing bicycles: multiplication isn't much more difficult than addition, it's mostly just different.

I still don't see what the fuss is. They're just tools, tools I say! ;) It's all just personal preference and whatever happens to be the trend. Difficulty is such an amazingly relative term after all. People need to stop acting like learning any particular programming language is such a huge ordeal.

As for making it more difficult being such a bad idea: sometimes throwing people in the deep is the best way to make them learn. It might not work for everybody, so I guess I'm just speaking from personal experience.

##### Share on other sites
Quote:
 Original post by MennoAmazing how quick everybody is to bite my head off. Your comparsion is flawed. Comparing addition to taylor series is like comparing riding a bicycle to driving a bus. You should be comparing bicycles: multiplication isn't much more difficult than addition, it's mostly just different.

I'm not biting your head off. And my comparison is not flawed: it's about starting the easy way vs. starting the hard way. Just like riding a bicycle vs driving a bus.

On a side note, multiplication is more difficult than addition. The different sets of rule that govern multiplication makes it something that children have some difficulty to understand. Addition can be easily understood by using objects around you: if I have two pen and if you have three pens, we have five pens. The abstraction behind multiplication can only be explained if the abstraction behind addition has been understood - Five people in a room, each of them have 4 oranges, so there are 20 oranges in the room, because that's 4+4+4+4+4. That's why children learn addition before multiplication - because it's simpler, and it can be seen as the root of multiplication.

Quote:
 Original post by MennoI still don't see what the fuss is. They're just tools, tools I say! ;) It's all just personal preference and whatever happens to be the trend. Difficulty is such an amazingly relative term after all. People need to stop acting like learning any particular programming language is such a huge ordeal.

Difficulty might be relative, that doesn't mean that one should start to learn things that are relatively difficult.

Quote:
 Original post by MennoAs for making it more difficult being such a bad idea: sometimes throwing people in the deep is the best way to make them learn. It might not work for everybody, so I guess I'm just speaking from personal experience.

Well, all the education programs all over the world are based upon the idea of learning things one step at a time. You may have learnt C++ directly - without any prior programming knowledge. If it's the case, that's good for you. But most people will have a hard time going this way (I'm not saying that they won't be successful; I'm just saying that it's going to be hard), and if you consider that there are better, simpler ways, then one should first advertise them instead of directly jumping on the "learn C++, it's hard but you'll feel as a hero after that" mantra.

Best regards,

##### Share on other sites
Throwing someone off into the deep end is also a good way to make the person drown. Repeated failure can cause a beginner to quit programming and never look back.

Also, to keep the analogy going, when you throw someone into the deep end, they won't learn proper swimming techniques. They'll find something that works, and eventually grow a habit out of it. Good coding design is not enforced in C++.

In truth, unless you are doing something really exotic, you can accomplish anything in C# that you could accomplish in C++, and in less time and with less frustration. C++ has its uses if you are working one-on-one with the system. But that's something a beginner should not be worried about.

##### Share on other sites
Wow, I can't believe I really asked that question... I knew what was coming, I was just really tired...

so:
C# != C

C# is easier to learn than C++ (and you don't have to declare variables? Because I have always hated that... :p)

People like to get into very intelligent sounding flame wars over which language to choose, and use very obscure analogies like bike riding and swimming...

It's sad, about a year ago I tried almost every language mentioned here (Perl, Python, C++, etc.) But I could never get the hang of it. I am back now because if I ever want to do anything besides web design, I have to start somewhere. :P.

So the (non)general consensus is NO C++? Just because it is more difficult and structured and because I am learning it on my own over the web? P.S: I am not worried about hours of banging my head on my desk trying to get my code to work. That is nothing new...
,
So, although you have told me not to, and have given your reasons in a clear manner and I understand your reasoning, I think I am gonna go and Give C++ a try again... Or C#... One of those 2... or maybe python... who knows... Eh.. I Will get back to you on the language of my choosing. Will probably go with C#, though, because I hear it is in demand at this point in time... (although I really have no chance of getting into the job market right now :P) But is there just a compiler for C#, because I really don't like the Visual C# Express Enviroment. I am more accustomed to coding in my old faithful notepad...(at least to start with, since I am gonna start with console programs first and then go on to the games, windows apps, etc.

##### Share on other sites
Quote:
 Original post by mohaakilla51C# is easier to learn than C++
I would agree with that statement.

Quote:
 (and you don't have to declare variables? Because I have always hated that... :p)
No, you do have to declare your variables before you use them. It's actually a good thing (insofar as it's an implementation of static typing) as it makes it easier to find bugs. If you don't like it my guess would be that you are lazy (and/or were spoiled by shoddy languages like PHP).

Quote:
 But is there just a compiler for C#, because I really don't like the Visual C# Express Enviroment. I am more accustomed to coding in my old faithful notepad...(at least to start with, since I am gonna start with console programs first and then go on to the games, windows apps, etc.
Sure, you can just run the compiler that comes with C# Express (csc.exe). A good developer embraces change and seeks to learn new technologies, though.

I'd recommend taking a look at the C# Workshop.

##### Share on other sites
Quote:
 C# is easier to learn than C++ (and you don't have to declare variables? Because I have always hated that... :p)

C# is a statically typed language like C++, so you do have to declare variables and with good reason.

Quote:
 So the (non)general consensus is NO C++? Just because it is more difficult and structured and because I am learning it on my own over the web? P.S: I am not worried about hours of banging my head on my desk trying to get my code to work. That is nothing new...

C++ is a good language for writing games but it's not the best language to get started with. You can always start with C# or whatever and move on to C++ later.

Quote:
 But is there just a compiler for C#, because I really don't like the Visual C# Express Enviroment. I am more accustomed to coding in my old faithful notepad...(at least to start with, since I am gonna start with console programs first and then go on to the games, windows apps, etc.

Knowing your IDE is nearly as important as knowing your language if you want to be efficient. I'd suggest that you start using Visual C# Express and get used to it. It's actually a very usable tool once you get your head around it.

##### Share on other sites
The truth is that it doesn't matter what language you start with as long as you are dedicated to learning it. Visual Basic is actually powerful enough for your needs -- don't give up on something until you actually run into barriers using it! There are sloppy coders in every language -- I wouldn't say that VB code is "sloppier" than any other language. It is the coder who writes sloppy code -- the language doesn't force him to.

##### Share on other sites
Eh, I'm also a fairly young programmer by most peoples' standards (17, 18 soon), and I suppose I'll give my relevant input into this discussion.

Anyways, I've always been a proponent of C++. I started with it at around age 12, and I think that if you have the right resources on hand, it isn't terribly difficult to pick up (I find that to be true with every programming language; no matter how difficult it seems, if the resources are well-presented and you're willing to learn, then the process is cake). I personally started by reading Bjarne Stroustrup's authoritative book, having found it at the local public library, but I wouldn't recommend that as a beginner book (I'll admit that I was quite puzzled after reading it). However, there is one book that I am a huge fan of; I found it extremely effective: C++ How To Program, Fifth Edition (http://www.amazon.com/C-How-Program-5th/dp/0131857576). If you can manage to grab that one (perhaps check your local library, or maybe get some family members to pitch in on it for you), I think it would be an invaluable resource to learning C++. It may also be worth noting that, especially in the gaming industry, C++ is one of the most sought after programming languages in an employee---you can check out about any company and what they seek in their programmers, and probably 85-90% will list C++ as either a major plus or a requirement. I don't suppose you'll need to worry about that for a few years though (assuming that's the career path you're shooting for, anyways).

If you don't decide to continue with C++, which is also very reasonable, then I would recommend Python as well. It's not a language that I'm very familiar with---it's on my priority list, actually---but I have given it a good look or two, and I know several people that advocate Python very heavily.

Quote:
 Original post by Gage64To be proficient in C++, you have to really take your time to learn the language. With C#, you can be productive much more quickly. That's why C# is a much better language for a beginner.

I'll disagree with this statement, because I see no grounds for it. In C++, there isn't a lot to learn; you learn some data types, some operators, maybe some of the STL, and you can become pretty productive quickly enough. There's always more to learn if you look for it, but it's not all necessarily...necessary. In C#, not unlike Java, you have a lot more to learn; you must learn the Object-Oriented Programming paradigm outright (which is not a necessity in C++ or C), you need to learn to use the Forms designers, you need to learn many many functions and object types, and to accomplish some things you'll even need to learn some nasty little 'tricks' to get past the language's shortcomings (though this is very true for any given language).

If you're interested in a less powerful, albeit easier to learn solution to creating games, you might check out BYOND (short for Build Your Own Net Dream: http://byond.com). If you manage to get past the major dark-side of a majority of the gaming community (which mostly involves irresponsible Anime fan-boys that have caused countless headaches, including releasing the source to certain fan-games that are then slightly edited---that is, usually just the title and administrative users---by dozens of likewise-minded irresponsible fan-boys), then you'll find that there are actually some really swell developers in there (always willing to accept a new developer that doesn't fit the afore-mentioned criteria). You'll find people that are knowledgeable about BYOND's core language, DreamMaker, as well as people that are knowledgeable about any given language---from ASM to C++ to Python to ActionScript to [...].

In any case, I hope I've been somewhat helpful, if even the least bit. Sorry about my habit of writing exceptionally long posts. Good luck!

##### Share on other sites
Quote:
 In C++, there isn't a lot to learn

Yes there is, and the very fact that you think that suggests that you still have of lot of learning about C++ left to do. Not that that's a bad thing.

Data structures and types are not the language. They're concepts that, by and large, transcend the language. Part of what makes C++ a very poor choice for a beginners language is it overall complex, subtle, brittle nature. Vast portions of the language are simply "undefined," and the language cannot introduce clean ways of doing certain things or fixing its flaws because it's already plagued by the burden of backwards compatibility.

Quote:
 In C#, not unlike Java, you have a lot more to learn; you must learn the Object-Oriented Programming paradigm outright (which is not a necessity in C++ or C), you need to learn to use the Forms designers,

Not at all. Shoving something in a class does not mean you're doing object-oriented programming (in the sense of the OO paradigm). To a beginner, that class is just one more bit of syntactic cruft they just have to accept as fact for now (much like std::cout is just accepted as 'the way to put stuff on the screen' and not actually discussed in detail until much later in most C++ references, because fully understanding what that thing is is not possible that early). And arguably, using the forms designer is pretty easy to pick but. However, unarguably, there is exactly zero need to learn it in order to learn C#. You only need to learn it if you're jumping right to Windows applications, which is a stupid thing to try to do as a beginner in any language.

(The rest of my post is general stuff and no longer a direct reply to the above poster).

C++ is dangerous - it is complex, but can appear simple and straightforward. It is built on concepts that can be applied easily without proper and complete understanding, and this is tragically exacerbated by the wealth of very poor learning material for the language. In fact, this is arguably the biggest problem with learning C++ as a first language -- not so much the language itself, but the fact that so much material written about the language is flat out incorrect (but still published, available in your local Borders for \$39.95) and that, as a beginner, you have next to no chance of being able to tell the good from the bad. As an experienced programmer learning C++ for the first time, you might have a glimmer of hope.

This isn't to say that the language cannot be learned first -- many people do it. However, just because you can do something doesn't mean you should.

On a slightly unrelated note, I've noticed that the majority of the people who recommend C++ as a first language or defend its viability as one tend to be relative beginners themselves, or programmers who only know C++. I understand the position you're in, as attacks on C++ can thusly feel like attacks on your own ability as a programmer.

But to those people, I say you're doing more harm than good in advocating for your language of choice: if you don't know multiple languages very well (well enough to write significant nontrivial software systems largely unaided), you shouldn't be contributing to "X or Y" language debates because, chances are, you're only helping to spread misinformation about C++ -- which as I noted above, is part of what makes the language so dangerous to begin with.

##### Share on other sites

This topic is 3836 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.