views:

1225

answers:

22

I've never really had any experience with programming at all, my uncle told me to come to this site for help from total strangers if I wanted to start programming. I know the names of a couple of languages but I don't really know anything at all. I'm fourteen and I can type fast if that counts for anything. One of my uncles wanted me to learn c#. So my question is, is c# a good place to begin, and if not, where is a good place to begin and how do I learn it?

A: 

This SO link to some online videos will probably help. Oh, and get the free copy of VS2010 C#.

kenny
+14  A: 

C# is a fine language to begin with.

Here is a good free ebook to get you started. It not only discusses the programming language but also what it means to be a programmer and how to approach it professionally.

As Jon says in his answer - Head First C# is also a great first book (as are all their other books such as Head First HTML).

You can get the Visual Studio Express programming environment (editor with syntax highlighting and intellisense, compiler, debugger and more) for free here - just be sure to select the C# version.

Oded
Wow, free tools from Microsoft. What about the OS itself, can a fourteen years old get a copy of their OS for free too?
jedi_coder
Yes. Most 14-year-olds have the free edition. http://thepiratebay.org
mquander
How many 14-year-olds run Linux (edit: that don't already program)? What programming uncle recommends to a Mac user that they learn how to write anything .Net? Given the OP, I would suspect he's already got Windows of some variety. Not to mention betting on the marketshare.
Brian S
If you are a student, you can get Visual Studio Professional for Free through Dreamspark
fireDude67
@jedi_coder: can a fourteen year old get a decent laptop or desktop? if the answer is yes, then so is the answer to yours.
RCIX
Jedi_coder: most computers come with a 'free' version of windows.
Martin
@Brian S: I did... and I still dual-boot Ubuntu and Windows 7.
jcao219
+1  A: 

There's no best approach, but one place to start is here:

Express Editions

They're free and you get lots of choices.

egrunin
+2  A: 

I believe C# is a really good starting point. That's pretty spiffy that you're really interested about programming at 14.

I suggest picking up a C# book and reading it. Follow the examples as you come by them.

One of my favorite C# books is by Andrew Troelsen: Pro C# with .NET 4.0 is his latest book. :)

http://apress.com/book/view/1430225491

townsean
Great books by Andrew, not so sure that they are suitable for beginners.
Oded
I think if I'd been handed a 1752 page book as my first introduction to programming, I'd have run away in terror.
Jon Skeet
:( I suppose I didn't really think about that.
townsean
+4  A: 

There's a lot to programming but it can probably be broken down into a few key elements:

  • theory
  • craft
  • dialects

Theory just takes lots of learning. Books, classes, trial and error, research, etc.

Craft comes with experience.

And that leaves dialects...or rather the particular language(s) you want to become fluent in.

To answer that would require a long list of what kind of stuff you are aiming to do. If you don't really have any particular direction to go in, your 'uncle wanting you to learn it' is maybe as good of a reason as any.

DA
+1  A: 

I personally got a great headstart on programming when I started on C++ about half a year ago. I'm about thirteen myself as well. C# is a lot like C++ (there are differences, though), so speaking from experience, I'd say yeah, that's a good language to start out with.

As for references, just grab some books at your local bookstore and start working your way through them. That's what I did. If you want to start with C++, I know for sure that there's an excellent reference called 'C++ for Dummies'. That's where I started.

Elliot Bonneville
I must disagree with that. C# is VERY different than C++ in every way except syntax. Furthermore, I never recommend C++ for beginners.
Phil Gilmore
I'm just saying from my personal experience that was a good headstart for me.
Elliot Bonneville
I'd agree with Phil. C# has much more in common with Java than C++, and C++ is a little too broad for a first language.
Mandelbrot
C++ is really nothing like C# other than both being procedural languages. I also wouldn't suggest C++ to anybody new to programming. I'd suggest python to learn the concepts, then C++ to learn the semantics. Then you can learn how to use wrappers and interact the two.
Jonathan Sternberg
@Phil Gilmore: I wish I could upvote your comment twice. For most beginners, I would strongly recommend **against** C/++. While C/++ can do more (and faster) than something like C#, it starts to become exponentially* harder to achieve the same results. Once you know general programming concepts, I would recommend getting a deep foundation using C/++, but absolutely not to start off. (* I'm exaggerating. Slightly.)
Brian S
+17  A: 

You may want to look at getting the latest edition of Head First C#. It's particularly suited to newcomers - and it concentrates on "fun" examples rather than business-oriented ones. I'm not personally a fan of that style of learning, but it clearly suits a lot of other people.

Make sure you buy either the latest edition (covering .NET 4) or the most recent printing of the previous edition though: earlier versions had quite a few errors, but those have been rectified over time.

Jon Skeet
I got started with Head First HTML when I was around eleven or so. I definitely recommend it for beginners, probably just because it's so easy and beginner-friendly.
Elliot Bonneville
I would not recommend miring a newcomer into the Microsoft money pit by recommending the .net tarpit.
Rob
@Rob: Money pit? Visual Studio is an excellent IDE, the various VS Express editions are free, and a teenager with an uncle suggesting C# probably already uses Windows. What money is being spent? (Well, aside from any books being recommended here on SO!)
Brian S
mquander
Brian S
I did go through Head First C# to begin with... Its an excellent start for the beginners...
Sachin Shanbhag
@Brian S - And what's the first thing everyone tells you to do once you graduate from the free editions? Buy the full VS package. And how often are you told you can't do something on "that version of XXX" so you need to upgrade to "that" but "this" doesn't work on "that" so you need multiple copies for backward compatibility or you need to buy the upgrade to use "that" function or the "other thing" doesn't run on Windows. My point is, there is always the pressure to buy something even if you don't have to but you probably have to.
Rob
@Rob: I build enterprise grade tools for supporting large scale hardware deployments and I could do just well with the free version of Visual C#. If you think that most people *probably* have to buy a version of Visual Studio, you need to back away from the Kool Aid.
jasonh
@Rob: that's all fine and dandy assuming that the open source community offered something comparable, but they don't. There is no open source development tool that is *even close* to the quality, size, and power of VS. And while linux is making strides in compatibility, it's not anywhere close to windows in the range of applications it can run or the range of computers it can run those applications on. Plus, the open-source part conflicts with the efforts of linux to support high-end graphics hardware (for an example), requiring proprietary drivers that may or may not work on your system.
RCIX
@jasonh - I did not say that but, as one who also owns VS (but doesn't use it), I question how large your deployments are.
Rob
@RCIX - Windows coders need a product like VS to keep track of the tens of thousands of objects for Windows programming. *nix/BSD users don't need all that to get the same work done. And drivers, as in your example, need to be supplied by the manufacturer. That's not a fault of open source. Open Source does not need free drivers to work with. They just need an interface to something.
Rob
What "tens of thousands of objects for windows programming" are you talking about? I can do windows programming just fine on the free version of VS with C#. Open source also apparently doesn't need a solid, fairly polished, and powerful toolset to develop applications, because i don't see one on the OS side.
RCIX
@Rob: You don't use the product, so who are you to be questioning my every day experience?
jasonh
+14  A: 

C# is an okay place to begin, but you might find it more fun to write websites instead. It's easy, everyone can see the cool things you do, and you already have the tools to start doing it -- just a text editor and a web browser. HTML and Javascript are also much simpler and more straightforward than C# without being less powerful.

http://www.w3schools.com/ is a good starting point.

mquander
+1 this is exactly the advice i would have given. i would also mention some of those "learn X in 24 hours" books. i know a lot of people hate on those books, but i definitely got interested in programming and learned a lot by reading one about ASP.NET
Jason
+1 Same as above. I got started with HTML when I was probably around eleven and a half, which proves it's a good starting language. However, only now am I getting into JS. Not that it's complex, but it's a full programming language, and you have to know HTML and CSS to get started with it. So maybe you wouldn't want to start with JS right off the bat.
Elliot Bonneville
The cool thing about the HTML/CSS/JS/server+SQL stack (besides the fact that it's instant-gratification, write your code and hit F5) is that all of it builds on all the rest, and it starts out simple and gets more involved until you've really dabbled in a huge amount of different technology. It seems to me like a completely perfect progression for a newbie to programming.
mquander
HTML and CSS are not programming languages.
Rob
What's your point?
mquander
That recommending HTML and CSS for a programming language is inappropriate.
Rob
I strongly disagree. Knowing them is necessary to program on the web, and learning how to do useful things with them will teach exactly the same methodical, problem-solving thought processes that a beginner programmer will need to cultivate. I note that I never suggested the poster should only write HTML and CSS; in fact, I implied the opposite, mentioning Javascript in my post and server-side programming in my comment. Also, the poster wants to learn to program, not to learn a programming language.
mquander
Also, the poster wants to learn to program, not to learn a programming language <-- My brain just blew a fuse.
Zachary
Distinction: SICP does a good job of teaching people to program, even though it doesn't spend a lot of time teaching the details of Scheme. Also: If someone didn't know basic algebra, or didn't know boolean logic, I'd tell them to learn that in order to learn to program, although that's not a programming language either. Writing HTML and CSS that accomplishes your goals involves a methodology of thought which is not common among non-programmers, and which must be learnt to program.
mquander
Anyway, I think the argument is silly, because I primarily view HTML and CSS as a good DSL for writing Javascript UIs, and Javascript is a fine language. My suggestion is basically to approach it like that.
mquander
@mquander - You weren't the only one recommending those but you're point is off base. HTML/CSS are markup languages that have little in common with programming or it's logic. They can't even add/subtract, loop, etc. This is bad advise.
Rob
@mqunader, ok answer until your stupid point comparing the simplicity and power of HTML/CSS with C#. "Much simpler and straightforward" depends entirely on what it is you want to actually build.
Ash
Luckily, what a beginning programmer wants to build is usually a simple interface that does some cool stuff in a few dozen or a hundred lines, and for that, I feel safe saying that HTML/CSS/JS is just a shorter and simpler path. I like C#, but I don't think a big, verbose language with a UI that gets produced via a rich tool and code generation is best for a learner.
mquander
My problem with this suggestion is that you have to learn a pretty big stack to get things done nicely. Instead of learning *one* language, you're suggesting learning *at least 3* and that's without doing anything on the server side. Then there's the difficulties involved in getting it to work on multiple browsers, etc. HTML makes many things easy - but once you veer away from what *is* easy, it becomes really tricky to get right in my experience.
Jon Skeet
+3  A: 

I would say dibble a bit in a few hot languages like C#, Python, Ruby. The reason I say this is, I think liking a language is a bit like developing tastebuds. I know many people who disgusted coding only because of braces and syntatic sugar. All I wanted to save you was from getting intimidated by syntax and throwing it away

Perpetualcoder
heh... you said "dibble"
Jason
+1  A: 

C# is definitely a good place to start and here is one reason why:

C# is a proper language that will pretty much force you to know what you're doing as a programmer. I began my programming career with PHP and that language is so loose you almost can't screw up. You can make cool sites and such but never know how terrible they are until you are hired to do something that requires a stronger language. At that time, certain terms and data types that are never used in PHP will broadside you. As I look back, now that I know many programming languages, starting with PHP was a pretty bad way to begin programming, at least in my opinion. I can't believe I have a job in this field knowing where I began. Java is also a good place to begin. Any strict compiling language, really. When you know the foundations from a strict compiling language, the loose ones like PHP are a breeze to add to your knowledge base.

Of course, you may want to consider what you're looking to program for. If you want to do web work, C# is a good base, but doubtful that you will use it much for web work unless you're working on something seriously deep. Objective C is used for iphone and ipad development, so you can't go wrong learning that.

Java is good for web and is now a mobile platform, so it is definitely a good investment. The principles of Java will help you write better web code, as well as form a good foundation if you want to branch to C later. Vice versa, I guess.

PHP is very easy to learn and will serve you quite well if you want to get into web development. You should know html, css and get familiar with at least mysql for databases if you go this route. Just FYI, php developers are a dime a dozen in the programming field, so don't count on getting rich doing this unless you want to run your own web company and do the site yourself.

In any case, MVC (model view controller) will be an important thing to read up on. When your code is well structured, it is immeasurably easier to maintain for yourself and anyone else that may have to pick up where you left off.

Have fun.

fleces
I believe that when you said 'Java' you meant 'Javascript'? The two are nothing alike.
Elliot Bonneville
@Elliot: Nope, Java fits that description just as well, IMO. Java is a better foundation for C (and vice versa) than JavaScript, too.
Jon Skeet
I meant Java. Many sites have Java engines, and all android and blackberry devices run off java, or some variant of.Javascript is a good one to learn as well, but not a stand alone language, as I see it, since I am almost exclusively a web and mobile programmer. If you want to learn javascript for web purposes, make sure you learn jQuery too. It will significantly reduce your production time.
fleces
If you mean by "loose" dynamic typing then I have to disagree. Javascript, Python, Ruby are all good ways to start programming. PHP is specially bad for various other reasons. Oh, and MVC is way too advanced for someone who hasn't started programming yet, so this should not be his current worry.
Muhammad Alkarouri
By loose I mean PHP forgives you for sloppy coding. You don't need to declare variables or their data types the way you do in Java, for example, where nothing compiles if you fail to do so.MVC may be advanced, but it is still ok to read on it and see where things will lead. If you download something open source like Joomla and reverse engineer it, you may get to see your code moving in ways that generate greater inspiration and confidence. I started with notepad and made simple html pages, then reverse engineered phpbb and just took off. Best move I made for advancing my motivation and skills
fleces
+1  A: 

Whichever language you decide to pick (nothing wrong with C#). Pickup a good book or resource, a few are mentioned here. Once you've done that, make sure to work the examples by hand and then at the computer to concrete them into your melon.

It may be totally obvious, but the more examples you can work, modify and make your own and see how they work, the quicker you'll pick up the language. IMHO this is how you really start to learn and have fun because you can start seeing things happen and begin to solve problems and gain context to issues you wouldn't have just reading...

Wil P
+7  A: 

In my opinion, there is one critical tool when learning to program or when learning a new programming language. That tool is "a problem that you are sincerely interested in solving."

It may be a game you are interested in writing or a desktop or web-based tool that will actually help you with something in school or in your life.

If you have a real problem that you really want to solve, there will always be free tools, tutorials, and online geeks to help you learn how to solve it.

Learning programming without solving real problems is like learning to build a house with just a hammer and a nail and a short piece of wood. You can learn the basic mechanics of the hammer, but you'll never be a carpenter until you have to confront the problems you'll encounter while trying to build something useful.

After that, I think C# is a great general purpose language to learn programming. And there are some really great free tools available.

I agree with the poster who said experiment with several languages. Solving the same problem with different tools can be a real eye-opener into the different paradigms of those tools.

Jason
+1 for problem solving. That's what writing programs is all about. Make the virtual race car grip the turns or spin out. Create a virtual testing environment so that your defense contracting company doesn't have to spend millions on a tank that doesn't function. Fold millions of billions of protein clusters in a distributed network to find solutions for worldwide health issues. These are the results of programmers finding solutions to exciting problems. (Or course, don't try to write Folding@Home before you know Hello World.)
Brian S
+12  A: 

If one of your uncles wants you to learn C#, he probably sees you as his employee a couple of years from now. So ask him directly if that's his plan and persuade him to help you.

If your uncle has no idea about programming and just dropped this C# suggestion because he heard the term somewhere, he might be doing a very bad favor to you.

If I would be you and I would have free hands to choose what I want, I certainly wouldn't choose C#, because it ties you to a proprietary operating system (Mono is a joke, admit it).

My choice would probably be Python, because it runs on almost any platform. And you have two very valuable tutorials for beginners that approach teaching programming from very different points, so you can pick the one that suits you best: the official Python tutorial and Zed Shaw's Learn Python The Hard Way (don't be afraid of the scary title, the book is very valuable for a beginner).

edit:

After reading the comments, I would like to add a couple more points.

How many of those C# programmers code for fun? Most programmers that use Microsoft technologies, do it professionally - it's their job, they do it for money, most of them don't have guts to admit their job is boring sometimes (even if it is), because such a claim is against the corporate policy that slips into the culture around the infrastructure provided by their (cough!) free programming tools.

Just in a couple of years, the community of users who do programming more or less seriously has literally exploded. Back in the days there was sourceforge - the single monster that was totally programmer related. Today there is launchpad, bitbucket, github (which recently surpassed 1000000 repositories, most of which are small personal pet projects governed by free licenses). How many of those projects are using C#?

Today programming is about reusing or "stealing" (in the good sense) code more than ever. Where are the herds of C# projects, small general-purpose libraries? While some programmers who write proprietary software are not very helpful to newbies (because they see it as consulting, which they can do for money), and while some programmers who write free software are not very helpful as well (because they lack social skills), the code is more important. You don't learn programming only by reading books, you learn it by studying working code. And the free software ecosystem provides much more code to study.

Generally, people who get into programming have two choices:

  • avoid proprietary stuff, get access to a lot of free software at the risk of being called "anonymous internet elitist"
  • ignore the proprietary vs free holy war at the risk of feeling what proprietary software means indeed and how it can spoil a good intention, like this guy
jedi_coder
I think this is awfully good advice.
mquander
+1 advise as I, too, noted above.
Rob
-1; "Micro$oft" is not an evil dictatorship bent on wrecking the world through great programming languages. if the guy is new to programming C# is a great option, then he can decide if the wants something open source later.
RCIX
Idealism is good and all that, but ultimately if you want people with no knowledge of programming ("the average joe") to use your programs you'll have to head to the "evil proprietary OS". And unless you were already an open source geek, you'd probably not pick python any more than another good language.
RCIX
Finally, C# is a language specification; microsoft happens to have the only good implementation of it right now). If you want people to be "free to choose" then you'd work on Mono or some other C# implementation to make it a viable alternative.
RCIX
@RCIX - according to the US Justice Dept and the EU, Microsoft is just that but he said nothing about others using his programs, just that he wants to learn how to program and nothing will stifle someone more than the Microsoft ever changing, buy this, world.
Rob
@RCIX - You forget MS shoved their implementation through the standards body and I question how patent encumbered all that really is but there is no reason to use Mono when you have the far superior, entire *nix/BSD system to use. Mono is an outlier.
Rob
@Rob: i'm a pragmatist in many ways. it may be nice to be "go open source!!!1!1!!!1! down with micro$oft!!!111!!1!", you simply can't do so without purposely separating yourself from most of the computer-using world. The OP didn't state that he wanted to develop for windows, but it's a reasonable bet. Also, if *nix/BSD is "so superior" then why isn't everyone using it?
RCIX
@RCIX: A whole lot of programmers are using it. A majority of the best programmers, by whatever metric you please, are probably using it. A big majority, if you count OS X as *nix. Anecdotal evidence to support: http://news.ycombinator.com/item?id=687267
mquander
@RCIX - outside the desktop, Windows is a minor player. Windows was designed for amateurs to use, not programmers.
Rob
Quick save the innocent 14 year old boy from the clutches of the evil monstrous mega-corporation hell-bent on brainwashing our children and turning them into the next generation of mindless corporate clones ;) Apart from that, Python is a great suggestion as a learning language, but then again so is C#.
Ash
@Ash: Yes, I would recommend Python as an intro language. It's pretty easy to learn, and for a new programmer it may be frustrating to go through the write->compile->test->fix->recomplile->etc. process. C# tends to be quick to compile compared to some others, but it can still be a pain.
Brian S
@mquander: This past week I've been developing using 2 Ubuntu machines and a Mac OSX. But guess what? The application was targeted at Windows. Just because the programmer uses *nix, doesn't mean that's what the target platform is.
Brian S
@Rob: I didn't realize the definition of 'amateur' had changed to 'getting paid to do your job'. I thought that was the definition of 'professional'. A skilled programmer can use whatever tool is available which can get the job done. An anonymous internet elitist complains that closed source is evil and nobody should use it.
Brian S
@mquander: it depends on the target audience for this guy. If he's planning to write apps for other normal people to use, then you'll need to write for windows. If you're aiming for the geek crowd, then *nix or mac is fine; and i'd still recommend windows+the free C# express VS if he's just toying around with programming; because of pure smoothness and ease of use.
RCIX
@Brian S - You are confused by my response to RCIX. His point was everyone should program using Windows cause everyone uses it. My point is Windows is used on the desktop a lot because it's designed for amateurs. If you need to program for Windows, the best platform to do that would be Windows. My other point is, if you want to learn how to program and how computers and software work, the best platform is open source, ala *nix/BSD, and avoiding the constantly changing, closed up and hidden, pay-as-you-go, click-to-solve, do-it-for-you world of Microsoft.
Rob
@jedi:coder: so now you're saying you have to code for fun to be a programmer? BTW: i code for fun in C#. @Rob: if you want to really learn how computers and software works, avoid the "RTFM community, low documentation, constantly changing, something's always broken" world of open source. I can call stuff names just as well as you can :P. Also, it's really hard to believe that "windows is designed for amateurs" when so many professional people use it.
RCIX
@jedi_coder: You're doing the profession a disservice by turning this into a mud-slinging war over who is a better "programmer". Browse around this site and you'll see many C# programmers willing to help out for free, working on fun side projects and doing serious work. Your misinformation is disappointing and if you'd just look (something I highly doubt you've done) you'd see plenty of blogs and programmers dedicated to robotics programming with C#, game programming using XNA Game Studio (again, completely free), home automation, etc. Your ignorance is astounding.
jasonh
@jedi_coder: and "run the risk of" being looked at as an "anonymous internet elitest"? I'd say you've well crossed over into the "arrogant, fight the power no matter whether they have a good product" territory.
RCIX
A: 

I wouldn't pick C# purely as it isn't completely free and the full visual studio is very expensive. Have a look at python, it forces you program properly in many ways whilst omitting some of the more annoying aspects of programming ({'s and ;'s). If you do choose to learn python there is a free site with tutorials on how to make simple text based games. I used it to familiarize myself with the language before starting my current project.

link: http://pythonbook.coffeeghost.net/book1/index.html

Gish
C# *IS* completely free. There are commercial versions of VS.NET, but VS.NET Express, SharpDevelop and MonoDevelop are all outstanding IDEs and are all free. All other aspects of C# are provided for free by Microsoft (compiler, library, framework, tools, online help, etc.) By your logic, Python isn't completely free either, because IronPython integrates with VS.NET Enterprise. That doesn't mean it's not free...
Phil Gilmore
Python, like C#, is a language specification. Implementations can be non-free, but I believe the specification is free.Mono is a free implementation of the C# language. It's also a joke. Microsoft's implementation of the C# language is NOT free (as in freedom). It is also not cross-platform, which in the future may not work well.The most popular implementation of python (and the one referred to when people say python) is CPython which IS free (in both ways). I also believe that IronPython is free, although the base CLR isn't (because that's made by Microsoft).
Jonathan Sternberg
"Microsoft's implementation of the C# language is NOT free (as in freedom)." Microsoft's C# compiler is gratis, but not libre. However, the programs you compile using Microsoft's C# compiler, or write using Visual Studio, have zero connection to any of Microsoft's licenses. I couldn't care less that I'm barred from modifying and distributing my own version of csc.exe. I can still sell BriansCashCowApp9000.exe.
Brian S
I'm sorry I did not mean to misinform anyone. The reason I said that was because my close friend was using C# at work for a year with the full visual studio and was really frustrated when he left as he couldn't do a lot of what he could do before and was also frustrated with its price
Gish
A: 

It is an asset You have made a commitment to prgramming. It is usually advantageous to start from a keen understaning of Your working environment. Ask basic questions like what tools are already available to do Your daily assignments? Have as much fun as You can with them; and when they behave unusual, ask the why? Try finding solution to them on the net. Later on, perhaps You may want to enjoy basic html for sometime; and move all the way around c-sharp or anyother programming language; because at the end You- Yourself will figure out the link between a programmer and programming languages.

Hope it helps

deepseefan
A: 

Having an ability to type fast using ten fingers is useful as you can do more and more exercises without causing your muscle tired quickly. The first time I used computer, I just typed using my right index finger only and got tired fast ---typing become a nightmare !

If you have much time, you can start learning the following topics in order:

  1. Computer architecture from hardware and software perspective.
  2. C# (Deitel's C# book may be a good choice since it has much more details).
xport
*hangs a sign* "No 9-fingered programmers allowed! >:("
Brian S
A: 

The most used languages are C and Java, according to Tiobe, so I'd almost say you should start there but esr has some good reasons for recommending Python as a first language.

Rob
A: 

C# is an excellent place to start. One thing I would suggest is think of something cool, but not too complex, that you would like to build the using some of the reference books other people have suggested in this thread go build it. Calculators are fun starting programs to build (Disclaimer: I am a math geek).

antonlavey
+2  A: 

Whatever you do, don't learn VB. It teaches you bad syntax

fireDude67
A: 

Any widely used language is a good place to start. Once you have done some useful projects in one language, it will be easier to pick up others because the logic is similar.

I suggest choosing based on what you want to do with it now. For example, let's say you are interested in making a few simple games while you learn (think frogger or maybe 1943 and keep the scope small). You can make 2D games pretty rapidly using an interpreted language like Python or Ruby (both have free game libraries available). With perhaps a little more work you can make them in Java or C, and have room to grow into heftier game features. Or you could make them in Objective-C and Cocoa, which would limit you to developing on a Mac, but open the possibility of distributing your games on the iPhone.

If you want to do business or finance applications, you can find a lot of support based on languages like C#, Visual Basic, Java, C, and the .NET framework (not a language, but applicable to enterprise software generally). It would also be a good idea to practice with SQL for interacting with databases (where business data like sales, customer names, or employee records are likely to be stored).

The most important thing to learning quickly is that you enjoy the projects you are working on, and are extremely interested. It will seem impossible to learn a language if you don't really want to do anything with it. On the other hand, you can be an amazingly good programmer in 6 months if you quickly start working on projects of interest, and are fanatical about solving the problems you set for yourself. Besides, you're 14 so you have the option of pushing your life and career in a direction that will give you both income and enjoyment in the work you do.

Rab
A: 

OK, is it just me or no one asked him the main question. What do you exactly want to do ? Do you want to play with hardware (ie have some board connected to a serial / parallel / USB port and have some LEDs flashing, have some sound coming out a speaker etc) or do you want to develop applications that have a nice user interface connecting to a database or even a game ?

Well, for number one, that will be assembly (ie for ARM SOCs) and C and that would require you to get familiar with hardware programming. For number 2, I'd say C++/JAVA. I wouldn't recommand a language that is only supported by one OS (like C#) ...

Nicolas
+1  A: 

to copy a post i posted here: http://stackoverflow.com/questions/3430705/3432079#3432079 there are two things to get a handle upon:

Academic Knowledge:

Skills:

  • Know how to define a projct - no matter how good a programmer you are if you build the wrong thing you will have failed epically.
  • Know how to design - learn the theory on object orientated design - the Gang Of Four software patterns are classics and every coder should be aware of them.
  • Know how to document code - this is critical for long lasting code and for working well in a team. Write it, Document it, Test it => Resuse it
  • Know how to work in a team - work hard, play nice, communicate well.
  • Know which tool to use - get a feel for as many types of languages, actual languages, technologyies, libraries and so on as you can so that you know which to use in which situations
  • Know how to learn - from those around you, from the web, from documentation and most importantly from your own mistakes.

I'm sure others can add to these lists ;)

GreyCloud