views:

479

answers:

20

I'm 15 years old and I want to learn how to program computers. I like to think I'm more experienced with computers than the average person, I use the command prompt every day and I know how to access the command line in the command prompt but I have no idea what programs I should start with and what language to use. Would I be better off downloading a language or using one of the programs on my computer like the command line or vbscript? Any help would be appreciated.

I downloaded C# this morning and already wrote two programs. They were small console programs but I'm learning fast and getting familiar with the language. Any advice would be appreciated.

A: 

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.

Raj
"any programming concept/language"? Not even close to true. java/c#/c++/obj c etc. are very close cousins, extremely similar languages, and they miss (or poorly support) most of the same approaches and concepts.
simon
A: 

A lot of universities and educational institutions tend to start their students off in script languages like JavaScript. Within this language you can practice techniques used in Object Oriented Programming. Once you start understanding the theory you can look at taking that theory over to Java and then maybe start on C/C++.

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,.

:-)

Andrew

REA_ANDREW
+10  A: 

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.

Jason Coco
+1 for the recommendations of the excellent free software. :-)
REA_ANDREW
I haven't looked at the page in a while... they actually now have a free e-book that is an introduction to programming and C# on the homepage.
Jason Coco
While I personally vote for the VB side of things (subjective reasons), I wholeheartedly agree with with the gist here. Microsoft offers starter kits, code samples and all sorts of other sites for free to help you get started.
David
+1: Microsoft has historically provided nice beginner tools. QBasic, anyone?
John Gietzen
+7  A: 

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.

Daniel Lew
A: 

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.

Enjoy !!

Nick Haslam
+1  A: 

(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

DrG
A: 

I found that reading programs others have written really helped me learn how to write my own code.

dogbane
A: 

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.

Good luck!

itsmatt
A: 

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.

Adnan
A: 

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.

AmitK
+3  A: 

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.

danieltalsky
+3  A: 

Get one of the HeadFirst Series books. They are really fun to read and you ll be surprised at how much you learn.

http://oreilly.com/store/series/headfirst.csp

Kapsh
+2  A: 

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 domain.

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.

Cruachan
A: 

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.

dicroce
A: 

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

Yassir
+1  A: 

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.

simon
meh, you were faster than me at pushing scheme :)
Damien Pollet
A: 

GOOGLE IS YOUR FRIEND!!! start with http://www.python.org/

kthakore
A: 

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.

Then when you want to go to more popular languages, there is Ruby, Python, Javascript, and the Web languages like HTML and CSS. C will be nice when you wonder how things really work with the hardware. Reserve Java and C# for when you need a job, they are not that fun anyways :)

Damien Pollet
A: 

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.

Dennis
A: 

Why the lucky stiff created a platform to teach kids ruby:

Hackety Hack

I think it's the best kid-friendly programming tutorial I've ever come across.

Jotux