very open question

This doesn't have much to do with specific details or anything technical. I was just wondering if C++ it'self is a good choice as a first language to learn. I am teaching myself by trying to find little video tutorials and pdf books and like many I'm finding it to be very very difficult. Some of the things I see as examples and the majority of the begginer section questions are so far beyond me at this point, and I'm just wondering by the opinion of the members of this forum who have a good knowledge of it, is this something that takes more than self training as a cool hobby or do you basically have to take a class of some sort if you really want to get into the depths of it? Is it unlikely that I'd get anywhere without a class, such as real window applications or dynamic link libraries? I know this is kind of a dumb question in which the answer depends on so many things that can vary significantly from up to down or whatever but I figure I may as well get it out there and see what people have to say.
Personally, I think C/++ is better as a second or third language for two main reasons:
1. When you're a beginner programmer, you should focus on learning the basics of programming (variables, data types, control structures, expressions, subroutines, etc.). C/++ provides such a low-level of abstraction that you usually end up having to deal with lots of things beginners shouldn't have to worry about (pointers being a pretty big example). This can lead you to missing the forest for the tree.
2. Compiled languages offer better performance than interpreted languages, but beginners should focus on logic, not performance. Interpreted languages have the advantage that changes can be seen immediately, which is important at first. As you get better, you'll be able to predict the behavior of increasingly complex code, but at the very beginning you'll most likely use a form of trial and error.

I myself started with QuickBASIC, and I think it's not a bad choice (although in modern computers, some versions consume 100% of the CPU, for some reason). Versions 7 and below can be found around the Internet. Also, there are some modern interpreters. I have not tried any of them.
However, I wouldn't recommend VisualBasic or (specially) VisualBasic.NET.

I know that Pascal, particularly in its Turbo flavor, has also been taught as a first language. I haven't tried it, so I can't say whether it's a good or bad language for a beginner.
From my own experiences, I started out for a taste in scripting first. Starting with action script, java script, css and html. After I had spent a couple of years designing websites with knowledge in those areas I decided to take a course on c++ - which whats a pretty big jump for me even after learning a fair bit about those scripting languages.

It was a challenge for me and I did fall behind a little. So after I had completed a few months on c++ I thought it wasn't for me as it was a pretty hard language to deal with.

After that course was over I took my knowledge into Java where I studied designing GUI's and Applets for a year. I got a really good grasp on the Java language which reminded me of a well ... some crap remake of c++ (Sorry to the people who love Java).

So once I finished that course I took my knowledge back to c++ - which I just started an advanced major in c++ game programming / design.

Anyway main point of this post was, for me I found Java is what gave me a better understanding of C++ as I found it no where near as difficult. So that's how I started my knowledge with c++ anyway.

I'm not great at the language and come here all the time for little snippets of code I'm having trouble with and get great answers from the members here. Especially from people like above - helios, zaita, duoas, jsmith, grey wolf and seymore15074 for example. Oh god I actually remember your names and seymores number (I think I got it right).

If you want to take a look at Java you could have a look at sites like www.java2s.com or google download netbeans (netbeans is the IDE I learned java in) and see what you can find.

Good Luck, Hope this Helped :)

Cheers,
Myth.
OP, I think if you can find a programming language that has an interpreter it would be a great help for you - that way you get direct feedback on what you write both running it and what you write. Preferably a language that is more straightforward and simpler than C++

Personally I started programming 25 years ago and in those days there wasn't many options when it came to languages. I learned by using a semi-compiling BASIC interpreter that gave direct feedback when I entered rubbish. Nowadays there should be are myriad different languages with interpreters to try out. Once you feel proficient with one of these languages you can revisit C++ with more confidence.

As to your second part of you question, sure C++ can be learned by yourself - no need for classes - but you need to be up to speed how programming languages in general work first and have some basic understanding of computer science e.g. linked lists, trees etc.

That is why I recommend a simpler language first

Just my 0.02c
closed account (z05DSL3A)
For your situation, teaching yourself from different sources, I would not recommend C++ as a starting language, for many of the reasons already stated, but also C++ supports multiple paradigms[1] which can get confusing if you don’t get your information from a unified/structured source, (but having said that I would not recommend learning small chucks from different sources anyway). Too many sources seem to rush through the imperative, procedural stuff to get you to Object-oriented stuff, leaving you without firm foundations to work on. If you can be disciplined, pure C may be a better language to start with. The first language I used when I started learning to program was Structured English[2], then Pascal, Modular-2, C/C++ (along the way dipping into things like Lisp, Miranda, assembler… when the need arose).


[1] http://en.wikipedia.org/wiki/Programming_paradigm
[2] http://en.wikipedia.org/wiki/Structured_English
I absolutely will not tell anyone to avoid learning C++ as their first language, but beware--it will be challenging. I would recommend C++ if you meet the following criteria:

1. You have to want to learn it and learn it well. If you have a history of conquering challenges, being outgoing, and taking the next step, then this might be the language for you.

2. You are willing to learn from books hardcore. Not just skim through the material; you have to go slow and understand it thoroughly. Learning C++ by trial and error alone without additional instruction will result in chaos!

If you are one of the few, learning C++ could be very beneficial as a first language. It's very common, first of all, and I find it easy to move to other, higher-level languages. I like the fact that C++ is strongly typed. I would recommend a typed language for beginners.

I guess it's really hard to say what's right for you. There are so many options!
Last edited on
I learned C++ first (sort of) mainly just cout/cin...then I went and learned TI-basic and Qbasic, and eventually came back to C++ (which seemed a lot easier).
closed account (z05DSL3A)
As a bit of an aside, in the past I have recommended reading Code Complete: A Practical Handbook of Software Construction by Steve McConnell. I would be interested to hear others opinions on this (especially the second edition, as I have only read the first)
Wow, lots of people have replied to this question and I thank you all. I really needed some input about this topic because I love C++. I actually started to get somewhere in it, and I understand it's reputation for it's complexity and all round difficulty. I guess learning one of the harder of the languages and actually getting somewhere with it gives me an inner feeling of satifaction and conquest. I feel proud and it drives me to try harder. So I appreciate all the support but does anyone have any comments about the whole teaching myself idea? Is it un-realistic or do I stand a chance if I really go for it? Seymore had a great reply regarding this...thanx man. But yeah...any thoughts??
I think most programmers (or at least most good programmers) are self-taught.
I myself learnt C++ (as my third language) from a book and didn't find it hard at all.
Agreed. In my professional experience thus far, I have found that I can spot two different types of engineers in the office from a mile away: those who do this for a living and those who live to do this.

I have learned more from books than any courses that I have taken; both of which do not compare to the amount I have learned from a particularly knowledgeable leader/mentor that I found to be inspiring. I had a team lead at one time that gave me a "C++ Question of the Day" for a while; he really got me thinking.

Anyway, it's been said before: it's all on you, the learner.

Last edited on
Topic archived. No new replies allowed.