Michael Hohn's home page



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.

Last modified: Fri Aug 8 16:40:48 PDT 2003