C++ programming language
High-level, compiled, object-oriented
C++ is a powerful, industrial-grade language that supports a variety of coding styles (e.g. imperative, functional, and object-oriented styles are all supported; similarly, C++ supports both pass-by-value and pass-by-reference). While simultaneously providing high level abstractions such as lists, maps, classes, etc., C++ also provides very direct interoperation with C and assembly language (and, by extension, practically all other programming languages) and allows very low-level direct memory manipulation, bit flipping, and other "close-to-the-metal" capabilities that make it the ideal language for systems sofware. This power, however, does come with some tradeoffs which is why it has lost ground to other languages such as Java in the realm of application software, though C++ is very much still alive and kicking.
- Commonly used for
- operating systems
- system libraries
- drivers
- servers
- commandline applications
- web applications (server-side logic)
- desktop GUIs
- video games
- physics engines
- networking
- databases
- others
- Rarely used for
- web app UIs (possible with emscripten or native client, but generally to be avoided)
- native Android apps (parts can be written in C++ using the NDK, but Java is preferred for native Android apps)
- Execution and distribution
- compiled; ordinarily, code is translated to native code for each CPU architecture, the translated code is distributed by target architecture, code is executed directly by the CPU
- Memory management
- manual (with smart pointer classes to facilitate automatic deallocation)
- A Beginner's C++ for a solid foundation in programming, though it is a bit outdated regarding C++
- Teach Yourself C++ in 21 Days for a more up-to-date lesson (after reading A Beginner's C++)
- The C++ Super FAQ for all your C++ questions and for learning C++ gotchas and best practices
- Advanced C++ Lessons for template metaprogramming and other advanced C++ features
- Unofficial C++ Standard Library Reference for reference documentation on the standard library
- Standard Template Library (STL) Reference for documentation on the C++ containers and algorithms
- C++11 Draft Spec for specifics about the C++ language specification
- IEEE Std. 1003.1 (a.k.a. "POSIX") for C functions provided by UNIX-compliant OSes that can be used in C++