Imsdal writes "I used to be a reasonably good programmer, but life has taken me in a different direction, and my skills are now quite out of date. I want to learn a good, modern language with a good modern IDE. I only have the time and inclination to learn one. Which should I choose?
Here is more background: I learnt programming 25+ years ago. I started with BASIC and moved to Z80 assembler, Pascal and FORTRAN. In 89-94 I got a M.Sc. in Computer Science with a heavily theoretical focus, so at that time I knew about a dozen languages reasonably well (LISP in several flavors, ML, SQL, PROLOG, C, ADA and a bunch of others. Note the absence of Java and C++, though). I then started working, and spent most of my time working with SQL. I have since moved to "general management", so apart from the occasional spell of SQL and VBA, I haven't really been programming much for almost ten years (and most of you will of course say that VBA isn't programming at all).
Now I want to "get back into the game", but I have found that programming today isn't so much learning syntax and general ideas (which I can still do quickly), but learning and IDE and/or a fairly huge library of supporting functions. Thus, it seems like a bigger project to learn a new environment these days, and I want to make sure I go down the right path.
So, what do I actually want to do with my newly acquired skill set? Let's start with what I don't want to do: * I don't want to be a programmer as a job, so there doesn't have to be a market for whatever language/environment you recommend. * I wont write applications that anyone else will use, so robustness/error handling etc is nice but not a critical factor. * The stuff I write doesn't have to be web applications. It might be, but stand alone stuff that just runs on my computer is fine.
And here are a few examples of stuff I want to actually achieve: * An application that reads stuff from web pages, analyzes them and stores the result in a DB, for instance:
— Sales data from amazon.com
— Play by play data from Major League Baseball games * Simulations of games, for example
— Algorithms that play Othello or Mastermind
— Simulations of poker hands * Solutions to projecteuler.net problems.
The first example requires the easy ability to get a web page and do some pretty basic string manipulation to it (but easy hookups to lex and yacc or variants is a huge advantage), and easy writing to a DB. (I'll do the actual processing of the data from the DB in SQL and won't need support there.)
The second example shouldn't exclude any particular modern language, I would guess.
The third example requires a very good and fast bignum implementation. This is mandatory, not optional.
I have computers running Ubuntu and XP (sorry, no Mac), so whatever you suggest should run on either of those. It's not important (and not even an advantage, really) that it runs on both. Since this is for my own enjoyment and non-professional, the environment should be free or very cheap. It strictly doesn't have to be open source, but maybe that's an advantage.
So, in conclusion, I'm looking for a computer language with a good environment that allows me to get started quickly, is versatile in what I can do in it, has a good bignum implementation and, hopefully, is fun. What would you recommend and why?"