I don't have much stuff on C++ as yet; for now there is some general information about the Standard Template Library (STL), a beginning of a tutorial on STL I am writing, and a review of many C++ libraries, by Marco Pace. To see what is there, go to C++
At Mark Weaver's recommendation, I tried Python. Python is as good as Perl in most respects; its regexp handling is not as nice, and it is not always as concise, but it is much cleaner and easier to understand. The syntax is very regular, the modularization is clean, and it offers similar high-level operations to Perl: smart array manipulation, slicing, associative arrays, mapping, object-oriented support, dynamically evaluated code and garbage collection.
To anyone who wants a high-level scripting language, I strongly recommend that you look at both Python and Perl5 (as well as Tcl and Scheme) before choosing.
I never write shell-scripts any more; perl scripts are almost always faster to run, faster and easier to write, and perl is extremely portable. If I can, I use python; if not, perl, and sh only for trivial things or when neither perl nor python is available (very rare these days on Unix systems).
This page includes links to manual pages and information pages on Perl 5, various perl libraries such as Tkperl (a high-level windowing package) and CGI (world-wide-web utilities).
If you intend to do any serious statistical work, check it out.
Here is the CMU StatLib Index, which has a lot of public domain S-Plus code.
For example, almost all my C++ programs use a package called "param" that allows you to specify resources in a similar way to the X resource system. You can specify resources in a file or on the command line, and they are availabe to the programmer as members of global resource structures.
One special command-line argument "-param_dump" tells the param library to dump all the parameters it knows about, along with their values and a help string explaining what they do.
I wrote a perl script that takes executables that use this library, runs them with the -param_dump argument, and reformats things into a zsh completion command so that you can get command-line completion on any of the parameters; it even gives you the default value and the help string. I find this enormously valuable for programs that have many such parameters.
Information on
shells, what some can do, and what others can't do.
Emacs lisp
My editor of choice for the last ten years has been emacs (I use version
19 now), and I have a fair amount of elisp code (4K lines or so)
floating around. If you are at Brown, you can browse in
/u/jak/src/elisp/mine
to see if there is anything you might
find useful; feel free to send me mail if you have any questions about
anything there, or to ask whether I have some specific piece of code you
are looking for.
Here are some resources from other sites.
I have started to use a LaTeX/HTML package called
hyperlatex.
If anyone uses other such packages, I would be interested to hear what
you think of them. The PEST
overview is an example of a document written using hyperlatex.
MIA
Note: this section is principally useful (if at all) to people at Brown,
since it concerns local software. However, certain pieces of MIA have been
distributed as part of various packages.
MIA is a project that was originally started by John Shewchuk, Moises
Lejter, Glenn Carroll, Eugene Santos and myself, to write a multi-agent
dungeons and dragons game. That project quickly died as we discovered
that we had far too little time, but the name and semi-official status
at Brown remained as a convenient repository for C++ code that we wanted
to share.
There are a number of pretty stable parts of MIA, though many of them
will be superceded by the ANSI library when it becomes widely
available. Some of the main stable pieces are:
The source directories are /pro/mia/src/String/dist, etc. To
include file, add -I/pro/mia/include to your compile line, and
include files with #include <mia/String.h>. The
library to link against is
/pro/mia/lib/SOLB/SunOS-5.4-d/libmia.a.
Contact me (jak) or Moi
(mlm) if you would like to use MIA or are having problems using it.
LaTeX
Dimitris Michailidis has an excellent web page on LaTeX.