C is a classic language choice for research computing, and it can be used to produce very efficient applications. It has a steep learning curve compared to some other languages, particularly when it comes to pointers and memory management; few languages provide C’s level of flexibility in this area, and its “close to the hardware” approach may seem intimidating at first. If this is the case, we have tutorials to help gradually introduce you to the language.

You don’t need to write your entire application in C to benefit from it, because C is used to extend other languages with new functionality that is faster than natively written code (e.g. you can extend Python with code written in C). You can also integrate GPU programming with your C applications.

What about C++?

C++ is a separate language, but it is a superset of C. In other words, C++ compilers can also compile C code and C++ can call/interact-with C libraries. C++ includes extensive support for the object-oriented programming (OOP) paradigm. Successful applications of OOP can save time during the development process, and can make programs easier to maintain. As with any language, to write the most efficient code, you’ll need to keep in mind how the objects are created, stored, accessed, etc.

Availability and Setup on Our Systems

You can compile C and C++ source code using several compilers installed on our system. If you are using the SCC cluster, we also have several libraries written in C that are useful to scientific computing.

Additional Help/Documentation