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 & embedded software
  • Game engines & game programming
  • Advanced image or audio processing software
  • Telecommunications systems & 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)

Online Environments & Compilers

Useful Books & eBooks

General C++ Forums

Resources for Certain Applications

There are also great resources 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 & Embedded Systems + Telecom

Game Engines & 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 & Image Processing

Creating Interpreted Languages

Where to go next?

Also see our guide to C Developer Resources and our other programming guides.

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!