Michael Safyan

C++ programming

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)



My statements are my own and do not necessarily reflect the opinions of Google Inc.