If you want to learn to program, it doesn't matter too much which language you start with, because you'll end up learning multiple languages later on anyway, so even if you have to "throw away" your knowledge of the first language you learn, you still learn some of the foundational of programming which is shared between most languages.
It is far more important that whatever language you choose, you stick with it for multiple years (think 5 years - plan for the long haul) before changing to a new language.
Some common language choices are: C#, Java, C++, Python
There are hundreds of languages, but about 10-15 "commonly used" languages. Once you learn one (which takes a year to learn the basics of, and multiple years to really comprehend), it's easy to learn others (in a matter of months).
If you are wanting to use the Unity Engine, the Unity Engine uses C# and their own scripting language called UnityScript.
I would suggest not starting with C++ because it's one of the hardest languages - but I started with C++ myself, and am glad I did. However, you have to press through the difficulty through a little self-discipline, because it does you zero good if you start to learn something and then don't follow through.
I typically suggest Python as a great first programming language - it's really powerful, really simplified (in a good way), and has alot of available resources to help you get started. It was also used successfully in several successful commercial games (though to be honest, most large games mix multiple languages together (usually two - the engine language and the scripting language)).
I suggest picking up two books on whatever language you choose:
The first would be a nice thick comprehensive book that walks you through chapter by chapter. This would be a book dedicated to learning the language itself, so don't get one that has the word "game" or "videogame" in it. Don't get something that says, "Game Development with Python" or something of that nature. Get one that is focused on Python/C++/C# itself, without the game-related focus.
The second book would be a bit smaller, more "fun" sounding, and a lighter read. Less comprehensive, it'd be something you can read on the couch instead of at a computer desk, and you can go look up something in the second book if you didn't understand the author's wording of the same concept in the first book. The second book can involve games, if you want, but it doesn't need to.
The primary book you get should definitely be written within the last three years (2010 or later).
Note: If you go with C++, try to get a book written in 2012, since C++ just had a major language update in 2011 (called C++11), and older books would use outdated knowledge.
Eventually, you'll get more advanced books - but don't buy them now, wait until you program for two years before deciding what the weak areas of your knowledge are, then buy or check out of the library books focused on those spots.
I feel a good modern "primary" book and a second fun "couch" book are all you need, and the only expenses that you face. Any gaps in coverage will be supplemented by online tutorials, articles, and discussion forums.
When you need help, for whatever language, learn to try to solve it yourself first*, research it second (in the documentations and in your books), google third, then come here (GameDev.net) and Ask a Smart Question. We're standing by to help while we procrastinate on our own programming projects.
*And after trying it yourself, even if you succeed, look up if there's a more proper way to learn good coding style.
For the first two years of programming, hang around here. Don't try to 'advance'* too soon to 'General Programming' or 'Game Programming', stick in For Beginners, and you'll learn alot - there's no shame in posting in the For Beginners forum, and I start threads to ask questions in there occasionally even after seven years of programming. Read threads that you didn't start, and learn from it, even if it's discussing a different language. Ask questions. Then ask followup questions, until you actually understand or unless you feel you got into a programming topic that is too much too soon for your current level.
*It's not advancement - the For Beginners forum is actually the "For basic questions" forum, that even technical users ask questions in, for example when a 20-year programmer is learning a new language. It's the difficulty of the question being asked, not the skill level of the asker, that decides what questions should go in what forum. General Programming and Game Programming are for technical discussions of advanced programming topics, regardless of the asker's skill level.
Welcome to GameDev, and I wish you well on your journey! Programming can be very frustrating one month, and very very enjoyable and rewarding the next - but it took me nine months of programming before I realized that I actually enjoyed programming for itself, and that it was more than just a means to getting to the fun parts of making a game.