Udupa, people have suggested Python as a flexible language that
will help
Try it. Try the various other recommendations as well, as long as
they aren't say C or perl you should be able to coast along in them
for long enough to decide whether you like the language or not.
I'll second both of these:
for the latter, it helps to understand that programming is full of
holy wars on the my brother and I against my cousin principle.
(this is not unique to technology fields: I note that among riders,
there is often strong antipathy between those who wear cowboy hats
and those who don't, and among those who don't those whose tack is
brown vs those whose tack is black, etc. etc., when to the remaining
98% of the population they are all lumped together as doing
something with horses). Taking the 98% view, programming in any
language involves working at a level of precision which is unfamiliar
to nearly all neophytes, and unpalatable to most.
I really hate this dd machine
I think I'm going to sell it
it never does what I want
but only what I tell it
once you've written a few programs, and have decided that you do, in
fact, enjoy this variety of riddle (doing something with
programming) enough to actually spend large amounts of time doing it
yourself, then it's worth looking around for languages which suit
your tastes, inclinations, and aspirations.
for the former, I have found Python to be very flexible: on the
conceptual side, one can model most, if not all, of the ideas
presented in http://www.willamette.edu/~fruehr/haskell/evolution.html
in Python, on the shoot-yourself-in-the-foot-several-million-times-
per-second side, there are modules which allow you to JIT raw machine
code to your heart's content, and on the a-quick-kludge-to-do-X side,
Python has a large user base and a wide variety of packages for the
times when one has no aspirations beyond being a glorified plumber.
(see also http://yosefk.com/blog/the-cardinal-programming-jokes.html
for more literal takes on this last metaphor)
That last point is why tastes, inclinations, and aspirations are so
important. Someone who is paid to code will choose environments
which minimize time to market (or, even worse, process variation!) in
their line of business. As a hobby coder, you have the luxury of
looking for environments where almost all the stuff you don't like
doing is provided, and almost all of what you'd like to do is
feasible. After all, the revealed preferences of most visitors to
alpine resorts is that they take lifts to the tops of the runs, but
descend themselves.
-Dave
(as for those people who ski one or two runs, and sit around in the
restaurant the rest of the day: their programming equivalents are
found online, providing most of the heat in our holy wars)