[ACCEPTED]-What technologies do C++ programmers need to know?-c++

Accepted answer
Score: 37

As for every language, I believe there are 2 three interconnected levels of knowledge 1 :

  1. Master your language. Every programmer should (do what it takes to) master the syntax. Good references to achieve this are :
  2. Know your libraries extensively.
    • STL is definitely a must as it has been included in the C++ Standard Library, so knowing it is very close to point 1 : you have to master it.
    • Knowing boost can be very interesting, as a multi-platform and generic library.
    • Know the libraries you are supposed to work with, whether it is Win32 API, OCCI, XPCOM or UNO (just a few examples here). No need to know a database library if you develop purely graphic components...
  3. Develop your knowledge of patterns. Cannot avoid Design Patterns: Elements of Reusable Object-Oriented Software here...

So, my answer to your updated question would be : know your language, know your platform, know your domain. I think there is enough work by itself here, especially in C++. It's an evergoing work that should never be overlooked.
Score: 16

C++ developer have to grok std and boost libraries.

List 10 of other technologies largely depends on 9 project type. For sure you will have some 8 interaction with SO, so you will need to 7 know API of your environment.

As for data-access 6 and other stuffs there are tons for different 5 solutions. C++ is much richer than some 4 managed langs in that sense. 99% of old 3 popular systems have C/C++ interface.

After 2 you clarified your question a bit in the 1 comment to my answer I can recommend:

  • Good code browser (SourceInsight or Understand For C++ for example)
  • Static analysis tools (Link, KlockWork Inforce, etc.)
  • MySQL\SQLite (I encountered these DB in a huge number of C++ projects)
  • UI technologies (OpenGL\GLUT, DirectX, GDI, Qt, etc)
Score: 6

technologies you should know as a C++ programmer 17 (and therefore more technically knowledgeable 16 than lesser programmers ;) ):

performance 15 issues - what makes things go slow, how 14 to find and fix such issues. I also mean 13 stuff like context switching, cache lines, optimised 12 searches, memory usage and constraints, and 11 similar stuff that your average VB/C# developer 10 doesn't care about.

threading issues - how 9 to get the most from a multi-threaded app, how 8 to detect and fix abuses of the same.

low-level 7 communications - especially being able to 6 connect to obscure systems that no-one else 5 has written a toolkit for (especially radio 4 comms), latency and bandwidth management.

Otherwise, for 3 specific tools - it depends on what you're 2 targeting, Windows dev will be different 1 to Linux, different to embedded.

Score: 5

This will largely depend on the used platform 11 and other constraints. As a general rule, a 10 good (C++) programmer is (or should be) able 9 to learn a platform-specific API in a very 8 short time. For C++, it's much more important 7 to understand the different tool chains 6 (e.g. a Windows programmer should also know 5 the GCC tool chain) and differences in compilers. Programmer 4 should also understand limitations and platform-dependend 3 behaviour of the language.

As for libraries, C++ programmers 2 absolutely need to know STL and Boost. No 1 discussion.

Score: 4
Score: 2

Besides the stuff everyone listed, keep 9 in mind that C++ programmer have space on 8 the embedded systems market (much more than 7 most other high level languages).So familiarity 6 with embedded systems and development may 5 open a lot of doors and job opportunities 4 where you will not be competing so heavily 3 with Java development for example. So learning 2 to code compact code (compact after compiled) and 1 low memory usage techniques is a good bet.

Score: 1

if you're using gcc you should definitely 7 know gdb. Actually, you should be proficient 6 with the local debugger for whichever compiler 5 you're using. Other than that there is 4 such a wide range of libraries used that 3 being able to quickly pick up an API is 2 more useful than any specific one. I would 1 suggest learning doxygen though.

Score: 1

If you are using linux then Valgrind is a very usefull 2 tool for checking how your program deals 1 with memory access.

Score: 0

In no specific order

  • DirectX
  • MFC & Win32
  • STL
  • GDI


Score: 0

The popular way to use C++ in the mobile 2 space would involve learning Symbian OS 1 development.


More Related questions