| Scientific Computing with Free Linux Software |
3. Code Development Tools
3.1. Programming Languages
Links are provided to various compilers used in Scientific Computing like FORTRAN, C, C++, Java and more recently Python. The FORTRAN links are to compilers for FORTRAN-77 and to the best of my knowledge there is no open source free compiler available for FORTRAN-90 (F90) though an effort is on to create a free, open-source Fortran 95 compiler at g95.
-
GNU Compiler Collection : GNU's project to produce a world class optimizing compiler. It works on multiple architectures and diverse environments. Currently GCC contains front ends for C, C++, Objective C, FORTRAN, Java, and Ada, as well as libraries for these languages (libstdc++, libgcj,..).
For manuals on using the various GCC compilers check out The GCC online documentation
-
g77 : The GCC front end for FORTRAN 77. It is a very good FORTRAN77 compiler. It however does not have the -r8 option which compiles a program as double precision. This could be a good compiler design philosophy but in many cases gives problems when porting a code from SUN / DEC / HP workstations onto Linux systems. The g77 manual is available at The Gcc Online documentation site.
-
fort77 and f2c: fort77 is a perl program which invokes the f2c command (a Fortran to C translator) transparently, so it can be used just like a real Fortran compiler. Fort77 can be used to compile Fortran, C and assembler code and can link the code with f2c libraries. If you install fort77, you'll also need to install the f2c package. This does not have the "-r8" problem. You can download fort77 and f2c from the above link.
-
lush: An object-oriented programming language, which combines the flexibility of an interpretive language, with the efficiency of a compiled language. It has full interfaces to numerical libraries (GSL, LAPACK, BLAS), graphics libraries (OpenGL), which allows creation of graphics and 3D animations and many other features that sound too good to be true. I have not yet tried this out, but it sounds very promising.
-
Scientific Python: You may want to explore Python for your scientific computing needs. Python is an interpreted, interactive, object-oriented programming language. It has a number of extensions for numerics, plotting, data storage and combined with Tk lets you develop very good GUIs for your codes. The most exciting aspect is that it simplifies programming because it has modules for almost anything (vectors, tensors, transformations, derivatives, linear algebra, Fourier transforms, statistics, etc ...) are available. You can also wrap C and Fortran libraries from Python. Finally if you want to write a numerical scheme of your own you may find that it is simpler in Python. There are also interfaces to netCDF (portable binary files), MPI and BSPlib (parallel programming).
You can further explore Python for Scientific computing here:
-
Scientific-Python: A collection of modules for scientific computing on Python. All the necessary modules can be downloaded as either a tar file or an RPM file from here. The maintainer Konrad HINSEN also has a nice tutorial on Scientific Computing in Python.
- SciPy An open source library of scientific tools for Python. It includes modules for
graphics and plotting, optimization, integration, special functions, signal
and image processing, genetic algorithms, ODE solvers, etc.
-
Next:
3.2. Debugging Tools
3.3. Version Control Tools
3.4. Integrated Development Environments
Scientific Computing with Free Linux Software
Table of Contents
0. Home
1. Preamble
2. Introduction
3. Code Development Tools
4. Mathematics Packages
5. Numerical Methods and Libraries
6. Graphics and Visualization
7. Programming systems for GNU/Linux
8. Word-Processing and Poster presenting tools on Linux
9. Free Database Management Systems for Linux
10. Linux in the laboratory

