PDL 2.4.0: Scientific Computing for the Masses
Dr. Zowie writes "Perl Data Language 2.4.0 was just released;
get it here. This release includes even more powerful array slicing, a complete GIS cartography package, API access to the Gnu Scientific Library, and a host of other goodies. Between PDL and its less-mature siblings Numeric Python and Octave, the established commercial languages'
days appear numbered."
Another open-source statistical language is R. Its commercial cousin is S-Plus.
I use Octave at home to test anything I'm doing for the "Matlab" sections of my homework. And while I think it's a great program and works well, for large computations Matlab is much much faster. There is one routine in particular that takes about 4 hours to run at home and only 15 minutes to run at school. And no, this isn't because my home machine is P-MMX 100 and school has has 3GHz P-4's. The machines are pretty closely matched.
-1: flamebait should really be -1: inciteful
Download it. In the tarball is
PDL-2.4.0/Demos/Cartography_demo.pm
All of these tools address different aspects of numerical computing. A mixture of languages and tools will generally produce the best results.
I've been experimenting with a number of scientific programming packages, ranging from traditional languages like Fortran 95 to new developments like SciPy. Of the "new" approaches, I like SciPy the best, given its support for MPI and ease of linking to traditional languages.
Support for NUMA and SMP architectures is severely lacking in most "free" packages. This may, in some respects, be due to the lack of parallel support on gcc (although there is an effort underway (gomp) to add OpenMP support to gcc).
Parallelism is important to any large-scale numerical application -- and PDL, as yet, does not appear to support SMP, NUMA, or cluster architectures. I know there are attempts at adding parallel support to Perl, but haven't seen much activity with them.
GSL does not implement any parallel algorithms; according to this post by Brian Gough (), GSL is not designed to support parallelism.
All about me