Computer Languages

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 displays.
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.

Why not...?

I never learned Fortran and probably never will. I also steadfastedly refuse to learn how to make and use flint stone tools.
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 Riverbank Computing. A book on PyQt by Boudewijn Rempt is available for purchase or free download here.
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 here.


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 Physical Society's RevTeX package.

Printable versions in pdf-format are obtained from the LaTeX sources directly using the pdfelatex program.

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 here. )

Finally, credit is due to Jay Boersma's collection of web graphics for inspiration for the page backgrounds.