[ACCEPTED]-What technologies do C++ programmers need to know?-c++
As for every language, I believe there are 2 three interconnected levels of knowledge 1 :
- Master your language. Every programmer should (do what it takes to) master the syntax. Good references to achieve this are :
- The C++ Programming Language by Bjarne Stroustrup.
- Effective C++ series by Scott Meyers.
- 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...
- 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.
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)
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.
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.
Standard Template Library
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.
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.
If you are using linux then Valgrind is a very usefull 2 tool for checking how your program deals 1 with memory access.
In no specific order
- MFC & Win32
The popular way to use C++ in the mobile 2 space would involve learning Symbian OS 1 development.
More Related questions