"Use your friends [...] Keep it simple. [...] Play. [...] Given these criteria, my recommendations for a first programming language would be Python or Scheme. But your circumstances may vary, and there are other good choices. If your age is a single-digit, you might prefer Alice or Squeak (older learners might also enjoy these). The important thing is that you choose and get started."
It would be interesting to try to find scientifically optimal ways of doing study iteration, or approaches to interpreting the complete (experiment_rev, results)-list from another researcher...
I'd recommend doing a startup and/or side project involving interesting functions of massive datasets.
Technology-wise, at least consider...
- learning SML or OCaml or Erlang
- learning Python
- going deeper into Python. It's a fantastic way to express oneself. It beautifully offers (generators, coroutines, multithreading, subprocesses, and networking) for piping and distributing your computation, a flexible blend of functional and imperative, and its syntax is the most conducive to elegance, simplicity, and rereadability of anything I've tried.
...then building the core algorithms in C/C++ with SWIG wrappers, the tip of the iceberg with Django, and everything else in pure Python.
A must-read: "Generator Tricks For Systems Programmers"
Though I like what Norvig said in http://norvig.com/21-days.html
"Use your friends [...] Keep it simple. [...] Play. [...] Given these criteria, my recommendations for a first programming language would be Python or Scheme. But your circumstances may vary, and there are other good choices. If your age is a single-digit, you might prefer Alice or Squeak (older learners might also enjoy these). The important thing is that you choose and get started."