Ultimately, language matters less, and skill with computer science concepts that transcend specific languages matters more. So for picking a first language, I'd recommend focusing on learning curves involved, and less on final utility. Once you understand programming, picking up a new language isn't too hard. But even if you're using "the perfect" language, if you don't have a healthy understanding of good software engineering practices, the project is going to become more difficult than it should be.
So I'd straight-up say "no" to C++ as a first language, even though it is possibly my favorite. It has way too many gotcha's and unintuitive crap going on, and requires significantly more hand-holding and a deeper understanding of what's going on under the hood on part of the programmer.
Scripting languages like Python or Lua tend to be good for learning in some respects; they tend to be much more forgiving and intuitive, and require far less start-up code just to get a simple program running.
More "professional" languages like C# or Java that have very good tools (such as Visual Studio or Eclipse, respectively) with extensive feature sets written around them can be better in other respects, however. I personally believe that it is absolutely critical to have and become very familiar with a high-quality debugger when learning to program. It provides an immediate and very concrete view into what the computer is doing. Without a good debugger, a programmer depends much more heavily on simulating the code in their mind, so to speak, to get an idea for what their code should be doing, and why it seems to be doing something else (which is inevitable). And this is often a very hard task to do for someone who is just beginning to program.
Because of the debugger concern, my vote would be for C# or Java, because I'm familiar with the main debuggers available for each, and I approve. If you go for a different language, at least search out information on what debuggers are available, and then be very hesitant if you can't find one that people consider to be a solid debugger.