Compilers and Interpreters

Several compilers and interpreters are available on the system, some included in the distribution and others added in an available through modules.

GNU Compiler Collection (gcc)

GCC is the default for compiling programs on all Linux distributions. It has been installed both through the distribution and as a module. The default version will not change during the lifetime of the OS version so newer versions are available through modules. The collection provides C, C++, and FORTRAN compilers along with supporting utilities and libraries. 

Intel Compilers

The Intel compiler collection also provides support for C, C++, and FORTRAN code. As gcc has extensions not included in Intel and vice-versa, certain programs can only be compiled on one or the other. The Intel compilers allow for optimization on several generations of CPUs within the same executable and the executable may be somewhat faster than one compiled under gcc.

NVIDIA HPC Compilers

The NVIDIA HPC SDK C, C++, and Fortran compilers support GPU acceleration of HPC modeling and simulation applications with standard C++ and Fortran, OpenACC® directives, and CUDA®. GPU-accelerated math libraries maximize performance on common HPC algorithms, and optimized communications libraries enable standards-based multi-GPU and scalable systems programming.

Clang

Clang is an alternative front-end to the gcc compilers and supports C, C++, Objective C, and Objective C++. It has been developed to provide better diagnostic messages and to have better integration with IDE's.

Go

Go is a compact language with quick compile times. The programs should be portable across Linux, Windows, and Macs. A few open-source packages are moving to using Go. Available only through modules.

Rust

The rust compiler has been designed as a high-level language with strong typing and good performance.

Java

Java is a very high-level object-oriented language designed to be platform agnostic. It is a hybrid compiler/interpreter, creating compiled intermediate files that are then interpreted. CLI applications with GUI support are available and it is often used in web application. The OS distribution provides multiple versions and the version used can be selected through modules.

Groovy

Apache Groovy is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform.

SWIG

SWIG is an interface compiler that connects programs written in C and C++ with scripting languages such as Perl, Python, Ruby, and Tcl. It works by taking the declarations found in C/C++ header files and using them to generate the wrapper code that scripting languages need to access the underlying C/C++ code.

R

The R scripting language is designed for statistical analysis with graphical support. Common statistical applications include data mining and bioinformatics analysis.

Python

The python scripting language is heavily used across a variety of disciplines with many libraries included for specific functionalities. It is a popular language for bioinformatics packages. Python 2 is no longer supported and has been replaced by python 3. Python is included in the distribution and newer versions are available through modules.

Perl

Perl is a mature scripting language with a long history. It's original purpose was to parse arbitrary text files but it now has a large library of module extending its capabilities.

PHP

PHP's major use is in scripting web pages as it can be mixed with standard HTML to create dynamic sites. It does have a command-line interface for testing scripts.

Lua

Lua is a scripting language designed to be embeddable in higher-level systems and to be very lightweight.

Javascript

JavaScript is a programming language that developers use to make interactive webpages. The interpreter on the system is called through node.

TCL

TCL is a very simple language to quickly develop scripts. When combined with TK graphical applications can be developed.