I've been self-learning C++ for about 4 months now. I'm enjoying it, and I think I'm doing quite well. However, an answer to a question of mine got me thinking that I might be setting myself up for a fall.
So, what do people here think about C++ as a first language to learn? And is it worth me just carrying on now that I've made a good start?
Personally, I think everybody should start with BASIC. No, really I do. At least first the first 2 weeks to 1 month. It's great for high school courses. It's simple enough that you can focus on very simple things like using variables, looping structures, conditionals, and calling subroutines without having to worry about frameworks, objects, and pointers. However, if you've already gotten past all that simple stuff, there's no reason you can't just keep on going with C++. It's a great language. And very useful. I think that people who have never programmed in C/C++ are really missing out on some fundamental things you should know about how things work on a lower level.
C++ is good choice for a first language. Particularly if you're four months and making good progress I would urge you to not change now. C++ is hard, but it's a good language to learn because it doesn't hide anything from you and because so many other languages use a similar syntax. Make sure you give yourself plenty of time to understand that syntax so you can easily spot the differences (which can be quite subtle) when you start learning other languages.
Finally, I would caution you to make sure you're concentrating more on programming concepts than on language concepts. With every new C++ syntax feature you learn, ask yourself "What problem does this solve?" It's those solutions to problems that are far more important than the particular implementation in C++ or any other language.
While I'm sure C++ is a great tool to have inside one's box, i would carefully advise against learning it as a first language.
C++ is a powerful tool for professionals. You can do horrible things with it (http://chaosradio.ccc.de/camp2007_m4v_1951.html). Sometimes you will have a very hard time trying to understand the errormessages. It has features like manual memory management and pointer arithmetic which clearly have they're place in systems programming and software with very high performance requirements (games...) needs them, but they are are hard to get inside ones head and are not very useful outside those niches. When I switched from c++ to java I really learned a lot faster, but that may be just a personal thing.
C++ is probably not the best language to start with, and there are much worse choices.
As other have already said, the trick is to learn it correctly, I mean the modern C++ where you'd be able to concentrate (/focus?) on algorithms and the problems to solve, not the C with classes where you'd have to understand memory management while in the early chapters.
AC++ is indeed a very good book to learn modern C++. However without any experience in programming, Francis Glassborrow's You can do it may be a better choice to start with.
any language is a good first language (within reason, not something like lolcode)
once you get the hang of how it works, it becomes easier to branch out to other languages.
Personally, I think everybody should start with BASIC. No, really I do. At least first the first 2 weeks to 1 month. It's great for high school courses. It's simple enough that you can focus on very simple things like using variables, looping structures, conditionals, and calling subroutines without having to worry about frameworks, objects, and pointers. However, if you've already gotten past all that simple stuff, there's no reason you can't just keep on going with C++. It's a great language. And very useful. I think that people who have never programmed in C/C++ are really missing out on some fundamental things you should know about how things work on a lower level.
C++ was the first proper language I learnt, and it set me in good stead for learning other languages (C# mainly).
Among other things, it gave me a good grounding in object orientation, which really, really helped, when working with Siebel and with C#.
Enjoy.
C++ is good choice for a first language. Particularly if you're four months and making good progress I would urge you to not change now. C++ is hard, but it's a good language to learn because it doesn't hide anything from you and because so many other languages use a similar syntax. Make sure you give yourself plenty of time to understand that syntax so you can easily spot the differences (which can be quite subtle) when you start learning other languages.
Finally, I would caution you to make sure you're concentrating more on programming concepts than on language concepts. With every new C++ syntax feature you learn, ask yourself "What problem does this solve?" It's those solutions to problems that are far more important than the particular implementation in C++ or any other language.
While I'm sure C++ is a great tool to have inside one's box, i would carefully advise against learning it as a first language.
C++ is a powerful tool for professionals. You can do horrible things with it (http://chaosradio.ccc.de/camp2007_m4v_1951.html). Sometimes you will have a very hard time trying to understand the errormessages. It has features like manual memory management and pointer arithmetic which clearly have they're place in systems programming and software with very high performance requirements (games...) needs them, but they are are hard to get inside ones head and are not very useful outside those niches. When I switched from c++ to java I really learned a lot faster, but that may be just a personal thing.
C++ is probably not the best language to start with, and there are much worse choices.
As other have already said, the trick is to learn it correctly, I mean the modern C++ where you'd be able to concentrate (/focus?) on algorithms and the problems to solve, not the C with classes where you'd have to understand memory management while in the early chapters.
AC++ is indeed a very good book to learn modern C++. However without any experience in programming, Francis Glassborrow's You can do it may be a better choice to start with.