Home Up C94.00 Other versions Revision history The future etcetera Acknowledgements Contacts, Mailing list Site map, search




The three principle virtues of a programmer are Laziness, Impatience, and Hubris. 
Larry Wall

There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.
-C.A.R. Hoare

Reliability in the Face of Complexity - the Challenge of High-end Scientific Programming, 2001, by Gary Ferland, my contribution to Spectroscopic challenges of photoionized plasmas, ASP Conference 247  PDF

Links to the open source software movement:

The home page of the Open Source Initiative.
Slashdot a rumor mill for hackers
O'Reilly Open Source Center
Free Software Foundation
Linux Online
The Apache Project
Cygwin -  GNU on Win32 distributed by Red Had. 
The Linux Documentation Project
iMatix software tools


Perl is an excellent platform-independent way to automatically interact with a computer.  I use Perl scripts to completely test Cloudy every night after it is changed and to do other housekeeping activities.  (The full test suite must be run anytime anything changes to catch bugs as soon as they are introduced.) 
The Perl Institute
The Activestate distribution (the one I use - includes an excellent debugger)
On Usenet at comp.lang.perl 
CPAN - Comprehensive Perl Archive Network, lots of Perl scripts
The Perl data language, PDL, extends Perl to do matrix math
SMTP email can be sent from Perl on nt/w2k using DevMail
I use Blat to send email from Windows through SMTP and is open source


Cloudy uses MPI for parallel computing.  Here is the MPI master site.
MPI - The Complete Reference.  An on-line book on MPI.
The PACS Training Course on MPI.


Graphical top-ends for much of the Cloudy analysis tools are being developed using Tcl/Tk.  This provides a simple cross platform way to build a user-friendly GUI.
The Active State Tcl/Tk site
Visual Tcl/Tk, a Visual Basic-like tcl editor
tcl developer exchange
Tcl/Tk contributed source archive

Other free software

File viewers
for PDF, 
and GSview (its graphical front end for Windows) for PostScript, and the gv front end for Unix.

is a port of the TeX environment to Win95 and NT.  The gsview download also includes the ps2epsi translator, which is needed to convert pc-generated postscript into the encapsulated postscript needed by the LaTex environment.
Need to make your modern Word or WordPerfect document look like old-fashioned Latex??  Design Science, the makes of MathType, offer a port of the Computer Modern fonts to the TrueType.  They are free but you need to register.

is a Windows 95/NT text editor.
The grasp editor gives an algorithmic view of a program.
VIM is an improved Vi available for free download.  The vi lovers homepage has links to this and more.  This is the editor I use.
EMACS ported to NT
BK ReplacEm - replaces text across multiple files.
Eluent tools provides a graphical front end to sed to edit an entire collection of files.  I use these tools every day.

The Cygwin (Redhat) port of gcc (click on "install now").  This includes many GNU utilities and gcc.
The djgpp port of the GNU C++ compiler to dos.  This link includes other gnu stuff as well. 
MinGW: Minimalist GNU For Windows
A list of IDEs for gcc.
Al Stevens' IDE for gcc, called Quincy 
LCC-Win32 is an independent development of a C/Fortran environment.  The binary is free.
Pacific C, a simple C compiler
The command line version of the Borland C++ compiler is free.
Splint is an open source lint for C
Object Outline from Bumble Bee Software produces reports of relationships between routines and objects

X11 Servers for Windows:  
is a pure Java implementation
XFree86 from Cydwin

Unix clones:  
Cygwin ports the Unix environment to Windows.
The Unix Reconstruction Project - rewrites Unix tools in Perl
wxWindows is a cross-platform GUI

The Secure Shell for connecting to other machines, and file transfers, is free for educational use
Mindterm does ssh and scp
Calc98 is a simulated hand calculator that also does extensive conversions.  A great deal of its power is not obvious at first, so be sure to read the html help file.
Project Gutenberg
- making all public domain literature openly available.
Literate Programming is a web site dedicated to clear programming style, and methods of creating self-documenting programs
rtf2latex converts an rtf file (which Word can create) into LaTex
What real programmers use

The source and executables for Super Star Trek, a descendant of a game I played in the early 1970s on a mighty CDC 6600 using a paper TTY.

Some shareware/commercial software I use

The following software is not free, but evaluation downloads are.

MS Visual Studio, Cloudy is developed with this IDE/C++ compiler
Visual SlickEdit runs on may platforms and has great power.  This is the editor I use.
Eluent Tools, file and directory editing, and it integrates with Visual Studio.
MKS Toolkit, brings a Korn shell and Unix tools into the NT environment.
can compress and decompress zip, gzip, and tar files.
WS_FTP is an ftp client.
L0phtCrach by L0pht Heavy Industries can discover passwords on any Microsoft machine if it has enough time and physical access to the box.  It should only be used for morally justifiable purposes such as correcting errors in your merit evaluation on the Chair's or Dean's computer, or your salary stored on the Comptroller's machine.
UltraEdit, a programmer's editor
ZoneAlarm is a personal firewall

Repositories of scientific software, with sources

Atlas is a self-optimizing BLAS
The object oriented numerics page
GAMS, NIST's Guide to Available Mathematical Software.
The Netlib Repository at UTK & ORNL
The TOMS Repository at
Numerical analysis FAQ page, has many hints about web resources.
The Blitz++ Numerical Library home page, a set of C++ classes designed for scientific use.  They also have an Object-Oriented Numerics Page, with links to lots of scientific software.
POOMA - parallel object-oriented methods and applications, from Los Alamos
TNT (Template Numerical Toolkit) is NIST's set of ANSI C++ routines for linear algebra, with source.  They also have lapack++.
Scientific Computing: C++ versus Fortran, describing classes designed for scientific computing in C++.
Resources for mathematical computation in C or C++.
The SNIPPETS collection of C codes with source
Scientific Applications for Linux (SAL) has many codes with sources
iMatix has an open source Standard Function Library
Boost is a free peer-reviews portable C++ library

C & C++

The chairman of AT&T
Said, "Your graduate physics degree
Is not worth a penny,
Of your kind we've too many.
Perhaps you can program in C?"

Steve Langer, from the ASP Limerick page

C compilers are listed above.

The Stanford CS Education Library offers many introductions to aspects of C.

How to shoot yourself in the foot, in 20 different languages.

The current version of Cloudy is ANSI/ISO 89 C. I used the forc package by Cobalt Blue to do the initial conversion from ANSI FORTRAN 77 with MILSPEC extensions.
My notes on converting Cloudy from Fortran 77 to ANSI C.

A C language tutorial from Dr. Dobb's Journal.
The comp.lang.c C FAQ page,   the C++ FAQ page, and the learning C++ FAQ.
Lysator Computer Society's Hotlinks to C Resources
ACCU, the Association of C & C++ Users - they do Java too.

Remember; Beethoven wrote his first symphony in C.
Proviso:  it was not ANSI C or C++, but another dialect called C-Major.

And a warning:

"... one of the main causes of the fall of the Roman Empire was that, lacking zero, they had no way to indicate successful termination of their C programs."
-- Robert Firth

Hit Counter
Last changed 09/28/03.
Return to the Cloudy Home Page.
Copyright 1978-2003 Gary J. Ferland