Programming Languages

Compilers

There are C/C++ and FORTRAN compilers from different vendors including the Portland Group (PGI) and Intel installed on the cluster. Overall, they perform comparably on most codes. You may find that your codes compile more easily and/or get better performance using a particular compiler.

The following table shows what is available on Discovery and has some links to the documentation:

COMPILER

DESCRIPTION

GNU GCC and G++ are often the compilers of choice for developing software that is required to execute on a wide variety of hardware and/or operating systems. System-specific compilers provided by hardware or OS vendors can differ substantially, complicating both the software’s source code and the scripts which invoke the compiler to build it. With GCC, most of the compiler is the same on every platform, so only code that explicitly uses platform-specific features must be rewritten for each system. gfortran is the GNU Fortran 95 compiler front end, designed initially as a free replacement for, or alternative to, the Unix f95 command.  g77 is the GNU Fortran 77 compiler front end.  Versions installed for GCC and gfortran include 4.4.7 ( gcc / g++ / gfortran )
Intel The Intel C++ and Fortran Compilers can generate code for IA-32, Intel 64, or IA-64 architecture applications on any Intel-based Linux system. IA-32 architecture applications (32-bit) can run on all Intel-based Linux systems. Intel 64 architecture applications and IA-64 architecture applications can run only on Intel 64 architecture-based or IA-64 architecture-based Linux systems. You can use the compiler on the command line or in the Eclipse integrated development environment.
Portland Group These compilers and tools include the PGF77, PGF95, PGHPF, PGC++, and PGCC ANSI C compilers, the PGPROF profiler, and the PGDBG debugger. They work in conjunction with an x86 or x64 assembler and linker. You can use the PGI compilers and tools to compile, debug, optimize, and profile serial and parallel applications for x86  or x64 (AMD or  Intel) processor-based systems.

See the Overview of Linux Compilers page for an overview of the compilers available on the cluster and their features.

See the Scientific Libraries page for more information on libraries associated with these compilers

See the Debuggers page for more information about tools to help you debug your programs.

Java

Oracle’s Java JDK 1.6.x, 1.7.x, and 1.8.x are installed on discovery. The Java Programming Language is a general-purpose, concurrent, strongly typed, class-based object-oriented language. It is normally compiled to the bytecode instruction set and binary format defined in the Java Virtual Machine Specification.

The JRE (Java Runtime Engine) provides the libraries, Java virtual machine, and other components necessary for you to run applets and applications written in the Java programming language. This runtime environment can be redistributed with applications to make them free-standing.

The JDK includes the JRE plus command-line development tools such as compilers and debuggers that are necessary or useful for developing applets and applications.

Interpreters

LANGUAGE

DESCRIPTION

perl Practical Extraction and Report Language: Perl is a general-purpose programming language originally developed for text manipulation and is now used for a wide range of tasks including system administration, web development, network programming, GUI development, and more.
php PHP (recursive acronym for PHP: Hypertext Preprocessor) is a widely-used open-source general-purpose scripting language that is especially suited for web development and can be embedded into HTML.  The best things about using PHP are that it is extremely simple for a newcomer, but offers many advanced features for a professional programmer.
python Python is an easy-to-learn, powerful programming language. It has efficient high-level data structures and a simple but effective approach to object-oriented programming. Python’s elegant syntax and dynamic typing, together with its interpreted nature, make it an ideal language for scripting and rapid application development in many areas on most platforms.
ruby Take a true object-oriented language, such as Smalltalk. Drop the unfamiliar syntax and move to more conventional, file-based source code. Now add in a good measure of the flexibility and convenience of languages such as Python and Perl. You end up with Ruby.
R R is a language that bears a passing resemblance to the S language developed at AT&T Bell Laboratories. It provides support for a variety of statistical and graphical analyses. R is a true computer language that contains a number of control-flow constructions for iteration and alternation. It allows users to add additional functionality by defining new functions.