As a quote on the Linux Kernel Mailing List said a few days ago:
"A weak coder becomes a strong coder by reading code and writing code - every day, for fun."
I would have to say that "porting" is possibly the worst place to start programming, unless the program is incredibly simple and you have full source code, and fully compatible (ideally identical) compilers and libraries on both "ends" of the port (i.e. your existing platform and the "target" platform). The only thing worse would probably be device driver development or programming your own operating system. The things that can go wrong in even quite a simple port can be a nightmare, especially between disparate platforms. Plus, the worst thing that you can do is to be asked to analyse an unfamiliar coder's code style... it can add hours onto a porting project even for a skilled programmer.
Having said that, *programming* itself is quite simple. And you don't really learn much by reading about it - ten times more is learned by just doing it. You'll find that you can follow any tutorial on any programming language with no problems at all so long as you are in the mood, but if you then sit at a computer, you'll have no idea where to start or why things don't work. You need to follow along with the tutorial, compiling the source yourself, changing the examples instead of copying-by-rote and seeing what happens etc.
You can learn any language, but you just have to do it a lot for your own entertainment. You will inevitably start off with something ridiculous like Hello World but perseverance and good libraries of existing code can see you writing decent games (and other programs) in no time at all. SDL is great for this - a few lines of copy/pasted code and you get MP3's playing. A few more and you get joystick input. A few more and you're throwing PNG sprites around the screen.
Programming is like learning to type fast - you don't so much "learn" it as subconsciously acquire a memory of how it works the more you do it. However, I very much doubt that anybody could start programming without at least a basic tutorial. Ideally you want a good tutorial which targets to a language/compiler/library set that you can understand, can get and can install. There's nothing worse than using old tutorials which document all sorts of things which are no longer relevant (I have a still-in-print C++ book that talks about running DOS interrupts through inline assembly!), which aren't cross-compiler compatible or one which targets expensive compilers/platforms (Visual C++, I'm looking at you!). Don't throw yourself into a CygWin installation just to get gcc working on Windows - you're piling problems on top of problems.
I once started teaching my wife (who has zero computer knowledge but a keen mind) how to program. You can get through some things amazingly quickly if the person is willing to learn. She keeps bugging me about showing her more sometime but I'm afraid if I do that, she'll realise exactly why I don't hear anything she says while I'm in "coding mode" and we'd end up spending the evenings both tapping away on computers until the small hours...
If you want to be a programmer, you'll need a language tutorial to follow through so you understand what a programming language is and does and the basic syntax and most probably a list of functions... SDL games and the SDL library documentation in your chosen programming language is usually a good place to start. Then pick a small Open Source game at random, written in the same language/libraries that you like, read through the major portions of the code (you won't understand 50% of it at all, most probably) and then start using the code to write your own similar game.
P.S. I started out with BASIC back on the Spectrum, hence I regard BASIC as the epitome of beginners languages (while detesting it for anything serious) and like to start people off using BASIC to at least learn what "programming" means. For a while, Visual BASIC was simple enough for the real beginner to just pick up and use - that's no longer the case and the nearest "nice" modern, free BASIC I can find is Gambas which is Linux-only - and now BASIC is regarded (rather unfairly) as the hell-hole of programming languages. Ignore such nonsense and just pick a language that you can "read" easily. If that's C or Python or Java or BASIC or FORTRAN, it doesn't matter. You can worry about the language's limitations when you start hitting them.