What is the easiest way to write technical codes?

Computationally intensive codes have traditionally been developed in Fortran or C for the supposed speed improvements. But what customers really want is enhanced productivity, not just for the machine, but for the programmer as well. For this reason, domain-specific languages have really taken off in the technical area, and indeed systems like Excel and even Visual Basic are being used when computer speed isn’t absolutely essentially. More recently, improvements in algorithms as well as compiler analysis have led to mathematical environments that are actually faster than most C codes developed by users who haven’t been specially trained in software optimization.

The most popular environment today is MATLAB. It performs numerical computations in an imperative language and has the ability to make plottings for visualizations. An optional Distributed Computing Toolbox will perform bulk synchronous operations on MATLAB code. The independent Star-P system has similar functionality in that a user sitting at his desktop can execute his MATLAB code on a cluster. All in all, this kind of environment usually is better suited for customers than simply coding in C and MPI.

A rival product to MATLAB is Mathematica, which provides symbolic computing in a functional language. It has many of the same features of MATLAB, including visualization tools and parallel computing.

Other commercial computing environments include Maple and Mathcad, which feature their own programming style. The open source Octave is compatible with MATLAB’s language.

As for more traditional compiled languages, Fortress, Chapel, and X10 are all new languages that are currently being developed under a DARPA-sponsored project aimed at providing better productivity tools for scientists and engineers. They all plan to offer mathematical constructs within the language and feature methods of parallelization, such as the partitioned global address space.

While the sequential mathematical tools listed here are quite mature, all of the parallel computing extensions are fairly new, and some have yet to be fully released. They do appear to represent a better way of developing technical codes, though market reaction remains to be seen.