Starting as a geoprogramologist
A friend of mine recently asked me this question over a message on LinkedIn: "Ted, where would you start in the world of programming if you were a non-programmer? Geared towards languages that are applied in petroleum geoscience"
Instead of answering in a private message, I'll go ahead and write a post about my experience in this field, which has been consuming me for the last 3 years, and particularly for the last 4 months. First, I don't think you should think about programming languages as "good" or "geared" for a particular discipline. Instead, choose languages based on your application of the 3 steps in making data useful; load, manipulate, display. For those of you with more experience the acronym ETL may come to mind, but I would argue that it only applies to what I am calling here "load". Manipulate could also be referred to as interpret, and display as communicate. And, of course, the processes is iterative.
So how does this help in choosing a language? If you have a good idea of which parts of that process you will have to focus the most on, then you can choose a language with a forte there. For example, if you are dealing with loading large datasets (think CSVs in the GBs) then you will need a database. In order to use a database, you will need a language that has good communication with a database and setting up queries, such as Jquery's AJAX or PHP. Your main goal might be to transport data from a database to a graphic, without many calculations in-between, and make it easy to interact with the data in the end product. If, on the other hand, you are going to load a smaller dataset once and then play around with creating additional data and models based on those points, you will want something that is much more robust in storing and manipulating variables, editing processes, etc.
So back to the original question; what languages to learn for geoscience. I have focused most of my time and energy in loading and displaying US Onshore data to see trends on maps and graphs. I found that web languages (Javascript/HTML/CSS) give me a lot of flexibility in displaying and interpreting data because they are made for beautiful-looking GUIs. For the calculations I do need to make I can use the math inherent in web languages (including PHP for the server), even though these languages are not considered "scientific". I have found that most other scientists prefer Python or R or even Matlab. I think that's because their focus is mostly on modeling their existing points than in creating GUIs that let people interact with the data (in another post I may make my argument in favor of analytical GUIs).
I'll add one more note: your development environment is very, very important. Most programming in learned through trial and error, so being able to test different code and seeing what is created is essential to learning. Again, most other scientists learned one of the analytical languages in school, so they feel comfortable in those environments. I would suggest, though, testing out the console feature of Chrome using console.log('test') in javascript. It brings the 'aha!' moment most people need to delve into web programming. Also, for those of you that haven't found it yet, check out http://beakernotebook.com/ . It is an environment that let's you code in any language you want. I hope this helped Steve with his question, please feel free to comment below!
The world needs more "geoprogramologists"!
Python and Matlab allow you to take full advatage of statistics, time-series analysis, data analytics, and -to some extent- visualization toolboxes to gain insight from data. But more importantly, they allow you to (mathematically) model, not just visualize. Additionally, now Matlab has a seamless connection to Petrel, which allows you to build upon those data types. https://www.mathworks.com/campaigns/products/offer/matlab_interface_for_petrel.html