Perl was a victim of its own success. It is such a "hacker's delight" that many, many people discovered they could solve pretty hard problems without any background, just by teaching themselves Perl syntax. The problems came because Perl, more than any other language I've encountered, lets you write horrifically ugly code if you choose. Bad Perl code is worse than bad assembler code, it's worse than bad C, it's worse than INTERCAL. Good Perl code can indeed be a thing of beauty.
Python seems to be surging primarily because it does enforce some basic style and design rules -- so it's an easy language to teach. Pascal had a similar run in the 1980s, for similar reasons (compared to C).
For scientific computing: try Perl/PDL. It doesn't have as many specialized niche applications as Python, but it's far more general and powerful than Scipy/Numpy. Among other things, you can use Inline to write hotspots in other languages, right there in the middle of your Perl script. There's also a "Perldlpp" metalanguage that lets you write vector operators very concisely, and that compiles to C.
Padre works great for Perl.
I do a heck of a lot of scientific analysis work in Perl/PDL, which predates Scipy and is still in many ways more powerful and elegant. It has a very nice built-in shell: though it is not as full featured as Padre, it does have support for multiline commands, line retrieval, and many esoterica that make life easier for that specific application.
My workflow consists of producing a script (in emacs) and pasting lines into perldl (the included shell that comes with PDL), or vice versa. At the end of a "chapter" of processing I have a script that I can run to reproduce the result. (Edit: the perldl shell also logs your work, so you can save your command history to a script -- but I prefer the control that text editor work offers...)
Dare I suggest Perl 6 and Rakudo? ;P Certainly one of the bigger and more interesting projects, vibrant is debatable since most people around here are all doom and gloom. Plenty to do outside of the compiler too like writing tutorials or coming up with nice tools. Given native typed arrays are being worked on ATM Perl 6 integration with Jupyter might be fun, an equally good project to do with Perl 5 + PDL too. http://jupyter.org http://pdl.perl.org
If there's a class on the Fourier Transform, take it!
Glad to hear about the writing.
C++ is a good course to take. Most folks I know use (God help them) IDL, which is Considered Harmful for many reasons and has probably set the entire scientific enterprise back several years. Numeric/Scientific Python is serviceable and universal. My go-to language is Perl Data Language, which is sort-of a modern day APL: mind-blowingly powerful and general-purpose, but confined to a small community of devotees. C and FORTRAN are also good to know. The main things are to make sure you (A) have at least one class in at least one compiled language (FORTRAN, C, C++ are the big three for science) so you know how to organize projects and do regression testing, and (B) to participate in at least one large open-source project so you learn how to work with teams and avoid breaking things. Do not learn IDL: if you already know how to program well, it will be a source of endless frustration; and if you don't, it will teach you bad habits (and still be a source of endless frustration).
Would be cool if you'd add a rotate function, that shifts vectors.
When I saw the Conway's game of life one liner in APL, I wanted to reimplement it and see how good I could golf it in C, but failed to find a library that provides it out-of-the-box.
I eventually went with Perl/PDL.
EDIT: typo
perl really shines for me, especially as an amateur linguist. However, I am a sysadmin/dev so take that as it is. It's much more similar to a natural language. For complex math/scientific stuff pdl (think numpy for perl) is great: http://pdl.perl.org/
You haven't really gotten fluent in Perl until you start using map(). The map pattern is so useful that even the all-imperative-all-the-time Python community adopted it (as list completions).
If you are doing numerical processing, Perl/PDL generalizes map() to the next level via multidimensional vector processing of structured arrays. The rabbit hole goes as deep as you want it to.
> This is perl 5, version 18, subversion 2 (v5.18.2) built for darwin-thread-multi-2level (with 2 registered patches, see perl -V for more detail)
That looks like the system perl (included with Mac OS). You should make sure that you're using the the perl you installed, as any modules that you install with the system perl will likely go poof with your next OS upgrade.
If, for some reason, ActiveState doesn't work out for you, I recommend using perlbrew to install your own copy of perl. (Note: this requires installing a compiler, e.g., by installing the command line tools for Xcode.)
> like R or SPSS
You may want to look at PDL, which is designed for similar tasks. There's even a quick start tutorial that doesn't assume prior knowledge of perl.
Perl Data Language. I write little scripts in it every day to manipulate everything from solar data from nasa spcecraft, to web log printouts. It is not mac-only but runs very nicely under OSX.
Gotcha. Yah, I know Apple's doing some sort of cloud development, but I've been doing this embarrassingly long and I'm still pretty effin' thrilled with what a single MacBook Pro can do these days. Using it as a generic 4-processor crunching platform is a waste for huge jobs -- but jobs that were huge just a decade ago are "real time" (which of course just means: really fast) now. And, of course, it's nice to have things like PDL that are so cross-platform I can prototype on the laptop and then migrate over to my big iron.
Incidentally, most of this result was produced inside my MacBook Pro (the science stuff -- starts at 1:30). No "cloud" needed.
So - call me reactionary, but I just haven't felt the need to migrate out of local computers to do local computing.