I switched to C++ a few months ago, learning its syntax, the main features
of the STL and what you can usually find in a “learn C++” manual.
Now I would like to go further. What would be your recommendations? I would like to know what to learn next (not only about the language, but also debugging, frameworks etc. etc.)
I know probably the answer depends on the specific needs of each user, so here is a list of mine:
- Cross Platform development
- Developing GUI for my programs
- Develop extendible software, allowing the use of plugins
- Use of scientific libraries
- Interact with databases (mainly MySQL)
- Having server/client functionalities (I’d like users of my programs to interact through internet.. as you might have guessed I am not a programmer by training so I might have used the wrong terms.. if so I apologize for that).
Of course I know it takes time, but I would like to have a good list of references and resources to start (both books and websites are ok).
Thanks a lot for your help!
3
If there’s one thing I could recommend, it’d definitely be Boost C++ Libraries. In fact, Boost is not a single library. It’s a collection of them, and they’re high-quality, portable, open source and well praised by people ranging from students to the C++ standards committee.
Since Boost does not include GUI or anything else which is platform-dependent, there’s also Qt, the cross-platform UI framework. Qt supports almost every single computing platform around nowadays, Linux, Windows, Mac, as well as Symbian and Windows Phone platforms. Since the recent acquisition of Qt by Digia, there are plans to introduce Qt on iOS and Android platforms too. So Qt is most definitely what you want to get familiar with, when it comes to cross-platform UI development.
A further word about C++ itself; as you most probably know, C++11 is the current C++ standard. C++11 almost makes it feel as if it was a new language altogether. Getting familiar with it’s new features will take time, so I would also consider focusing on learning some of the new things here and there. Especially some the new standard library additions such as smart pointers are something you might really get used to. Not that they’re hard, not at all. Just that they’re so important for the sake of safety.
Although this isn’t exactly what you asked for, C++ is a vast language. Hard to master, yet it’s mastery is very crucial in order to produce effective, safe, obvious and most importantly easy to understand code. Frankly, I’d start by reading Scott Meyers’ Effective C++ and More Effective C++ if you haven’t already. Sure, neither covers C++11(the fourth edition of Effective C++ will do that, but probably in 2014 or so), but they are extremely valuable to any uprising C++ programmers. Read them. Also C++ Coding Standards by Herb Sutter and Andrei Alexandrescu might come in handy.
4
Besides boost and Qt (which is a good suggestion), you could also learn a new programming language. Currently, the most popular cross-platform languages matching your list are Java, Perl, Python and Ruby (though the 3 latter ones are not so strong supported with tools on the GUI development side).
Learning a new language will also give you insides about the strengths and weaknesses of C++, so you don’t become a “one trick pony”.
4