Assuming you're running Windows, Microsoft now offers Express versions of their VisualStudio products. I suggest you take a look at those and download and start with one that you feel comfortable with. In my opinion, you should probably start with C# since that's a little easier than C++, but just as powerful and there are a lot of great tutorials and sample code out on the net. Plus, the express versions of VisualStudio are partially designed for learning/introduction to the application and programming in general, so they come with a lot of "getting started" documentation.
Once you have done a few tutorials, join an open source project in an area that you're interested in, or just start writing small applications for your own use. Practice, practice practice :)
You can find the VisualStudio express downloads here, along with a lot of other good resources.
In my opinion, the best way to learn coding on your own is to make something you actually want to use. I find it is easy to lose your momentum when your only motivation is trying to learn something.
Find something you're interested in making - like a game, a website, a browser extension, IRC bot, whatever - and from there, do research on how to make what you want.
Taking a class is also good, if your school offers them.
It's really wise to take a class if you're ready to learn programming from scratch.
You're always going to be self-learning when you're a programmer, but it's easy to develop some bad habits if you don't have the fundamentals presented to you.
Some people will say to learn C first, some say learn a scripting language first. My advice is get in the habit of learning whatever tool is right for the situation, and get in the habit of not being stuck on one language or solution.
If your high school doesn't have a programming class, then ask your mom (or whoever) to help you research community college classes you could take.
Last... make sure you do some other things. Computer entertainment + programming can suck up your whole life. Learn how to do some other things too so you can live a well-rounded life.
Get one of the HeadFirst Series books. They are really fun to read and you ll be surprised at how much you learn.
Have a look at Processing
It's very cool, was designed as a learning-friendly environment but is capable of producing Hollywood production level graphics effects (and has been). Very easy to get going in, loads of tutorials and example as well as advanced projects to inspire. It also uses Java syntax (so everything you learn will be useful when you do CSS later). One of my main ongoing regrets is I don't have as much time to play around with it myself as I would like.
Processing is an open source
programming language and environment
for people who want to program images,
animation, and interactions. It is
used by students, artists, designers,
researchers, and hobbyists for
learning, prototyping, and production.
It is created to teach fundamentals of
computer programming within a visual
context and to serve as a software
sketchbook and professional production
tool. Processing is an alternative to
proprietary software tools in the same
Compared to every other suggestion you'll see Processing is your best chance of both teaching yourself good coding skills and allowing your imagination a chance to produce something that could turn heads - it delivers an amazing amount of bang for buck and you can display your labours online. Take a look though the examples - there are some amazingly cool, imaginative, programs there.
(assuming you are running windows)
Pick a language
- I'ld go for Microsoft.NET C#.
- You can choose to make a console (command line), web or windows application
- The free IDE (basically a fancy editor) is awesome. http://www.microsoft.com/Express/
- You can choose VB.NET as well, some people find it easier to start there.
- It's VERY easy to interact with databases (Access or SQL Server).
- You won't spend hours installing and configuring web servers or learning compiler command switches
Pick a book
- Try something like Sams Teach Yourself ASP.NET 3.5 in 24 Hours or Learning C# to get you up to speed
- If you cannot afford a book, check out your local library.
- Spend a couple weeks working through the book and then you can start thinking about your own project.
An alternate approach to the "try visual .net" comments here, there is a cross-platform scheme system and associated book that has been targeted particularly at people like you with some success. The book How To Design Progams is available free on the web and printed also, and the Dr. Scheme system is open source.
The upside of this sort of approach is that it is a nice clean small design with some powerful tools to get you started, plus a vastly better textual approach that your typical "teach yourself X in Y days" technical book.
The downside is that you'll be starting off in a language (scheme) that while very nicely designed is not mainstream, and has a different approach that the c- family and related languages that dominate industry programming today. So while you'll be learning with a much nicer language (pedagogically speaking) you won't have so many sources of info.
If you follow this track you'll probably become a better programmer faster, but you'll be a bit isolated. When you do learn a more mainstream language or two, you won't make many of the same newbie mistakes as most.
I guess it depends a lot what your long and short-term goals are.
Why the lucky stiff created a platform to teach kids ruby:
I think it's the best kid-friendly programming tutorial I've ever come across.
A core understanding in the foundations of good solid programming you will be able to use and take into other languages and you will find the curve less steep as you progress.
I would say above all though that I cannot recommend a career in programming highly enough.
That is only my opinion though,.
A few years ago, I'd have said C++ too, but now I think C#, particularly given the vast range of free training material on the net.
Visual Studio 2008 Express Editions
It'll give you a good understanding of Object Orientation, developing in a UI and Intellisense will help.
I found that reading programs others have written really helped me learn how to write my own code.
start with c, then on to c++
if you master these 2, you can adjust yourself to any programming concept / language, be it java, be it c#
note by master i do not mean you should be knowing by heart each and every syntax, method, etc available in these languages, but i mean master the concepts of programming, like OOPS, inheritance, patterns, messaging, memory management, etc
basically, if your foundations are strong, they would go a long way into becoming an excellent programmer versus a good programmer
also keep yourself subscribed to rss of good sites like stack overflow :-) keep asking programming questions, read a lot of blogs, books.
Check out this related SO question. It has a ton of links for beginning programmers. Some will, no doubt, provide you with ample info on languages and what you can do with them.
I like C/C++/C#, but that's me. You can't go wrong by learning them, but there is a world of other things out there.
Whichever language you pick -- C is the best to start with for a serious aspiring programmer, or you could start with VB, Java, whatever you can get access to -- start with the Hello World program, understand everything that is going on when that simple program executes. Then try and add to it, prompt user for a name and make it a Hello "User Name" program etc. and then explore the chosen language to make it a feature-rich program.
Once you've mastered the basic syntax, move on to programming examples from a good beginners programming book. Do things like printing numbers in different patterns, odd/even, pyramids etc. then move on to strings and that should get you started nicely.
Most importantly don't forget or be afraid to experiment and constantly ask yourself why something works and something else doesn't.
I have found that the best way to learn programming is to write programs. The most fun programs to write are often games, because they are motivating, interesting and the end result is something you don't tire of immediately. It is after all, a game.
I'm not talking of learning to program by building the next 3-D rendering engine for an FPS shooter. I'm talking about building simple applications like mathematical games, quiz applications, horoscope calculators, etc.
You really should check out Microsoft's "Small Basic"... This is a great learning environment. I wish I had had something this cool when I got started.
Microsoft Small Basic
I also strongly recommend you find a mentor.
this is a free cource from microsoft Link the good stuff starts at tier 2 where you can chose to watch VB.net videos or c# videos (i recomend c#) it is abou 16 video that will get you started and at the end you will create a complete application
GOOGLE IS YOUR FRIEND!!!
start with http://www.python.org/
While it's certainly tempting to begin by learning one of the popular languages, I would advise against it as a first experience.
Of course, they are the easiest ones to find help about, but they are also the languages with the most idiosyncratic ways, limitations and twists due to the way things evolved with industrial use, etc. That's a lot of confusing stuff, and it's difficult to have a critic eye without the perspective of experience.
In contrast, the more exotic languages are often cleaner and simpler to understand, especially if you don't have pre-made ideas about programming. The communities are small, but that also means they are more fun and welcoming.
So I think it's better to learn the bases first with a very high-level language and an interactive environment. You could go through How to Design Programs, it's an excellent book which goes from simple math to advanced stuff.
Also have a look at Smalltalk, with Squeak or Pharo.
Processing is probably not a bad idea to experiment with either.
I think you should google "Hello World" programs. After seeing how to do them in different languages, choose whichever you like best and write a bit more advanced version of a Hello World program. Then you can follow a 20 min tutorial on that language. There are a bunch of tutorials like that online.
I'm a vbscript programmer among other languages but that is a dead end. If you want to write simple but powerfull programs real quick choose a functional language like Python of in your case still better Ruby. You can write usefull stuff in just a few lines of code and won't be limited. Dont forget the multi OS factor, so don't restict yoyself to .net solutions but skip java for the moment.
Nowadays knowing just one language as a programmer is not enough, you have to choose the right language for the right job, so i would say until you are a few years older and still interested in programming you will have used at least five languages. Luckily once you know a few the rest comes as naturally.
You should take a look at the rosetta stone programming site http://rosettacode.org/wiki/Category:Programming_Tasks . It has a collections of tasks with solutions in many languages, it learns you a lot about style and difficulty.