C++ Developer Resources
Introduction to C++
Object oriented programming (OOP) is one of the most powerful tools for software development. C++ was one of the first widely available object oriented languages.
It is highly portable and finds use in large number applications. Today it is found in everything from computer graphics to flight controllers.
It has managed to remain popular among developers even as new languages emerge every year. As a compiled language derived from C, C++ performs computation very quickly and can be used for almost any purpose.
Early OOP languages like LISP and ALGOL helped establish the concept of member functions. This idea was expanded by Simula 67 "classes" for maintaining event records. Then concepts went on to influence many other languages.
This included C++, which is based upon the highly popular procedural language C. Using the syntax and structure of the C language, the purpose of C++ was to take the power and re-usability of C, and add classes to make it more useful for software development.
Short History of C++
In 1983, Bjarne Stroustrup started developing the C++ language, originally called "C with Classes." This new language was part of his PhD thesis at the University of Cambridge, as a means to make software development faster and easier than by use of Simula or BCPL.
With experience at AT&T Bell Labs, he was familiar with C and could thereby extend it to build a programming language that was both highly portable and very powerful at manipulating objects.
The language advanced throughout the 1980's, being renamed to the now familiar C++. (The ++ refers to the increment operator in C — so C++ is C+1.) During these updates, many things were added: function and operator overloading, type checking, and single line comments. The first compiler also emerged, called Cfront.
By 1985, the language was ready for commercial release, and the first edition reference book was released. By 1989, C++ 2.0 came along, adding inheritance, namespaces, casting, and boolean types. The language evolved a lot slower after that, becoming an ISO standard in 1998. Small revisions have been released every 3-4 years since.
What can I use C++ for?
Learning C++ can be a very different experience depending on what your first use of the language will be. Coding with such an established language means that there is a lot of existing code. Most of what you want to do will have already been done.
In many cases, libraries will be available which can be used to make your coding experience easier. Some applications even have an Application Program Interface (API) which includes certain functions, classes, types, capabilities, and macros which cut down on the amount of effort required to succeed at your goal.
With that in mind, here are a few different industries that rely on C++ heavily:
Device drivers and embedded software
Game engines and game programming
Advanced image or audio processing software
Telecommunications systems and networking
Interpreters — compiled binaries for 'Interpreted Languages' (eg, Python).
Some of these industries have found ways to use more abstracted scripting languages. But for any detailed work, knowledge of C++ will be critical.
The performance gains from C++ are substantial — especially over interpreted languages like PHP and Perl. So projects with very resource intensive computations will tend to use C++ — often with some multi-threading libraries.
If you already know where you're starting, that's half the battle. If you're just learning the language to know it, consider finding a project you enjoy to help make the learning experience more engaging.
Basic Conceptual Learning
Before jumping into an online class or tutorial series, you may want to familiarize yourself with the core concepts of C++ and Object Oriented Programming (OOP).
Understanding classes, objects, abstraction, data types, inheritance, and polymorphism are all helpful to know before writing any code.
Learning How to Code
There is no best way to learn how to code. Authoring software is a highly complex process. For every new use of a language there will be some kind of learning curve. Different people also learn in different ways.
There are online videos, online instructor lead classes, demo code, ebooks, and many other ways to learn. Here are just a few from each category to get you started:
Massively Open Online Courses (MOOCs)
Lynda.com C++ Tutorials and Training (registration required)
Online Environments and Compilers
cpp.sh - an online C++ shell and compiler for testing code
Useful Books and eBooks
Programming: Principles and Practice Using C++ — by C++ Creator Bjarne Stroustrup
C++ Primer by Lippman, Lajoie, and Moo
The C++ Programming Language (3rd Edition) — reference by Stroustrup.
General C++ Forums
Resources for Certain Applications
There are also great resources for C++ programmers. Once you understand the basics of programming, you can start writing the sort of applications you are most interested in. This is the best way to get good at programming C++.
There are different resources depending upon the kind of coding you want to do:
C++ for Devices, Drivers and Embedded Systems + Telecom
Arduino and C++ (for windows) - Arduino is open source hardware that is a great starting place for learning how to program for devices.
Driver Development at codeproject.com
Game Engines and Game Programming
With game programming, you can use existing game engines. Or you can write your own, and code directly with DirectX or OpenGL.
Data and Image Processing
Creating Interpreted Languages
Where to go next?
The resources provided here are but a small sampling of the available universe of coding materials and support. Eventually, you want to get to the point where you can specialize. Find a community that supports what you are working on; participate and expand your skills.
Don't be afraid to get help from places like StackOverflow. Or find a forum where you feel comfortable. From there, keep finding new projects. The best way to learn is by doing! Good luck!