Originally Posted by Phyxion
First start with some VERY basic examples. Good languages to start with are C# and maybe Java, however I do suggest C#. After going through some more difficult C# you can take a look at C++. There are some pretty good tutorials available on how to start.
I would suggest against C#. C++, with all its shortcomings is a widely used, cross platform, and standard language. C# is not so diffused outside the Microsoft/.NET environments (Mono tries to replicate most of the functionalities and the environment, but only up to .NET 2.0, as far as I know, although the implementation of the C# standard is complete).
To start, either go with Java and/or C++ if you want to begin with a OO language, or go with (clean) C.
C has the advantage of not letting any wrongdoing go unnoticed. You have to be very
careful with memory allocation/deallocation (think explicit garbage collection), otherwise you risk ending up with segfaults really quickly. You have to thoroughly understand pointers and how things are stored in memory, which is always a good thing. And when you're ready, you can delve in more difficult to master techniques, like e.g. pointer arithmetic.
If you want to start with C, look for the abundant online tutorials and the K&R book.
For C++, the Stroustup can be a little hard in some points, but it's still one of the best books out there.