I'd like to introduce Processing to those who have not heard of it yet. It is a programming environment and language which shields you from the "annoying little details" of programming.
You can just jump in with little or no programming experience and have a GUI, 3D or a network application up and running in no time.
The Arduino development environment is based on the Processing environment. Which is why I thought it would be a good idea to check out Processing.. and I love it :)
It's probably the best way to learn programming... then again, you will probably end up hating all other development environments if you are used to the ease of Processing ;)