I learned C and want to try to use C as my primary development language. However, most jobs I see are for C++.
So I want to know what I can do with C. What positions are usually open for a C programmer who doesn't also know C++?
|
I learned C and want to try to use C as my primary development language. However, most jobs I see are for C++. So I want to know what I can do with C. What positions are usually open for a C programmer who doesn't also know C++? |
||||
|
|
|
C suit for developing OSs, System level programming, Embedded Systems(including various types of micro-controllers PIC, ARM, and micro-processors), RTOS, Compilers, website programming using CGI (as a "gateway" for information between the Web application, the server, and the browser), libraries to other languages (such as GNU Multi-Precision Library, the GNU Scientific Library, Mathematica and MATLAB are completely or partially written in C) and most of the memory managed applications. Target platforms for C programs range from 8-bit micro-controllers to supercomputers. |
|||||||||||||||
|
|
Embedded systems low layers, Real time OS, device drivers are often written in C. It is said that "C is the new assembly". Basically everywhere you'll be working very close to the hardware, there is good chance it will be in C. |
|||||||||||
|
|
C is frequently used for system software; software projects such as coreutils, for example, are written in C. But once you are familiar with C, it's a good idea to broaden your experience to include C++. |
|||
|
|
|
Your best bet is to find a company which already has a big project written in C, and do maintenance for it. Could be any domain. Besides that, it's mostly the low-level stuff Xavier mentioned. |
|||
|
|
|
Real-time tasks like audio processing are also usually done in C for performance reasons. |
|||
|
|
|
Besides the embedded and low-level jobs, where i find handy to write nice C code is when binding high-level languages (Python, Lua, JavaScript) to other code. Usually the extension API of those languages is defined in C and not C++. So, when you have a system written in high level language and feel the need for speed, usually the best answer is to recode the hot parts in C. Also, there might be some useful C library that you want to access from your choice language, then you have to write the binding in C. |
|||
|
|
|
Usually everything that is not run on a desktop/laptop computer as an user application is C: driver, kernel, telecom, system, phones... If you intend to do games, those will run on big user machine/consoles, and since games are most of the time big applications, it will be done in C++. I can understand you don't like C++, it's perfectly normal. Search for "dark side of C++", you'll find an interesting paper. If you prefer C, you might want to take a lot at the STL and some design patterns. The C++ features that are important are :
Those features are very important when building a large game, because it improves the whole code organization and execution (function and data are encapsulated in classes, it improves containment), where in C, it's rather chaotic. Don't use too abstract features such as templates or multiple inheritance, it will mess your mind. In fact, most of the time all C++ features are not used, and your code and data organization will still have a lot of C spirit in it. C++ is just more flexible than C in that way, but the abstract feature can be difficult to deal with since it's still a compiled language. |
|||
|
|