How do I start learning programming?  What is the best language to learn first?
Based on my experience teaching programming over the last 6+ years to approximately 500 students each year, either Scratch or Logo is a great starting place. Scratch has a visual drag and drop interface and is much like putting Lego blocks together. It also provides a rich set of graphics and sounds to create projects like games quickly.  Here is a simple introduction to Scratch that creates a pattern using programming.  The new Scratch 2.0 works directly in the browser, no downloads needed. It has many cool new features including 'make your own blocks', video motion sensing, cloning, and cloud variables. Some of my favorite resources for Scratch are here

My students also enjoyed the experience of typing in code and the flexibility of Logo. We used ACSLogo in the classroom, this is a good Logo version for the Mac. Other versions of Logo are available on the Logo Foundations site  
One great site to learn Logo without downloading software is

What do I do after Scratch and Logo? 
There are several languages that are a possible next step after using Scratch or Logo.
Currently there is much excitement and venture capital being spent in teaching people to program. 

One good language to learn is Processing. It is the best example of combining technology and art. The programs, called 'sketches' can be used to create some very cool visual effects and more. My students have learned Processing using on the Khan Academy CS platform. See class demos and more on my Processing page. 

Python is an open source language and is very popular in education. I am using it currently in my 7/8 grade elective and recommend it

There are several free resources to learn Python. Here are some possibilities (need to update this...!) 

Online, Interactive Tutorials for Python

Free ebook (designed for kids) for Python

“Invent Your Own Computer Games with Python”

Also available as a print book from Amazon

(Update this list!)