Xah Lee wrote:
> Mathematica comes with a thousand (or few thousands) of built in
> functions (and high-quality ones, not just web collection of Joes like
> Perl's CPAN).
That is not my experience:
During my PhD I needed to convolve two "lists" and I found a serious bug
in
Mathematica's ListConvolve function where it was silently destroying its
input (my data!). Had Mathematica been an open source tool I could have
fixed it myself but, instead, I had to explain the problem and solution to
the guys at WRI and wait for a bug fix release to become available and
then
pay for it. Now I can write a convolution in one line of OCaml code that
is
not only correct but is 4x faster than Mathematica's thanks to FFTW.
I also wanted to use Mathematica's Compile function to improve the
performance of a function but discovered that it hung on recursive
functions (!). Mathematica 6 addresses this problem by rejecting all
recursive definitions. Can you imagine if Lisp's EVAL hung on or rejected
recursive functions?!
My PhD was largely on wavelets so I obtained Wolfram Research's own
($595!)
WaveletExplorer add-on only to discover that they deal solely with
discrete
wavelets and completely ignore continuous wavelets. I suggested they
change
the name to DiscreteWaveletExplorer and commercialized my own Mathematica
library as an alternative:
http://www.ffconsultancy.com/products/CWT/?xl
Overall I was a happy Mathematica user and willing to pay £80 for a
student
license at the time but I would definitely not say that its standard
library is higher quality than the next language.
The last useful functionality of Mathematica for me was graphics but Smoke
is orders of magnitude faster, built upon a better language and completely
free:
http://www.ffconsultancy.com/products/smoke_vector_graphics/?xl
> As i mentioned before, for a language to be popular and practically
> useful, a huge number of built-in functionality is one of the main
> contribution.
Mathematica is not really a popular language: it is about as popular as
OCaml or Haskell and nothing like as popular as Java, C++ or even MATLAB.
Also, I needed textbook data structures and algorithms during my PhD and
found that Mathematica not only lacked them but could not be used to
implement them efficiently. Given that an efficient set union is
impossible
for Mathematica users, for example, I would not say that its standard
library is comprehensive even in the context of mathematics, let alone
general-purpose computing.
> Language's features typically talked about by computer
> scientist morons, such as all the details and variations of types,
> inferences, higher-level/first-class function, curry, closure, multi-
> inheritance, dispatch, lazy evaluation, pattern matching, tail
> recursion, closure, call-with-continuation, ... and many other
> jargons, really have _little_ significance to daily practice.
Putting everything into the standard library is only useful if you do not
have a package manager.
For example, Debian users can get an FFT implementation that is much
faster
and more accurate than Mathematica's with:
apt-get install fftw3-dev
> By yourself in your life time you can probably only produce 5
> or so high-quality libraries specific to few problems. You will need a
> team of tens of people, each a expert in particular field, working for
> years, to create anything like the built-in's of Java or Mathematica.)
LAPACK and FFTW cover the needs of 99% of Mathematica users. All you need
is
a language that provides a decent interface to them and there are dozens
of
such languages freely available for Linux.
The only aspect of Mathematica that is far more advanced that anything
else
I've ever seen is its GUI "notebook" interface.
--
Dr Jon D Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/products/?u


|