I've pretty much learned the basics of C++ so far in university, what else can I learn with this knowledge with not too much difficulty?

16    07 Jul 2015 07:02 by u/TNGeneric

14 comments

6

I would say continue to learn more about C++. The important thing you should get a grasp on soon is memory management. Once you're proficient in C++ (or any one programming language for that matter, though a good background in C++ is a good background to have), learning other languages (only if you have to) shouldn't be as much as a problem.

1

Awesome, the next course I'm taking is Java and I hope it goes well :)

0

Java will be a cake walk compared to c++, provided you have a good grasp of object-oriented design.

4

Here's a good talk by the inventor of C++, Bjarne Stroustrup: Make Simple Tasks Simple. I think it's a really good talk, and it discusses my main beef with "university C++": Every single course I've seen, every single person I've talked to who has had C/C++ at university, they all tell the same thing - they don't learn a single thing about when to use the stack or the heap. I've helped out a friend with their programs once, their professor's tactic was just "always use new, never use anything else, if you do it any other way, you're failing the class".

Bjarne's approach is so damn simple - always use the stack (and don't worry about memory management, the stack clears itself) unless you explicitly need to pass data around outside of your scope, only then use the heap (but use a shared_ptr and don't worry about memory management, because a shared_ptr cleans up after itself).

0

cool thanks!

5

What's best to understand is that C++ is simply a tool to solve complex problems, like any programming language. You should use C++ to learn universal development concepts such as design patterns and algorithms, concurrency, memory management (may this isn't so universal anymore :P). Now that you have a basic understand of C++ you can use it to dig into these higher level concepts through reference example.

Oh, and check out the STL and templates, they are pretty much the most awesome thing in C++, but can be difficult to digest.

1

Oh the STL. Spent two weeks of mind numbing work learning how to write linked lists, and doubly linked lists, and how to write insert, delete, search, sort, etc. methods for it too. Then to find out about the beautiful STL. It was a happy frustration.

1

If you understand the basic concepts of programming from C++, then you should be able to learn other languages with ease based on the syntax. With more languages, you get more tools to let you do amazing stuff.

0

Id go with Java. Maybe even Android development.

0

One of the things you should start investigating early is how to design programming. What helped me most was looking at design patterns which are common ways of organising code. I read a book called "Holub on Patterns" which was very useful, and I've heard also that "Design patterns: elements of reusable object-oriented software" is very good.

This will allow to make programs more readable, reliable, and fixable!

0

Make a memory simulator. This will make you better at c++, memory management and the dreaded pointers!

0

@TNGeneric , if you are from Tennessee, where did you happen to attend uni?

0

You may have learned the basics, but it is what you learn next that will help you with every other language out there. As another user mentioned, the STL is amazing. Learn how to connect your C++ source to a GUI. If you dig deeper with C++, other languages will just essentially be learning the syntax (and arguably an easier way to do some things).

I went from C++ into Java, C#, JavaScript, Ruby, and a few others, but the only one that really caught my attention was C#. It is enough like Java that you can learn one and be pretty close on the other (except LINQ with C#, it is amazing).

But it is very important to dig as deep as you can with C++ so that you won't have to necessarily learn other languages, you will just pick them up rather easily.

0

If you like C++ (and who wouldn't!) and want to learn more / do more with it, I would suggest looking into QT. It's a huge cross-platform toolkit for developing C++ applications, open-source and commercially for multiple platforms at once (windows, linux, mac, mobile). It's fairly easy to learn once you have a basic grasp of C++. QT gives you a very rich cross-platform GUI toolkit as well as optional modules to do pretty much everything (database access, threading, networking, you name it).