I want to learn C++

  • The FTB Forum is now read-only, and is here as an archive. To participate in our community discussions, please join our Discord! https://ftb.team/discord

Questing_FTB_Player

New Member
Jul 29, 2019
27
0
0
TL;DR, I want to learn C++ through the medium of ebooks or online tutorials (including YouTube Videos).


I have very little programming knowledge (nothing beyond logic statements, but for the sake of ease, let's just assume I know nothing). I do not want to pay money for tutorials, books, compilers or anything ever (I'd prefer not to pirate any software if I can help it).

Ideally, I want an interactive tutorial, (Like Code Academy) but honestly I know that's really asking for much. I don't particularly have the widest of attention spans, and reading reams of text will bore me very quickly.

Opinions from those who have learned C++ as a first language would be great.
 

RadBlaster33

New Member
Jul 29, 2019
16
0
0
Microsoft Visual Express which supports a number of languages and it free. There is also good number of self learning tools from Microsoft.

If you are learning a language for the first time I highly recommend that you learn C#. I'm sorry but the road to learning is reading reading reading and more reading and then it coding, coding, coding and more coding. But a good series of video will ground you in some basic understanding in object-originated languages.

Here is another development IDE platform only for C#, again free open source.
Here is one I used when I started learning C++ NetBean, again free open source.
 

gattsuru

Well-Known Member
May 25, 2013
364
103
68
Note that C++ (and C, and other lower-level languages) has some very strict format, memory allocation, and order issues that aren't as common in more user-friendly languages. It's something you can and should learn to deal with eventually, but it's tricky if you're also learning how assignment operators work. One thing that few people new to coding realize : learning the first language will teach you enough rules to get you grounded in that type of programming as a field, to the point where you can conceivably learn whatever language works best for an individual project*. Don't get too caught up in learning a single language to rule them all. My first lab language was C, but most of my field work involves C#, Java, or specialized languages.

Visual Studio Express, as RadBlaster33 notes, is very good for either for C# or C++. It's a very robust IDE, and the ability to literally step through lines of code as they're executed makes for a world of different from the classic compile-and-pray concept.

C++ is fairly rough as a first language, because it's compiled and fairly strict about its language parameters, so you're not going to find as many simple web tutorials. Programmr is the one I've heard the most about, and while it has more depth on other languages, the C++ section is at least a decent competitor to the average community college class. Still not /great/, but it's an option. The best tutorials aren't quite as interactive. LearnCPP is both very strong and covers a very broad range of topics, but it's a little more traditional tutorial than interactive-action.

As for other options...

Eclipse can handle either Java or Python, and while it's not as easy to use, it's still a lot better than manhandling mingw into place manually. Code Academy's does have a Python section that is pretty good, as does Programmr and a lot of other competitors. Python isn't as low-level as C++, but it will teach you the rules of object-oriented programming in a pretty English-language user-friendly form. It's a lot more capable of a language than you'd think, and most importantly, there are a huge number of free tutorials.

You can also start with Java. It's not a very efficient language, but it's portable to many different architectures and operating systems and has the upside of very strong typing to help you avoid many common errors. The language (more technically, environment, though not as bad as HTML5+JS) has some structural deficits, but it's heavily used in a lot of industry, and enough so that it's not a bad investment to learn. Again, Eclipse is a good-enough starting IDE, and it's a nice tool to have. Coding Academy doesn't support Java, but CodingBat has some very simple stuff, as does Programmr.

* There are a few exceptions : going from very high-level languages like Python down to very low-level ones like OpenGL or Assembly still take a lot of time, and goofy languages like APL take some getting used to no matter what you started out in. Imperative languages also won't help you much with 'functional' languages, or vice versa, although the latter are rarely used outside of higher education or very specialized fields anyway. Anything from C to HTML5+JavaScript shares enough of a root that the rule applies.
 
Last edited:

Questing_FTB_Player

New Member
Jul 29, 2019
27
0
0
Please wait at least a day before you bump
Very sorry, I was not aware of the bumping rules; that will not happen again.

Microsoft Visual Express which supports a number of languages and it free. There is also good number of self learning tools from Microsoft.

If you are learning a language for the first time I highly recommend that you learn C#. I'm sorry but the road to learning is reading reading reading and more reading and then it coding, coding, coding and more coding. But a good series of video will ground you in some basic understanding in object-originated languages.

Here is another development IDE platform only for C#, again free open source.
Here is one I used when I started learning C++ NetBean, again free open source.

I'm downloading Visual Express 2013. What kind of advantages would I gain from learning C# before C++?

Note that C++ (and C, and other lower-level languages) has some very strict format, memory allocation, and order issues that aren't as common in more user-friendly languages. It's something you can and should learn to deal with eventually, but it's tricky if you're also learning how assignment operators work. One thing that few people new to coding realize : learning the first language will teach you enough rules to get you grounded in that type of programming as a field, to the point where you can conceivably learn whatever language works best for an individual project*. Don't get too caught up in learning a single language to rule them all. My first lab language was C, but most of my field work involves C#, Java, or specialized languages.

Visual Studio Express, as RadBlaster33 notes, is very good for either for C# or C++. It's a very robust IDE, and the ability to literally step through lines of code as they're executed makes for a world of different from the classic compile-and-pray concept.

C++ is fairly rough as a first language, because it's compiled and fairly strict about its language parameters, so you're not going to find as many simple web tutorials. Programmr is the one I've heard the most about, and while it has more depth on other languages, the C++ section is at least a decent competitor to the average community college class. Still not /great/, but it's an option. The best tutorials aren't quite as interactive. LearnCPP is both very strong and covers a very broad range of topics, but it's a little more traditional tutorial than interactive-action.

As for other options...

Eclipse can handle either Java or Python, and while it's not as easy to use, it's still a lot better than manhandling mingw into place manually. Code Academy's does have a Python section that is pretty good, as does Programmr and a lot of other competitors. Python isn't as low-level as C++, but it will teach you the rules of object-oriented programming in a pretty English-language user-friendly form. It's a lot more capable of a language than you'd think, and most importantly, there are a huge number of free tutorials.

You can also start with Java. It's not a very efficient language, but it's portable to many different architectures and operating systems and has the upside of very strong typing to help you avoid many common errors. The language (more technically, environment, though not as bad as HTML5+JS) has some structural deficits, but it's heavily used in a lot of industry, and enough so that it's not a bad investment to learn. Again, Eclipse is a good-enough starting IDE, and it's a nice tool to have. Coding Academy doesn't support Java, but CodingBat has some very simple stuff, as does Programmr.

* There are a few exceptions : going from very high-level languages like Python down to very low-level ones like OpenGL or Assembly still take a lot of time, and goofy languages like APL take some getting used to no matter what you started out in. Imperative languages also won't help you much with 'functional' languages, or vice versa, although the latter are rarely used outside of higher education or very specialized fields anyway. Anything from C to HTML5+JavaScript shares enough of a root that the rule applies.

A few years ago, I knew the basics of Python (I can't remember if it was Python 2.x or 3.x), but remembering that I am very bare on the coding knowledge, what makes a High-Level programming language different from a Low-Level language, beyond better compatibility?
 

gattsuru

Well-Known Member
May 25, 2013
364
103
68
What kind of advantages would I gain from learning C# before C++?
If you need to code applications for your own system, it'd be vastly faster and easier and you'll be able to make a user interface much sooner. The libraries in C# are also more robust by default, and are somewhat easier for the mildly tech-aware to expand (example : it's about three key-presses to add the AForge image libraries to a C# project, while adding boost to a C++ project takes about five minutes). If you go to a job interview for an intro-level tech job, this will /usually/ be more helpful (some exceptions for specialized fields or academia).

The downside is that it's nearly Windows-only (Mono can run some C# code in some Linux environments, but results vary), and that it has some performance limitations.
... what makes a High-Level programming language different from a Low-Level language, beyond better compatibility?
"Abstraction" is a term referring to the conceptual relationship between the words and symbols you use to program, and the actual underlying activity. A language with relatively little abstraction is a low-level language, and a language with more abstraction is a high-level language. Assembly is the a very low-level language : you must give the processor each command individually exactly as the processor would interpret it. Python is a very high-level language : you can refer to network connections with an abstraction like StreamSocket and not have to care about what type of network interface you're handling or the socket dataset type. For example, Python has a List type, while a less abstracted version of the same concept might be an Array, and a less abstracted version of that would be a memory pointer and a length-of-data field.

Higher-level languages are /usually/ easier to handle, but allow you to avoid some degree of precision that can otherwise be helpful, and many 'default' behaviors they must select have their downsides.