C is quite suitable for numerical computations:
it is fast and its weak support for complex data
structures is less of an issue for numerical analysis
than for programming business logic. Reasonably good
numerics libraries exist for C.
When I simply need something to work, I use Perl.
Its unique ability to deal with text files makes it
the natural language for post-processing and analysis
of data files generated by, for instance, a C backend.
The Tk GUI toolset provides a very convenient (albeit
not very pretty) way to programming interactive graphics
Perl's cerebral brother. Its more natural (compared
to Perl's) support for Object-Oriented programming and
complex data structures makes it particularly suitable
as a rapid prototyping language.
I never learned Fortran and probably never will. I also
steadfastedly refuse to learn how to make and use flint
- C++, Java
Neither is particularly suited to either numerical
programming or "exploratory" programming (in the
spirit of ToyProblems). Support for heavy-duty
Object-Oriented programming (i.e. Encapsulation and
Abstraction) is typically overkill for numerical work:
since the problems are mathematical in nature, they
are already plenty abstract. Moreover, the compile- and link-
(or load- in the case of Java) cycles stand in the
way of casual programming.
- Excellent Python bindings for the Qt framework exist
and allow to build very nice looking GUIs using Python.
PyQt is being developed by
Computing. A book on PyQt by Boudewijn Rempt is available
for purchase or free download
GD is a C-library to generate graphics (PNG or JPG). It has
all the expected functionality (draw pixels, lines, arcs;
color management). I use Lincoln Stein's excellent Perl bindings
for GD, available
Gnuplot is a curve plotter. In recent releases, it has added
significant new capabilities, but at heart it is still just
that - a small, little curve plotter, which won't get in the
way. A long-time favorite.
Home page here.
All kinds of image conversion and manipulation.
Home page here.
Tools used to maintain this site
The text of all toyproblems is maintained in the form
of LaTeX source
files, using a custom documentclass based on the American
Society's RevTeX package.
Printable versions in pdf-format are obtained from the
LaTeX sources directly using the
The HTML version is generated
with latex2html, employing
a custom plugin corresponding to the toyproblem documentclass
and other source level modifications. (Particularly helpful notes
on extending and modifying latex2html can be found
Finally, credit is due to Jay Boersma's
of web graphics for inspiration for the page backgrounds.