At the end of the day, there is nothing that can be done in Wolfram Mathematica and absolutely cannot be done in other programming environments. For many problems, however, especially those involving symbolic programming, solving a problem in a language such as C or C++ will be eventually equivalent to re-implementing a subset of Mathematica (or other systems for symbolic manipulations) needed to solve the problem. The point is that many things are done in Wolfram Mathematica with less or a lot less effort and time because a lot of both generic and specific functionality is already built in Mathematica. And because it is so general, I expect this statement to be true for almost any field where some computations, prototype or program design and development, simulations etc are used. Mathematica seems to be an ideal tool for the development of toy – models, prototypes, or just ideas. While Mathematica may be also quite useful for validating some ideas or solutions, as well as to power some quite complex technologies also in their final form, my feeling is that it may be most useful as a tool for experimental research (or programming), where the answer (or design) is not known in advance.
For the scientific part of my audience, it is probably easier to argue in favor of Wolfram Mathematica, since the end product in science is usually a solution of a certain problem, and Mathematica serves as a tool of research. Its value here is that it has many built-in functions and commands which allow doing a lot of things quickly.
On the other hand, there are many great programming languages, environments, and tools. Many of them have an added advantage of being free and open source. For the programming and prototype design purposes, one may well question the advantages of using a proprietary software, which also is intrinsically built in a way that does not allow to make an executable directly (it would require to package the entire kernel together with your code and lead to a very large size of an executable. The Mathematica Player technology seems to be a step in this direction).
Here are 10 good reasons to use Wolfram Mathematica:
- Multi-paradigm language: the richness of the language allows picking for any problem a programming paradigm or style which corresponds to it most directly. You spend most of the time thinking about the problem rather than implementation. The very high level of the language means that a lot of work is done for you by the system.
- Interactivity. Wolfram Mathematica is an interpreted language, which allows interactive and incremental program development. The Mathematica front-end adds another layer of interactivity, being able to display various forms of input and output (and this can be controlled programmatically). Yet another layer of interactivity is added by many new features of version 6.
- Programming in the large. The typically small size and high level of abstraction of the code allows a single person to manage substantial projects. There is also built-in support for large projects through the system of packages.
- Built-ins. Availability of thousands of built-in functions makes it possible to do sophisticated analysis very quickly. Extended error message system (each built-in function can issue a lot of error messages on improper inputs) greatly simplifies debugging.
- Genericity, higher-order functions, and tight system integration. The very general principles of Mathematica, its uniform expression structure, generic nature of many built-in functions, and tight integration of all components allows to use all other built-in functions much easier than one would use libraries in other all components allows to use all other built-in functions much easier than one would use libraries in other languages. The Help system is also uniform and it is immediate to learn the functionality of any built-in function that you have never used before.
- Visualizations. Great dynamic and visualization capabilities (especially in version 6).
- Cross-platform. The Wolfram Mathematica code developed in one environment or OS will work in exactly the same way in all others where Mathematica is available.
- Connectivity: the developers keep increasing the number of file formats which Wolfram Mathematica can understand and process. Also, tools like MathLink, J/Link, database connectivity etc. allow one to connect Mathematica to external programs
- Backward compatibility: since version 1 and up to these days developers are careful to maintain a very high level of backward compatibility. This means that one should not worry too much that solutions developed in the current version will need a rewrite to work on the future versions (apart from possible improvements related to an availability of new built-in functions, if one is so inclined).
- Support for parallel and distributed computing.
In addition to this, version 6 front – end contains a built-in mini – IDE (text highlighting which is aware of the syntax of built-in commands, allows to automatically track the scope of variables, etc.; package creating and testing greatly simplified; interactive debugger). These features make version 6 a full-blown development environment-I personally found It much more fun to develop code in it than in the previous versions. Also, there is Eclipse-based Wolfram Workbench IDE for development of larger projects.
Mathematica programming: an advanced introduction, by Leonid Shifrin