I want to learn programming in some way, with what should I start learning? (I'm a Mac)
A lot of people will recommend taking classes, but I am self-taught so I recommend teaching yourself (it's much cheaper and more effective because you have to learn to work through problems on your own). On a Windows machine, I would start with Visual Basic, but on a non-Windows machine, I would start with Python.
1) Begin by working through some tutorials (there are tons of them all over the internet for free at various difficulty levels). If one is too hard, bookmark to it, and keep looking (then come back to it when you have improved). It might seem tedious, but you're going to want to do a LOT of tutorials to get the feel for "thinking like a programmer". It doesn't come naturally - takes lots of practice.
2) Once you are very comfortable doing the tutorials, come up with several of your own projects (start simple and work your way to more difficult things). This will solidify what you learned by copying other peoples code, and give you the skill of being able to turn new ideas into code. Join several programming forms and ask for help when you get stumped. If you find that you are struggling particular concepts, be sure to spend extra time practicing those. Do this until you feel comfortable "thinking like a programmer".
3) Next, begin working through Java tutorials. In my opinion, Java is the most user-friendly object-oriented programming language out there. Its basic similarity to C/C++ is also a huge bonus, because those languages are your ultimate goal. As you did earlier, start with simple and work your way up to the difficult concepts. Spend some extra time on Threads and synchronization (it's easier to learn this in Java than in C/C++).
4) Come up with several of your own Java projects. Do this until you feel comfortable with the "object oriented" concept to programming. If you have a particular area of programming you want to head toward (such as game development), then give yourself at least one big project related to that subject (just to get your mind thinking in the right direction, and it will be a lot more fun than doing random irrelevant projects)
5) Next, begin working through C++ tutorials. The main thing you will want to focus on here is using pointers, structs, and classes (these are quite different than Java, and will probably take some time to get used to). Also spend extra time learning how to debug C++.
6) Finally, begin working though some C tutorials. Most large native projects include both C and C++ source code, so although they are very similar, understanding the differences is important (spending a little extra time on this right up front will save you a lot of headache later).
7) Now you are ready to work toward your original goal (it will probably be several months to get to this point, but well worth it). If your goal was a game, then start by learning the basic components you will need (such as audio, 2D graphics, 3D, and so on). Give yourself small projects to learn these concepts, and when you are ready, jump right into your main project. Expect to spend at least a year on a worthwhile project, especially if you are still new to that particular subject.