575 lines
15 KiB
HTML
575 lines
15 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<HTML
|
|
><HEAD
|
|
><TITLE
|
|
>Code Development Tools</TITLE
|
|
><META
|
|
NAME="GENERATOR"
|
|
CONTENT="Modular DocBook HTML Stylesheet Version 1.7"><LINK
|
|
REL="HOME"
|
|
TITLE="Scientific Computing with Free software on GNU/Linux HOWTO "
|
|
HREF="index.html"><LINK
|
|
REL="PREVIOUS"
|
|
TITLE="Introduction"
|
|
HREF="intro.html"><LINK
|
|
REL="NEXT"
|
|
TITLE="Mathematics Packages"
|
|
HREF="mathpack.html"></HEAD
|
|
><BODY
|
|
CLASS="sect1"
|
|
BGCOLOR="#FFFFFF"
|
|
TEXT="#000000"
|
|
LINK="#0000FF"
|
|
VLINK="#840084"
|
|
ALINK="#0000FF"
|
|
><DIV
|
|
CLASS="NAVHEADER"
|
|
><TABLE
|
|
SUMMARY="Header navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TH
|
|
COLSPAN="3"
|
|
ALIGN="center"
|
|
>Scientific Computing with Free software on GNU/Linux HOWTO</TH
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="left"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="intro.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="80%"
|
|
ALIGN="center"
|
|
VALIGN="bottom"
|
|
></TD
|
|
><TD
|
|
WIDTH="10%"
|
|
ALIGN="right"
|
|
VALIGN="bottom"
|
|
><A
|
|
HREF="mathpack.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
></TABLE
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"></DIV
|
|
><DIV
|
|
CLASS="sect1"
|
|
><H1
|
|
CLASS="sect1"
|
|
><A
|
|
NAME="devtools"
|
|
></A
|
|
>3. Code Development Tools</H1
|
|
><P
|
|
> Code development consists of mainly Programming languages,
|
|
Debugging tools, Version Management tools, Compiling tools,
|
|
and Integrated Development Environments (IDEs) where all
|
|
the above are coupled as a single software application.
|
|
</P
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="ProgLang"
|
|
></A
|
|
>3.1. Programming Languages</H2
|
|
><P
|
|
> Links are provided to various compilers used in Scientific
|
|
Computing like FORTRAN, C, C++, Java and more recently
|
|
Python.
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://gcc.gnu.org/"
|
|
TARGET="_top"
|
|
>GNU Compiler Collection
|
|
</A
|
|
>:
|
|
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,
|
|
GNU Fortran-95, Java, and Ada, as well as libraries for these languages
|
|
(libstdc++, libgcj,..).
|
|
</P
|
|
><P
|
|
> For manuals on using the various GCC compilers check out
|
|
<A
|
|
HREF="http://www.gnu.org/software/gcc/onlinedocs/"
|
|
TARGET="_top"
|
|
> The GCC online documentation</A
|
|
>
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="ftp://ftp.gnu.org/gnu/g77/index.html"
|
|
TARGET="_top"
|
|
>g77
|
|
</A
|
|
>:
|
|
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
|
|
<A
|
|
HREF="http://gcc.gnu.org/onlinedocs/g77/"
|
|
TARGET="_top"
|
|
>The Gcc Online
|
|
documentation</A
|
|
> site.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://gcc.gnu.org/fortran/"
|
|
TARGET="_top"
|
|
>gfortran</A
|
|
>.
|
|
I was happy to receive this link by mail. It was 3 years since I had
|
|
migrated to using the GNU C compiler for scientific computing because
|
|
there was no "truly free" FORTRAN-95 compiler available then. I thank
|
|
Paul Thomas for this link.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://g95.sourceforge.net"
|
|
TARGET="_top"
|
|
>g95</A
|
|
>.
|
|
gfortran above and g95 are reportedly offshoots from the same CVS tree.
|
|
Has an impressive list of programs that compiles and runs using this
|
|
compiler.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://www.llnl.gov/casc/Overture/henshaw/install/node6.html"
|
|
TARGET="_top"
|
|
> fort77 and f2c</A
|
|
>:
|
|
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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://lush.sourceforge.net"
|
|
TARGET="_top"
|
|
>lush</A
|
|
>:
|
|
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.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><A
|
|
HREF="http://www.python.org/topics/scicomp/"
|
|
TARGET="_top"
|
|
> Scientific Python</A
|
|
>:
|
|
You may want to explore
|
|
<A
|
|
HREF="http://www.python.org"
|
|
TARGET="_top"
|
|
>Python</A
|
|
> 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).
|
|
</P
|
|
><P
|
|
> You can further explore Python for Scientific computing here:
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://starship.python.net/crew/hinsen/scientific.html"
|
|
TARGET="_top"
|
|
> Scientific-Python</A
|
|
>:
|
|
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
|
|
<A
|
|
HREF="http://starship.python.net/crew/hinsen/tutorial.ps"
|
|
TARGET="_top"
|
|
> Scientific Computing in Python</A
|
|
>.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://www.scipy.org"
|
|
TARGET="_top"
|
|
>SciPy</A
|
|
> 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.
|
|
</P
|
|
></LI
|
|
></UL
|
|
></LI
|
|
></UL
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="DebugTool"
|
|
></A
|
|
>3.2. Debugging Tools</H2
|
|
><P
|
|
> In this section links are given to mainly debugging tools for GCC and
|
|
FORTRAN. I understand that python has a debugging module built in though I
|
|
have not used it. The purpose of a debugger is to allow you to see what is
|
|
going on inside a program while it executes or what the program was doing
|
|
when/if it crashed.
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
><A
|
|
HREF="http://www.dsm.fordham.edu/~ftnchek"
|
|
TARGET="_top"
|
|
>Ftnchek:</A
|
|
>
|
|
A FORTRAN checker designed to detect errors in a Fortran
|
|
program that a compiler usually does not. Therefore it is best
|
|
to run ftnchek on your FORTRAN programs after it has compiled
|
|
without errors. Its purpose is to assist the user in finding
|
|
semantic errors. Semantic errors are legal in the Fortran
|
|
language but are wasteful or may cause incorrect operation.
|
|
An on-line <A
|
|
HREF="http://www.dsm.fordham.edu/~ftnchek/html/"
|
|
TARGET="_top"
|
|
> manual</A
|
|
> is available. This project is looking for volunteers
|
|
to bringing ftnchek up to the Fortran 90 standard.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://www.gnu.org/software/gdb/gdb.html"
|
|
TARGET="_top"
|
|
>gdb
|
|
</A
|
|
>:
|
|
All programs written in the languages supported by GCC can be
|
|
debugged using <EM
|
|
>gdb</EM
|
|
>, an excellent interactive,
|
|
command line debugger. You can compile your programs using a -g option
|
|
which then compiles your code with debugging information inserted
|
|
into the executable. It can start your programs, stop your programs
|
|
on specified conditions and at specified locations, examine what
|
|
happened when your program stops. In a large code with multiple
|
|
cascading calls to various functions it can back trace the function
|
|
calls. You can also
|
|
<A
|
|
HREF="http://sources.redhat.com/gdb/current/onlinedocs/"
|
|
TARGET="_top"
|
|
>Download
|
|
the document</A
|
|
> <EM
|
|
>Debugging with GDB</EM
|
|
> and
|
|
a quick reference card.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="ftp://ftp.x.org/contrib/utilities/"
|
|
TARGET="_top"
|
|
>xxgdb:</A
|
|
>
|
|
It is a front end to the gdb debugger. Useful for beginners
|
|
to gdb as it lists out the whole gdb commands as buttons with a area
|
|
for viewing source on which one can include break points, etc by a
|
|
click of the mouse, and another area for viewing the debugging results.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://www.gnu.org/software/ddd/ddd.html"
|
|
TARGET="_top"
|
|
>DDD:
|
|
</A
|
|
>
|
|
The GNU Data Display Debugger, GNU DDD, is a graphical front-end for
|
|
command-line debuggers such as GDB, DBX, WDB, Ladebug, JDB, XDB, the
|
|
Perl debugger, or the Python debugger. Besides ``usual'' front-end
|
|
features such as viewing source texts it also has a good interactive
|
|
graphical data display, where data structures are displayed as graphs.
|
|
Follow this link for a <A
|
|
HREF="http://www.gnu.org/manual/ddd/"
|
|
TARGET="_top"
|
|
> DDD manual</A
|
|
> in postscript / HTML / PDF format.
|
|
</P
|
|
></LI
|
|
></UL
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="VCT"
|
|
></A
|
|
>3.3. Version Control Tools</H2
|
|
><P
|
|
> It will be worth your while investing some time in learning to use
|
|
one of the version control tools below (cvs is what I use ..) if you
|
|
are into any serious code development.
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://www.cvshome.org/dev/codelinux.html"
|
|
TARGET="_top"
|
|
> Concurrent Versions System </A
|
|
>:
|
|
CVS is one of the most popular version control systems running on the
|
|
Linux operating system. Popular Linux projects like Apache, EGCS, GIMP,
|
|
and others are using CVS to coordinate their efforts ... This is how
|
|
the URL linked above describes their effort.
|
|
</P
|
|
><P
|
|
> A tutorial on CVS is available at <A
|
|
HREF="http://www.gentoo.org/doc/cvs-tutorial.html"
|
|
TARGET="_top"
|
|
> Gentoo Linux Documentation</A
|
|
> and a free CVS book is available
|
|
<A
|
|
HREF="http://cvsbook.red-bean.com/"
|
|
TARGET="_top"
|
|
>here</A
|
|
>
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://www.xcf.berkeley.edu/~jmacd/prcs.html"
|
|
TARGET="_top"
|
|
> Project Revision Control System </A
|
|
>:
|
|
PRCS, the Project Revision Control System, is the front end to a set of
|
|
tools that (like CVS) provide a way to deal with sets of files and
|
|
directories as an entity, preserving coherent versions of the entire set.
|
|
PRCS was designed primarily by Paul N. Hilfinger, with input and
|
|
modifications by Luigi Semenzato and Josh MacDonald. PRCS is written and
|
|
maintained by Josh MacDonald. Its purpose is similar to that of SCCS,
|
|
RCS, and CVS, but (according to its authors, at least), it is much simpler
|
|
than any of those systems. This page is where information on the latest
|
|
developments in PRCS can be found. </P
|
|
></LI
|
|
><LI
|
|
><P
|
|
><A
|
|
HREF="http://www.cryon.com/gbuild/"
|
|
TARGET="_top"
|
|
>Gbuild</A
|
|
> :
|
|
gbuild is a script written in the Bourne shell language to simplify
|
|
package maintenance by allowing you to automate code update from CVS,
|
|
compilation, building tar/rpms/srpms of your package. some external
|
|
scripts which certain functions of gbuild depend on are written in Perl.
|
|
gbuild is released under the GPL.
|
|
</P
|
|
></LI
|
|
></UL
|
|
></DIV
|
|
><DIV
|
|
CLASS="sect2"
|
|
><H2
|
|
CLASS="sect2"
|
|
><A
|
|
NAME="IDE"
|
|
></A
|
|
>3.4. Integrated Development Environments</H2
|
|
><P
|
|
> Integrated development environments (IDEs) can be very useful for
|
|
building code and ideally come with all the above tools (i.e a compiler,
|
|
a debugger and a version control tool). In addition to that IDEs also
|
|
usually provide a makefile generator, documenting help, online help
|
|
manuals, etc.
|
|
</P
|
|
><P
|
|
></P
|
|
><UL
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://www.kdevelop.org/"
|
|
TARGET="_top"
|
|
> Kdeveloper </A
|
|
>:
|
|
A easy to use C/C++ IDE (Integrated Development Environment) for Linux.
|
|
It supports KDE/Qt, GNOME, plain C and C++ projects. This site has a lot
|
|
of documentation ..... a highly browsable site for software developers.
|
|
Specifically, KDevelop manages or provides:
|
|
</P
|
|
><P
|
|
> All development tools needed for C++ programming like Compiler,
|
|
Linker, automake and autoconf; KAppWizard, which generates complete,
|
|
ready-to-go sample applications; Class generator, for creating new
|
|
classes and integrating them into the current project; File management
|
|
for sources, headers, documentation etc. to be included in the
|
|
project; The creation of User-Handbooks written with SGML and the
|
|
automatic generation of HTML-output with the KDE look and feel;
|
|
Automatic HTML-based API-documentation for your project's classes with
|
|
cross-references to the used libraries; Internationalization support
|
|
for your application, allowing translators to easily add their target
|
|
language to a project;
|
|
KDevelop also includes WYSIWYG (What you see is what you get)-creation
|
|
of user interfaces with a built-in dialog editor; Debugging your
|
|
application by integrating KDbg; Editing of project-specific pixmaps
|
|
with KIconEdit; The inclusion of any other program you need for
|
|
development by adding it to the "Tools"-menu according to your
|
|
individual needs.
|
|
</P
|
|
></LI
|
|
><LI
|
|
><P
|
|
> <A
|
|
HREF="http://vdkbuilder.sourceforge.net/"
|
|
TARGET="_top"
|
|
>VDKbuilder</A
|
|
>:
|
|
VDKbuilder is a tool that helps programmers in constructing GUI interfaces,
|
|
editing, compiling, linking, and debugging within an integrated environment.
|
|
Using VDKBuilder dramatically reduces developing time since all code related
|
|
to GUI construction and signal processing is automatically generated,
|
|
maintained and updated. It is distributed under the GNU Public License.
|
|
Visit the site for downloading the software.
|
|
</P
|
|
></LI
|
|
></UL
|
|
></DIV
|
|
></DIV
|
|
><DIV
|
|
CLASS="NAVFOOTER"
|
|
><HR
|
|
ALIGN="LEFT"
|
|
WIDTH="100%"><TABLE
|
|
SUMMARY="Footer navigation table"
|
|
WIDTH="100%"
|
|
BORDER="0"
|
|
CELLPADDING="0"
|
|
CELLSPACING="0"
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="intro.html"
|
|
ACCESSKEY="P"
|
|
>Prev</A
|
|
></TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="index.html"
|
|
ACCESSKEY="H"
|
|
>Home</A
|
|
></TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
><A
|
|
HREF="mathpack.html"
|
|
ACCESSKEY="N"
|
|
>Next</A
|
|
></TD
|
|
></TR
|
|
><TR
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="left"
|
|
VALIGN="top"
|
|
>Introduction</TD
|
|
><TD
|
|
WIDTH="34%"
|
|
ALIGN="center"
|
|
VALIGN="top"
|
|
> </TD
|
|
><TD
|
|
WIDTH="33%"
|
|
ALIGN="right"
|
|
VALIGN="top"
|
|
>Mathematics Packages</TD
|
|
></TR
|
|
></TABLE
|
|
></DIV
|
|
></BODY
|
|
></HTML
|
|
> |