Below is some excerpts from an e-mail I sent a colleague:
As you finish up your dissertation and look for the tools capable of providing the manipulation power and ease of use you need you asked me for recommendations. I'll provide them with reasoning and some of this reasoning could be used to justify the future tool sets employed by the 14 WS. Mind you these are my opinions but are formed by experience with all the tools discussed. Main general use programming language: 1. Python - no surprise here as I'm now the squadron's python fan boy. However, I have used C, C++ and Java at various points and recommend Python for several reasons. Stick with version 2.7 for now as all the libraries you need are available and heavily tested on this version. See me if you need some pointers on making your code portable to python 3. With the addition of libraries; numpy, scipy and matplotlib this language may do everything you need. a. Ease of use. Even a non-programmer can grasp how to program Python easily. This is not saying they can program a complex several thousand line program overnight but within a week can be effective enough to accomplish real work. b. Clean syntax. This goes with ease of use but also forces format rules without the flame wars and other issues associated with languages requiring more syntax, i.e. Java and C++. Makes maintenance easier and with just a dash of comments can make a re-work a year later much more enjoyable. c. Large Library Set. Python's batteries included philosophy ensures common tasks, i.e. reading files, database access and networking protocols are built-in and relatively easy to use. d. Rapid code-execute-debug cycle. As a dynamically typed interpreted language Python allows you to code, run, debug, run again in a very tight cycle. This increases productivity, a lot. 2. C/C++ -- Faster than Java and closer to the machine. If a compiled language becomes necessary I recommend these over Java for the task you are completing. Doing numerical functions in Java is possible and it is possible to do it quickly. However, it takes a deeper knowledge of the language than for C or C++ and in my opinion is cumbersome at best. Java was not designed to be a numerical language and the JVM can be a burden when trying to work on a numerically intensive task. Python can easily call C and C++ code and thus you can easily write your slowest pieces of Python as a C function if you really need the speed. There is FORTRAN, it was specifically designed for numerical computing. 3. Java - If you have to, use Java. It is safer for inexperienced programmers due to the lack of pointers. It also works very well for large complex projects and has many libraries for writing enterprise capable web applications. Java is also extremely good for embedded systems but given the description of you tasks you are not doing either. Statistical Language: 1. R - Open Source and free. Works well with python, do a google search for rpy2. Is gaining ground on SAS but is not without its own sets of issues. Below are some reviews comparing R and SAS. R works well on Windows 7 Pro 64 bit, I have it installed on my laptop. Let me know if you want a demo. -- http://www.sasanalysis.com/2011/01/why-sas-is-more-useful-than-r.html -- http://www.learnanalytics.in/blog/?p=9 -- http://www.information-management.com/blogs/analytics_predictive_BI_big_data _SAS_R-10021036-1.html Installing Rattle and R: (Rattle is a data-mining GUI, you can use R without coding R) -- http://www.learnanalytics.in/blog/?cat=4 As an aside: look up TeX and LaTeX on google. This is an extremely powerful typesetting tool required by some of the current math and scientific journals. As a PhD/Scientist you should at least know what it is, even if Word is your tool of choice.
These were just my thoughts and opinions to a non-computer science colleague, if there is a better way to frame the discussion or if you have any disagreements with the above let me know.