Putting Perl Back on Top in the Fields of Scientific and Financial Computing
As a bioinformatician and software developer of many years and avid Perl programmer and supporter, one thing I've noticed over the past few years is that Perl has been needlessly losing ground to Python in the major areas of scientific and financial computing, areas where it used to be *the* high-level interpreted language of choice. I am constantly having to correct people on blogs and forums that state incorrect Perl shortcomings when compared to Python or they were shortcomings from many years ago which don't exist anymore in the current language and ecosystem. If they spent two seconds researching Modern Perl and Enlightened Perl they would say WOW look where Perl has come!!!
All of us know there is no absolutely no technical reason for this, Python as a language is not "better" than Perl for any reason, choosing one over the other is simply a matter of personal preference to the style of the language. I program in Python as well and I definitely think that Perl has far more to offer in terms of CPAN and its community.
To illustrate what I've been seeing let's look at the following. In scientific and financial computing, Python has a great set of libraries and toolkits that users commonly use together in their research and work:
- NumPy - N-dimensional array object container for SciPy and tools to integrate C/C++ code
- SciPy - scientific computing libraries for science, mathematics, engineering
- Rpy2 - tightly integrated low-level interface between Python and R for statistical computing
- Matplotlib - 2D plotting library
- IPython - Enhanced interactive Python shell
- Boost.Python - Seamless interoperability between C++ and Python
In Perl we have these same capabilities and tools if not more:
- PDL - The Perl Data Language, which has:
- N-dimensional array objects
- integrated scientific computing libraries for science, mathematics engineering
- integrated 2D plotting libraries via PGPLOT and PLplot
- integrated 3D graphics libraries via OpenGL and TriD
- and much more...
- Statistics::R, Statistics::useR - basic integration between Perl and R for statistical computing
- ExtUtils::XSpp and SWIG - interoperability between C++ and Perl
- Countless other libraries on CPAN for math, science, engineering (just look at Math::*, Statistics::* namespaces for example)
The problem seems to me that simply no one knows about these tools and/or for the average scientist or quant installing/using/integrating them is more difficult than their equivalents in Python. For example, PDL is only well known in the astrophysics community when it is perfectly suited and written for any science, math, engineering work! Compared to Python we don't make it easy enough for newcomers to get going and these are the people that need this help the most. This shouldn't be happening and is bad for the community because the overall goal to keep a language thriving, growing, and dynamic is to get new programmers into that language. When they come to those times in their working life or in school when they have to make a decision as to what they are going to choose that they see Perl has an equal if not better platform to offer them!
I think we really need to:
- Communicate to the public in a clear, exciting, and attractive manner what we have to offer (why are there very few if not zero Perl books in the pipeline? Look at Python they have tons... why?)
- Make our tools and libraries much easier to install and integrate
The Python community seems to package their tools together, make them easier to install and use, and communicate that they exist to the public better which is a shame because again I believe Perl has so much more to offer than Python in terms of CPAN and its community.
I would really appreciate any input, feedback, criticism anyone has... I really care about Perl and want the public to see all it has to offer!