Ok, I have decided that I'm going to learn C++, so there, x language is better than y language debate is avoided.
I have some experience in programming but not much, I've learned some of JavaScript, most of HTML and CSS and a bit of Python, so I think I'm ready to move on to C++, just because it interests me. I have downloaded CodeBlocks and it seems to be pretty good, I don't really know but that's not my question.
My question is how would you suggest that I learn C++? Now I don't mean that should go take a course because that would cost money, and I don't want to spend any money so pretty much are there any good online C++ courses or video tutorials or other things that you would suggest?
Mostly I just want some opinions because a quick google search just made me more confused.
Might I ask why you're wanting to learn the syntax and intricacies of C++?
This seems to tie into the whole "what language should I learn first" deal. You say you know some Python. Can you create your own implementation of a Linked List both recursively and iteratively? How about a queue? Or a binary search tree? Can you implement sorting algorithms, and graph traversal algorithms such as Djikstra's? Do you know what a graph is, in terms of computer science?
Those are the bed rock of software development. Algorithms and data structures. It's irrelevant what language you know, as long as you have a grasp of the concepts. Those things I rattled off are basics, things you learn in entry level computer classes. Those are what you should be concentrating on learning, not how to write a While loop in 150 different languages.
The issue with C and C++ is that you have a lot of stuff to handle that isn't hidden by language features. You'll have to learn how to deal with memory allocation and deallocation. Pointers confuse the hell out of people, and those are really just the tip of the iceberg when dealing with memory. It's one of the bigger reasons C and C++ aren't recommended.
You can go quite a while without dealing with manual memory management in C++. Also, considering that C++ is a common language for introductory computer science courses, I wouldn't say it "isn't recommended".
It's also worth noting that the languages you learn do correlate with the concepts you learn. For example, you're not going to learn about operator overloading, generic programming, and other compile-time magic in a language without a preprocessor (e.g. Java). And good luck ever learning OOP paradigms in purely C++.
Well it looks like I did not avoid the x language is better than y language debate.
Really all I'm looking for here is if anyone knows of any well explained and thorough C++ tutorials. I don't care if it's not what you recommend, no offense but I've decided that I'm going to learn C++ and you're not going to change my mind.
I think it's still somewhat relevant to know what you're hoping to learn in C++, and what you already know concept wise. Can I assume you know enough basic computer science to really only have to give you syntax? Or do I need tutorials that teach different implementations of data structures and such at the same time as the syntax?
Sorry, maybe I wasn't really clear enough about that, but yes I do know how basic computer science works. I've gone through a couple of tutorials on other languages and so I know about different data structures and their uses and so on.
First off, OOP is not a silver bullet. I am unsure why so many programmers are part of this OOP cult. Although it has it's uses in some fields, I can name several applications where such a paradigm is not ideal for the job. OOP, in the traditional university-taught sense, will not be used for many jobs; most notably the ones that require high-performance calculations.
C++ is fine for OOP. No language that I have come across implements OOP in a pure sense, and quite frankly if a language does, I probably will not use it nor should anyone. Following a programming paradigm like a religion is not something anyone should be doing. A language that does so is severely limiting itself, and in plenty of code, in order to keep it as elegant, clean, or as fast as possible, many rules are broken.
I am also unsure why you, BKrenz, insist having to learn programming theory in order to learn C++. Honestly, C++ was my first language that I have actually learned. I had no experience with any sort of actual programming before then, and now I feel like a very fluent programmer. I have completed jobs for clients in exchange for money, just like countless others who haven't learned a buffer language. Plenty of professionals learned C or even Assembly as 12 year olds before even touching higher level languages. Regardless of the [programming] language you use, you will become an equally competent programmer.
When learning a language, basic computer science skills are largely trivial. Once you figure out the language syntax (which might require you to learn something related to computer science), then you start to learn how to actually program. A programmer is a problem solver. In order to solve your problems, you'll have to learn computer science in the process to effectively communicate with the target machine, and arguably the fastest way is to learn it while actively completing tasks. The art of solving a problem is the same regardless of the language you use.
As I have said in another thread, learning something purely as buffer material is not something someone should do; it is a waste of time. Learn something when you need to use it. In my opinion, learning a language, or an API, or implementing features you will not use is not a very smart decision to say the least.
__________
cplusplus.com is pretty decent. That's what I used when I first started some years ago. When I completed the tutorials in a few weeks later, I tried to make a graphical game. I headed over to gamedev.net, asked questions, took suggestions from the seasoned developers, and a few days later I managed to spit out a humble, buggy, pong clone. I have kept at making games for years now, and now I feel fluent in several languages, and I have specialized in graphics programming and do emulator development on the side.
So, my advice to you would be to follow a short yet effective tutorial, such as the one on cplusplus.com, then write a game, or something else related to what you ultimately want to do with programming later on.
(...On a side note... is it proper for me to begin my sentence without a capital letter? It is a url.)
I am also unsure why you, BKrenz, insist having to learn programming theory in order to learn C++.
I think you mistook what I was getting at. I was simply trying to determine if the tutorials I was searching for needed to include an explanation of the CS theory and concepts. It's a completely different learning experience if you're trying to learn a language AND theory, compared to just trying to figure out the syntax for a language while already having a strong theoretical background. My preferences for languages I'm not familiar with tend to focus first on syntax, then specialized language-specific features. It's my opinion that learning the theories that support it will lead to easier learning and overall better code quality and productivity. I'm sure that's backed up by studies, but it's late for me.
As I have said in another thread, learning something purely as buffer material is not something someone should do; it is a waste of time. Learn something when you need to use it. In my opinion, learning a language, or an API, or implementing features you will not use is not a very smart decision to say the least.
Only issue I can take with this is that a lot of people that come through looking for online materials aren't sure what they want to do. They're generally hobbyists, or younger students interested in computer science as a future career. The most important thing to keep in mind is that programming itself is just a tool for creating. If you like programming, figure out what kind of subject area you're interested in as well, and study ways to utilize programming in that field.
Simply put, I'm not saying you need to be familiar with theory to learn C++, but whether or not any suggestions I give should teach theory alongside C++. After all, implementing certain concepts can be a great project.
As far as learning goes, cplusplus.com is generally the defacto place. If you get into it, Bjarne Stroustrup's books on the language are terrific. He was one of the creators of the language. I highly recommend books. Not only are they generally more formal than online tutorials, but also give you a handy reference and something to read when you aren't at an internet connected device.
Standford's online series probably has quite a bit of great stuff too.
If you have questions, usually they've already been answered on Stackoverflow.
If you're looking for a project or series of challenges to apply your learning to, Project Euler is usually pretty good if you're familiar with Algebra.
Before starting to learn C++, first you start learning the C language and all the basics of C language and after that you start learning the C++. Try to learn all fundamentals of C++ and then try to apply the logic by using the codes of C++.
cplusplus.com is pretty decent. That's what I used when I first started some years ago. When I completed the tutorials in a few weeks later, I tried to make a graphical game. I headed over to gamedev.net, asked questions, took suggestions from the seasoned developers, and a few days later I managed to spit out a humble, buggy, pong clone. I have kept at making games for years now, and now I feel fluent in several languages, and I have specialized in graphics programming and do emulator development on the side.
Thanks for that, I will certainly look at cplusplus.com as you and BKrenz make it sound like the place to learn C++; two whole people said it so it must be true right?
cplusplus.com is a great resource, but it's reference material, not really tutorial material. Go there when you need to look something up from the standard library, but not when you're trying to learn the language in the first place. learncpp.com is a good place to go for learning material. It goes over the language features in a reasonable depth without focusing too much on higher level algorithms and applications (which you've said you're already familiar with), so it seems like a good fit for what you're looking for.
While I do believe Bjarne Stroustrup's books are very good, I cannot recommend them for a beginner. They are not very friendly to those who have just began programming/started learning C++. They feel much more technical.
Maybe once he's reasonably fluent in C++ I could recommend the book, but at his current level he will not be ale to understand it.
cplusplus.com is a great resource, but it's reference material, not really tutorial material. Go there when you need to look something up from the standard library, but not when you're trying to learn the language in the first place. learncpp.com is a good place to go for learning material. It goes over the language features in a reasonable depth without focusing too much on higher level algorithms and applications (which you've said you're already familiar with), so it seems like a good fit for what you're looking for.
cplusplus.com has tutorials. There is a reference too as well I guess. I believe Douas is working on the tutorials on the website to make them better.
Is it just me who finds it hilarious that just mentioning OOP offhand will launch Avilius into a long-winded defensive rant?
I don't think I was ranting!
I only wrote several lines on OOP! I also was not suggesting not to use it, just that it's not a magic bullet!I think I wrote against OOP once or twice before.
But I guess, after reading it collectively, I now realize that it is a bit fast paced. I'll try to tone it down next time.
Thanks for that, I will certainly look at cplusplus.com as you and BKrenz make it sound like the place to learn C++; two whole people said it so it must be true right?
And you, were you just trying to insight the wrath of Avilius because it was fun?
...or maybe I brought forth the wrath purposely... (:
I know cplusplus.com has tutorials, they're just not as good as some other sites, imho.
No one claimed OOP to be a "magic bullet", there is no "OOP cult" - both in the sense that I've never even met anyone who follows it religiously, and it's way too prominent (being one of the most common design philosophies in modern code) for the word "cult" to apply.
I know cplusplus.com has tutorials, they're just not as good as some other sites, imho.
Fair enough.
No one claimed OOP to be a "magic bullet", there is no "OOP cult" - both in the sense that I've never even met anyone who follows it religiously
Yes, I know no one claimed for it to be a magic bullet. I was just pointing it out. I was not referring to all programmers who follow the OO philosophy, because of course that would probably mean that I am part of a sort of anti-OOP cult, but I was referring to a subset of programmers who do follow it religiously (although terms 'religiously' and 'cult' are blatantly a hyperbole).
While I do believe Bjarne Stroustrup's books are very good, I cannot recommend them for a beginner. They are not very friendly to those who have just began programming/started learning C++. They feel much more technical.
Maybe once he's reasonably fluent in C++ I could recommend the book, but at his current level he will not be ale to understand it.
cplusplus.com has tutorials. There is a reference too as well I guess. I believe Douas is working on the tutorials on the website to make them better.
I probably wasn't going to check out those books anyway, to be honest. And I think the tutorials on cplusplus.com are alright, I checked out the first section yesterday.
Ok, I have decided that I'm going to learn C++, so there, x language is better than y language debate is avoided.
I have some experience in programming but not much, I've learned some of JavaScript, most of HTML and CSS and a bit of Python, so I think I'm ready to move on to C++, just because it interests me. I have downloaded CodeBlocks and it seems to be pretty good, I don't really know but that's not my question.
My question is how would you suggest that I learn C++? Now I don't mean that should go take a course because that would cost money, and I don't want to spend any money so pretty much are there any good online C++ courses or video tutorials or other things that you would suggest?
Mostly I just want some opinions because a quick google search just made me more confused.
Might I ask why you're wanting to learn the syntax and intricacies of C++?
This seems to tie into the whole "what language should I learn first" deal. You say you know some Python. Can you create your own implementation of a Linked List both recursively and iteratively? How about a queue? Or a binary search tree? Can you implement sorting algorithms, and graph traversal algorithms such as Djikstra's? Do you know what a graph is, in terms of computer science?
Those are the bed rock of software development. Algorithms and data structures. It's irrelevant what language you know, as long as you have a grasp of the concepts. Those things I rattled off are basics, things you learn in entry level computer classes. Those are what you should be concentrating on learning, not how to write a While loop in 150 different languages.
The issue with C and C++ is that you have a lot of stuff to handle that isn't hidden by language features. You'll have to learn how to deal with memory allocation and deallocation. Pointers confuse the hell out of people, and those are really just the tip of the iceberg when dealing with memory. It's one of the bigger reasons C and C++ aren't recommended.
"Programmers never repeat themselves. They loop."
You can go quite a while without dealing with manual memory management in C++. Also, considering that C++ is a common language for introductory computer science courses, I wouldn't say it "isn't recommended".
It's also worth noting that the languages you learn do correlate with the concepts you learn. For example, you're not going to learn about operator overloading, generic programming, and other compile-time magic in a language without a preprocessor (e.g. Java). And good luck ever learning OOP paradigms in purely C++.
Well it looks like I did not avoid the x language is better than y language debate.
Really all I'm looking for here is if anyone knows of any well explained and thorough C++ tutorials. I don't care if it's not what you recommend, no offense but I've decided that I'm going to learn C++ and you're not going to change my mind.
I think it's still somewhat relevant to know what you're hoping to learn in C++, and what you already know concept wise. Can I assume you know enough basic computer science to really only have to give you syntax? Or do I need tutorials that teach different implementations of data structures and such at the same time as the syntax?
"Programmers never repeat themselves. They loop."
Sorry, maybe I wasn't really clear enough about that, but yes I do know how basic computer science works. I've gone through a couple of tutorials on other languages and so I know about different data structures and their uses and so on.
First off, OOP is not a silver bullet. I am unsure why so many programmers are part of this OOP cult. Although it has it's uses in some fields, I can name several applications where such a paradigm is not ideal for the job. OOP, in the traditional university-taught sense, will not be used for many jobs; most notably the ones that require high-performance calculations.
C++ is fine for OOP. No language that I have come across implements OOP in a pure sense, and quite frankly if a language does, I probably will not use it nor should anyone. Following a programming paradigm like a religion is not something anyone should be doing. A language that does so is severely limiting itself, and in plenty of code, in order to keep it as elegant, clean, or as fast as possible, many rules are broken.
I am also unsure why you, BKrenz, insist having to learn programming theory in order to learn C++. Honestly, C++ was my first language that I have actually learned. I had no experience with any sort of actual programming before then, and now I feel like a very fluent programmer. I have completed jobs for clients in exchange for money, just like countless others who haven't learned a buffer language. Plenty of professionals learned C or even Assembly as 12 year olds before even touching higher level languages. Regardless of the [programming] language you use, you will become an equally competent programmer.
When learning a language, basic computer science skills are largely trivial. Once you figure out the language syntax (which might require you to learn something related to computer science), then you start to learn how to actually program. A programmer is a problem solver. In order to solve your problems, you'll have to learn computer science in the process to effectively communicate with the target machine, and arguably the fastest way is to learn it while actively completing tasks. The art of solving a problem is the same regardless of the language you use.
As I have said in another thread, learning something purely as buffer material is not something someone should do; it is a waste of time. Learn something when you need to use it. In my opinion, learning a language, or an API, or implementing features you will not use is not a very smart decision to say the least.
__________
cplusplus.com is pretty decent. That's what I used when I first started some years ago. When I completed the tutorials in a few weeks later, I tried to make a graphical game. I headed over to gamedev.net, asked questions, took suggestions from the seasoned developers, and a few days later I managed to spit out a humble, buggy, pong clone. I have kept at making games for years now, and now I feel fluent in several languages, and I have specialized in graphics programming and do emulator development on the side.
So, my advice to you would be to follow a short yet effective tutorial, such as the one on cplusplus.com, then write a game, or something else related to what you ultimately want to do with programming later on.
(...On a side note... is it proper for me to begin my sentence without a capital letter? It is a url.)
I think you mistook what I was getting at. I was simply trying to determine if the tutorials I was searching for needed to include an explanation of the CS theory and concepts. It's a completely different learning experience if you're trying to learn a language AND theory, compared to just trying to figure out the syntax for a language while already having a strong theoretical background. My preferences for languages I'm not familiar with tend to focus first on syntax, then specialized language-specific features. It's my opinion that learning the theories that support it will lead to easier learning and overall better code quality and productivity. I'm sure that's backed up by studies, but it's late for me.
Only issue I can take with this is that a lot of people that come through looking for online materials aren't sure what they want to do. They're generally hobbyists, or younger students interested in computer science as a future career. The most important thing to keep in mind is that programming itself is just a tool for creating. If you like programming, figure out what kind of subject area you're interested in as well, and study ways to utilize programming in that field.
Simply put, I'm not saying you need to be familiar with theory to learn C++, but whether or not any suggestions I give should teach theory alongside C++. After all, implementing certain concepts can be a great project.
As far as learning goes, cplusplus.com is generally the defacto place. If you get into it, Bjarne Stroustrup's books on the language are terrific. He was one of the creators of the language. I highly recommend books. Not only are they generally more formal than online tutorials, but also give you a handy reference and something to read when you aren't at an internet connected device.
Standford's online series probably has quite a bit of great stuff too.
If you have questions, usually they've already been answered on Stackoverflow.
If you're looking for a project or series of challenges to apply your learning to, Project Euler is usually pretty good if you're familiar with Algebra.
"Programmers never repeat themselves. They loop."
Before starting to learn C++, first you start learning the C language and all the basics of C language and after that you start learning the C++. Try to learn all fundamentals of C++ and then try to apply the logic by using the codes of C++.
Is it just me who finds it hilarious that just mentioning OOP offhand will launch Avilius into a long-winded defensive rant?
Thanks for that, I will certainly look at cplusplus.com as you and BKrenz make it sound like the place to learn C++; two whole people said it so it must be true right?
And you, were you just trying to insight the wrath of Avilius because it was fun?
cplusplus.com is a great resource, but it's reference material, not really tutorial material. Go there when you need to look something up from the standard library, but not when you're trying to learn the language in the first place. learncpp.com is a good place to go for learning material. It goes over the language features in a reasonable depth without focusing too much on higher level algorithms and applications (which you've said you're already familiar with), so it seems like a good fit for what you're looking for.
Alright I'll look at that too, thanks.
Maybe once he's reasonably fluent in C++ I could recommend the book, but at his current level he will not be ale to understand it.
cplusplus.com has tutorials. There is a reference too as well I guess. I believe Douas is working on the tutorials on the website to make them better.
I don't think I was ranting!
I only wrote several lines on OOP! I also was not suggesting not to use it, just that it's not a magic bullet!I think I wrote against OOP once or twice before.
But I guess, after reading it collectively, I now realize that it is a bit fast paced. I'll try to tone it down next time.
...or maybe I brought forth the wrath purposely... (:
I know cplusplus.com has tutorials, they're just not as good as some other sites, imho.
No one claimed OOP to be a "magic bullet", there is no "OOP cult" - both in the sense that I've never even met anyone who follows it religiously, and it's way too prominent (being one of the most common design philosophies in modern code) for the word "cult" to apply.
Fair enough.
Yes, I know no one claimed for it to be a magic bullet. I was just pointing it out. I was not referring to all programmers who follow the OO philosophy, because of course that would probably mean that I am part of a sort of anti-OOP cult, but I was referring to a subset of programmers who do follow it religiously (although terms 'religiously' and 'cult' are blatantly a hyperbole).
I probably wasn't going to check out those books anyway, to be honest. And I think the tutorials on cplusplus.com are alright, I checked out the first section yesterday.
Was it fun?
I'd rather just figure it out on my own if you don't mind Freddan, I'm sure that that would be very helpful; but I'd just rather not.
OP has already said he's set on learning C++ and wants to avoid the "X language is better than Y language" debates, so put a lid on it please.