C Programming
It’s rare that we have to use our C programming skills but it does happen from time to time, especially in applications where performance is a top priority, direct access to hardware is desired and/or memory is at a premium.
Device drivers, operating system kernels, and high performance applications are prime targets for using the C programming language. We haven’t historically been involved in writing device drivers or operating system kernels but we have been involved in high performance software applications.
The process of development in C (and other low level languages) is slower than other high level languages but you gain performance benefits. In some cases, those performance benefits outweigh the cost of additional development time. Computationally intensive (tracking, classification, natural language processing, etc.) systems fall in this category. For example, a software system that does aircraft tracking may use algorithms that require many many calculations to occur quickly to support a real or near real time requirement to report where the airplanes are. In this case, using C programming may give the developer a 30% speed boost over other options which may be the difference between a functional capability and a non-functional one.
In some cases, the most compute intensive portions of a larger software system can be built in C while other modules of the system are in another higher level language such as Java. In this case, the compute intensive portions of the system can be developed in C for the performance gains and the rest of the system can be developed in another higher level language for the development speed gains – resulting in the best of both worlds.
If your project requires C programming, we can help. If you’re not sure if it does, we can also help. Development in C is not an every day occurrence for us but we have several years of experience with C in high performance applications. Contact us to discuss your project.
