|
|
Research
Programming
Although my research was aimed at the accurate numerical solution
of fracture problems, design and implementation of such a
numerical algorithm turned out to be the most ... interesting ...
part of the work. Among the most useful tools were
- The Ocaml programming
language. The combination of functional programming,
static typing, interactive toplevel, and near-C speeds
makes this my language of choice for complex algorithms.
- The Python programming
language. An easy-to-use, dynamically typed, imperative/OO
programming language with bindings to many libraries; very
convenient for writing that occasional 3000-line, throw-away
prototype -- like this GUI.
- Some UNIX tools: lex, yacc, make, m4, and
CVS
- The TeX
typesetting system, to produce legible equations.
- The C programming language.
A small language that never gets in the way.
Also the one language to which every other practical language
must (or at least should) interface to.
But it's
very low-level, and this gets tedious.
Using the Boehm-Demers-Weiser
garbage collector together with a simple exception-handling
framework, e.g. that in the book
"C Interfaces and Implementations",
makes it much nicer.
Of course, at this point one might as well use Ocaml...
Also used:
- The Maple
computer algebra system is very convenient for generating
and testing the expressions which go into the real
programs. Its three-dimensional scientific graphics
facilities are also nice, although the generated PostScript
leaves much to be desired.
- The Matlab numerical
computation environment. Once complicated data structures
are reduced to dense (or sparse) matrices, experimentation
is trivial in Matlab. Along with its visualization
facilities, this is a very nice environment for getting to
understand one's data.
Unfortunately, these two environments are not cheap...
Author Info
Address: hohn-no-spam-please@math.utah.edu
Some pictures -- worth more (and larger
than) a thousand words.
|