Best Computer Language for a 13-year-old Beginner?

Folks:  Friends of mine are blessed with 13-year-old triplets.  Two of the 13-year-olds want to learn some computer programming.  They are non-nerds.  Their mom asked me what would be the best computer language for them to start with.  [As an aside, I should note that being asked questions like this is probably a sign that one needs to get out more…]

To start the discussion rolling, my first thought was Visual Basic.  The learners have Windows machines and VB will enable them to control what is happening on their desktops.

70 thoughts on “Best Computer Language for a 13-year-old Beginner?

  1. Flash and Actionscript are a nice place to start programming. From there, going to web applications (either server or client side) or desktop applications (your VB route) are all fairly simple jumps.

  2. Philip,

    My primary school started us on programming in our 10, 11th years. We learned LOGO, a simple functional language where we were required to move a “turtle” around and develop graphic patterns. This helped us learn looping, procedures etc in very simple syntax.

    The next programming language at age 12- 13 was BASIC. Pretty easy to learn and gets good work done. I guess VB is now an easier language to learn, as long as the relation between the window attributes and the actual code that does the work, is demonstrated clearly.

  3. Perhaps Scratch:

    http://scratch.mit.edu/

    I played with it for a few minutes, and it looked like a cute way to learn to think algorithmically. Also, the reward for writing (dragging?) some code is immediate and visual. The problem with the so-called professional languages is that you have to learn so much to accomplish so little.

  4. Why not start with C#. It’s on the same level with VB, but teaches better practices. Microsoft has lots of C# demos, including controlling Lego Mindstorm’s and simple games, which can get the ball rolling.

  5. I would recommend starting with Hackity Hack, a ruby-based tool specifically designed for kids to learn to program with. It’s a good place to start, easily accessable, and Ruby is a Real Language.

    http://hacketyhack.net/

    Also, _why the lucky stiff is such a character.

  6. Eek. No visual basic.

    Scratch is your best bet. It’s graphical and really fun right away.

    If they need something that is an actual language that they will use later, Ruby is a good bet. They can turn around and roll it right into websites with Ruby on Rails.

    Personally, I always thought tcl was pretty cool and easy to get the hang of.

    What’s the third thirteen year old learning instead? Investment banking?

    –Colin

  7. If I were going the full blown Windows route, I would jump right to C#. VB’s days are numbered and though the two actually aren’t that different, the more C like syntax will serve them better in other languages in the future.

  8. Another language to consider is Python: I’ve heard that it’s often used in high school classes as an intro to programming. Things can start out simply, but it scales to fairly large projects as well (and it can be used on different OSes if the kids want to experiment in other directions in the future).

    ActiveState has a free version that is downloadable that may be easier for beginners to start with (giving your contact information is optional):

    http://www.activestate.com/Products/activepython/features.plex

    It also has binding to COM and the Win32 API, as well as an editor.

    Some more Python on Windows information at:

    http://tinyurl.com/w7wgp
    http://www.richarddooling.com/index.php/2006/03/14/python-on-xp-7-minutes-to-hello-world/

  9. I would very strongly recommend Hackety Hack, it’s a Ruby Distribution for kids exactly their age:

    http://hacketyhack.net/

    Awesome stuff with great examples like programatically downloading videos from YouTube,etc.

    It also keeps the overall complexity down to a minimum by integrating the tutorial and the IDE (such as it is) so that you sort of stumble along and end up creating a working program.

    While things like Visual Basic Express offer great value for their free status they have developed so many layers between getting started and getting a result that they are likely to end in frustration for people starting out.

    – Mike

  10. I’d look into two projects designed expressly to get kids interested into programming: Hackety Hack and Scratch. Hackety Hack is like Ruby for teens, a development environment and set of tutorials emphasizing short and useful apps (e.g. blog, IM, MP3 downloader), currently only available for Windows. Scratch is a more GUI approach, stacking building blocks together to build applications, movies, and games, which can then be easily shared/disassembled by the community. Both are completely free.

  11. Python might also be a good choice. It doesn’t force OO thinking on you right away, so you can start with — print “Hello, world!” — and then move on to functions and then more complex language constructs. String, list, and dictionary data types are all built-in and very straightforward to use.

    I think there are some nice beginner IDEs for Windows (e.g., DrPython), although I haven’t really used them. I’ve heard pygame is also a nice library for learning some simple game programming (although AFAIK it’s capable of scaling up to more complex games, too).

  12. I’d either have them learn Python (easy, clean, and leads to lots of good habits) or PHP (ugly, but they can create web pages pretty easily, so their friends can see whatever they built).

    While I’ve never used it, ActionScript might be a good choice too (if their mom is willing to pay for a copy of Flash).

  13. Why not something more versatile and on the (popularity) upswing than VB. Python is replacing Scheme at MIT, is used by Google, by the OLPC XO team, and is the scripting language for the popular Civilization IV game. Ruby is the hot web-app language. And unlike VB, Python and Ruby are free.

    Python over Ruby because, while Ruby has many books aimed at the experienced but new-to-Ruby-or-Rails programmer, Python is less complex, and there are several books aimed at the absolutely new programmer. Consider Python Programming for the Absolute Beginner as a place to start.

  14. Two ideas
    1.-Php-Mysql, linked to Apache.
    2.-Try some Linux distro like DSL or Ubuntu type and start working with scripts besides OS configuration.

  15. I would say PHP, enable them to control what is happening on the web. Of course with PHP comes HTML, CSS, and JavaScript. Which might be a better place for some non-nerds to start.

  16. Philip: Some time ago, I asked you a very similar question, about what computer language would be best to start with. You recommended reading Structure and Interpretation of Computer Programs.

  17. Whoa. Almost as many comments as a Java v. Lisp debate 🙂

    I don’t think anyone has addressed the question of what kids can do with these various languages. They don’t want to become professional programmers. I haven’t heard that they want to become Web publishers. So the programming language has to be able to let them automate something that is important to them as teenagers. That’s why I thought VB might be good. They use Windows computers every day and VB has hooks into lots of Windows apps.

  18. Many years ago, I mentioned Visual Basic to one of my neighbors asked for a similar recommendation for his 10 year old son. The child quickly enjoyed considerable success with VB. About a year later, his parents asked me to recommend a second language and I suggested C++, in which the boy also excelled. By the time he reached high school, he was working part-time as a programmer. Last Spring he graduated from Harvard after working as a summer intern at Nvidia, Microsoft, and Google. Keeping in mind that he turned down MIT to go to Harvard, I can safely say he isn’t a true nerd. He now works at Google.

    I’m not convinced that Visual Basic is a great language for professional programming, but from what I’ve seen (including experience with my own child), it’s a good starting point for learning because the student can easily write meaningful programs without understanding too many concepts. After outstripping Logo’s capabilities at age 7, my daughter wrote complex graphical VB programs by age 10 effortlessly without reading the manual. I certainly couldn’t do that when I first learned Java at age 45.

  19. One other thought — I don’t think kids necessarily set out to “automate” things — they are more interested in games. So any language you recommend should facilitate writing graphical programs (because kids expect games to be graphical) and the language must make it easy to develop games. Visual Basic fits the bill on both points.

    My daughter developed mostly games for 7 years before she wrote a program that had any practical use. Now she writes programs to aid in schoolwork (such as a graphic editor, a program to generate fractals, and one to look up vocabulary words). You could write these programs in practically any language, but she prefers Ruby and Python. I wouldn’t recommend either of these as a first language and neither would she.

  20. I was gonna suggest Python with PyGame, the basic games make a great starting point for hacking, and hacking on games (first in 6502 machine language on a KIM-1, then on Applesoft Basic and 6502 assembly code on an Apple ][+) was how I learned to code, but the Hackety Hack folks look like they’ve already done the curriculum I’d hoped to work up in Python the last time a kid asked me how to learn programming.

  21. Philip @20: do these kids, or any kids, actually use any Windows desktop apps that are not IE, Firefox, or a game? Do any popular games come with VB hooks?

    Outlook? Thunderbird? Do kids use such Dilbertian dinosaurs? Hasn’t gmail been invented?

    VB is great if you want to make serious use of Excel. But if the 13-year-olds really get excited by the prospect of turning Excel into a finite-element model, or laying out pivot tables, or doing automated statistical analysis and plotting for their armchair-investor stock portfolio, I’m afraid I’m going to have to disagree with your characterization of them as “non-nerds”.

    I’ve never contemplated writing VB to automate Word. Anyone who thinks that programming their text editor is fun is… a nerd. A really *enlightened* nerd who should be introduced to Textmate or e, if not emacs or vi.

    The killer app for VB is the desktop equivalent of a CRUD app — a nice GUI layer which sits in front of the SQL statements that hit your Access or SQL server database. In other words, nerditude squared.

    If they want a language that “automates something important to them as teenagers” the likely correct answer is: Javascript, or its upscale and (pardon the expression) Flashier cousin, ActionScript. If you don’t want to spring for the Flash developer kit (which might really be the most fun — they can make their own cartoons like homestarrunner.com and show them to their friends!) just start ’em off on HTML and CSS. Install Firefox and Firebug and show them how they can warp existing web pages to reflect their teenage fantasies. Install GreaseMonkey (http://diveintogreasemonkey.org/) and they can use cut-and-paste Javascript phrases to make alterations to pages that *persist* from visit to visit. Then, if they want to turn the nerditude up a notch, move to something like jQuery, which is a bit friendlier than the O’Reilly Javascript book.

    More likely, though, Javascript is too nerdy. If that’s the case… perhaps Yahoo Pipes, where they can connect web feeds together? Or Ning, where they can put together their own personal Facebook/MySpace for their friends? I haven’t used either of these, but either one seems like a better bet than the Windows desktop.

  22. Oh, dear… reading more carefully, I see that you’re not necessarily helping the kids yourself — you’re giving them a pointer via their mom. A tough problem (unless Mom is of the social class that regards the cost of a copy of Flash as pocket change.)

    The only person I know who is tackling the problem of building a web-aware, multimedia-aware programming platform for kids is… the hacketyhack.net guy, who has been recommended several times already. 🙂

  23. PHP? Only if they only want to make websites of three or fewer pages. Otherwise, forget it.

    I recommend against Ruby for a newcomer to programming, because I find beginners have more trouble than necessary with what I would term its “unnecessarily diverse” syntax. The kids shouldn’t have to be worrying about style points like whether function calls get parentheses — a good starter language will have the simplest syntax possible. Which points, in my mind, to Python.

    In response to whether it will let them automate what they want, I think Python’s still a good choice. My non-programmer younger brother wanted an alert emailed to him when a particular non-RSS-supporting web page changed, he didn’t like the page change alert apps there are out there, so I guided him through writing his own non-GUI solution in Python. The result was about twenty lines, and he understands it well enough to fix it when something goes wrong. Now, those triplets may want to automate GUI apps. No problem — Python has excellent COM support available, so you can call into any app you like quite easily.

    Steve

  24. Why not Squeak smalltalk? The e-toys graphical development environment is a great start. Then when it’s time to get down and dirty with the code, smalltalk is conceptually and syntactically simple. It’s also much easier to read than scheme.

  25. philg, I think you are focused on the right question: what type of project would fascinate these kids? If they want to automate Windowsy things, VB might be a reasonable choice. Frankly, though, I think the people suggesting VB or C# have forgotten what kids are like, and how completely baffling programming can be when you have no idea what is going on.

    If they are interested in web sites, “programming” might mean HTML. Don’t be too literal as software engineers about what programming means. For people who’ve never done it before, HTML is a programming language in that 1) it is arcane, 2) it isn’t WYSIWYG, and 3) it makes a computer do something.

    Scratch is very cool. The results are a little crude, but can be quite complex, and there are no syntax errors.

    Another question to ask: how much expert help will be on hand? One way to go with these sorts of adventures is to have an adult who can do the hard parts, leaving small windows of exploration for the kids.

  26. Tim: Why didn’t I suggest SICP (the intro CS textbook for computer nerds at MIT) for these teenagers? There is no indication that they want to become professional programmers or that they are interested in programming for the sake of programming. They need a computer language/environment that can somehow do something that will entertain them or make their lives easier. They are not looking for puzzles to solve or career skills to build.

  27. May be they can have some fun with regular expressions. For example they can build a script that would make a list of vanity license plate numbers that would say something funny when looked at in the mirror. (for the car they are going to get at 16). For example T2ITI13 😉

  28. Python. Based on a learning language, simple syntax, open source, and modern full-function dynamic scripting language.

  29. When my son was 10 he started out with HTML. Maybe not
    really a programming language, but it has a very low
    learning curve – with just a few tags and text you can get
    great looking web pages. After a bit of help from me, he
    was able to learn the rest of it mostly on his own. He made
    a website that was quite popular with his friends.

    After a bit he asked about Javascript. I found an old
    book of mine that had a lot of nice small examples. And
    immediately found that these small examples were full of
    concepts completely foreign to a 10 year old.
    So, J is a variable. What? This is something that can stand
    for a number, and can change. What? So we put that off
    for a while, but later on he got it.

    By the time he was 13, he did very well in a school course
    on Java.

  30. “They need a computer language/environment that can somehow do something that will entertain them or make their lives easier.”

    OK, so what do these particular kids find entertaining? What will make their lives easier?

    Answer that, and we can have a discussion about which languages meet their needs.

    Example: If they are hanging out in Teen Second Life, then LSL is probably a good choice.

  31. I would agree with those recommending HTML and then JavaScript as beginning languages. If these children become interested in programming, almost any developer is expected (and basically guaranteed) to know these languages, so it won’t have been a waste. If they don’t, then they can still send flashier emails, or get more lucrative secretarial positions. As an added bonus, simplistic web programming is probably the easiest way to get a job working for local businesses. Making a deal to code their business management software, holding an introduction to .NET programming in one hand and shaking with the other, doesn’t usually go over so well.

    As for piquing their interest in programming, I don’t think any other languages provide such an easy point of entry. The results are immediate and visual, providing the entertainment factor. Additionally, no software installation is required. Furthermore, although this capability is much maligned amongst more experienced developers, browsers often have homegrown methods of displaying webpages quasi-correctly despite syntactical errors, so the kids aren’t going to be staring down a blank screen or a segmentation fault too frequently.

    If HTML and JavaScript are quickly mastered by these young minds, then they can further explore user-end graphical elements in some “real” programming language, or learn some server-side scripting language if they want to BuildMeASocialNetworkingSite() the old-fashioned way. I personally started out with C++ and PHP, respectively, but perhaps these are no longer in vogue, and the more highbrow .NET languages would be more acceptable, especially in a Windows environment–not my specialty. Because JavaScript uses common C-style sytax, they would have many logical languages to advance to.

  32. I would choose python. As previous mentioned there are some beginner resources. the interface allows one to start typing right away (like the old vb on commodor machines) and there is an ok interface for making games – pygame.

    I used it to teach my 8 year old a bit of programming on an ubuntu based laptop.

    As someone mentioned php is not a great language – but might be an ok way of learning web development.

  33. second Colin, Will, Michael and others who suggest the Ruby on Rails path. It’s open source, straight forward to learn, in demand and the programming philosophy you pick up is more practical. Why cloud their heads with VB and sentence them to the microsoft platform only?

  34. I’m the only one to mention this, but I really liked LSL Linden Scripting Language, the Object oriented script for doing things in Second Life. It has the usual operators, plus you can immediately do fun things like build virtual robots, or information kiosks, or customize your avatar, or program and build vehicles, aircraft etc.

    Plus the social aspect of building and coding in a virtual sandbox environment encourages social thinking and presentation. There is a Teen version of second life, which is content-monitored and would supposedly be appropriate for 13 year olds.

  35. I believe the family in question uses Windows, but AppleScript seems to me an interesting choice too. You can easily automate most Mac applications (including such silly things as changing songs in iTunes), and it gives you enough power to write complete programs. The syntax is quite verbose, so there is a smaller chance of the ASCII soup overwhelming 13-year-old enthusiasts than languages such as C++, C# or Python.

  36. Philip, you asked for more “what” can the kids do than language features. I’d still really recommend Hackety Hack (as many others here have), it focuses on interaction with other peers, interaction with YouTube, things like that.

    Windows or Mac is sort of superfluous compared to the web (it’s where the kids are at).

  37. Hey im a 13 year old too, and im learning programming in this site called BYOND, its language is called DM (Dream Maker), i think this computer language is a good way for a start in programming, cause it gives motivation for 13 year olds to learn and for the older people to teach them cause its a site for “code and play”.

    I say its quite cool cause even if you code only some lines, you can run your own game instantly. It’ll be a relief cause you will be more motivated than before and saying “Whoa! i should do better for it to be more fun”.

    (I don’t know alot about programming so if there is something wrong with my comment please try and tolerate it)

  38. Are you sure they don’t want to be web publishers? Practially every kid I know has some kind of web presence (on a social networking site which supports some kind of HTML/stylesheet thing). Almost none routinely uses anything more sophisticated than word that VB has hooks into. While I realize that it’s not “really” programming, I think that HTML and CSS have enough of the “do this and that lines up over there, and voila!” aspect that attracts problem solvers to programming. The guy with the post about flash and Javascript has a pretty good point too.

    I spent years as a VB programmer and have vb on my desktop, and when I want to make the computer do something I’d rather not do, more often than not, I do it in excel.

  39. Nobody has mentioned the mobile phone. Upon further reflection it occurs to me that teenagers aren’t interested in what happens on their desktop computers; they are interested in what happens on their phones.

  40. When I want to introduce my son to programming (at 11), I found Game Maker. Using lego-like icons, kid can put together actions without writing a line of code, to create playable games. Plenty of sample games to learn from, to build your own invaders, platform games, etc, and to show friends.

  41. I’d recommend ZZT. It’s what really got me interested in programming as there’s the capability to start with pre-fab monsters and the like and build up to bigger and better things like programming objects.

    The graphics are crude (even by the standards at the time of its release), but there’s still a live community. It can be pushed quite far as some of the worlds available on z2 illustrate.

  42. I’m mildly surprised that Lisp hasn’t even been mentioned! Okay, someone had to say it. 😉

    My first thought is Javascript or Actionscript, perhaps using the Facebook or OpenSocial API. Making one’s own “avatar chat” or virtual collage board updated from their social networking site of choice is a pretty decent project. Unfortunately, JS is really a DIY-world, where you have to pick ala-carte the most basic things like GUI toolkits, have to understand more than one asynchronous model (request/response and things like setTimeout) and so forth. It really just doesn’t work as a starter project unless they like a very jaggy learning curve with multiple APIs of differing quality.

    Small kids might not be short adults, but 13-year-old kids are closer to it. They might not be aiming at career aspirations or theoretical learning, but at that age, just making simple shiny colors and shapes is not going to cut it. They have pretty well-formed interests, and are going to want to start with something that supports those interests.

    They expressed interest in programming, right? Ask ’em what they want to program and find an environment that fits. The choice of language is probably less important than you think — hardly anyone still uses their first programming language anyway.

  43. I too say VB (or whatever that has become). The reason is that in my opinion the event driven model makes sense for a kid that age to grasp; its easy to tie it to a basic UI, and the syntactical rules pretty friendly. In a nutshell: Someone can actually create something attractive and useful relatively quickly. Attention span should be a consideration.

    I started with VB as a teenager and have done a variety of things since then. One of my original programs, that started as nothing more than a simple calculator/unit coverter (avaiation specific) is still floating around the web.

    Anyway I value results and usefulness over odd technical arguments any day; hence my opinion is not really deterred by the fact that its microsoft-dependent.

  44. I just bought my kid LEGO Mindstorms NXT.
    It costs $250, not cheap, considering free alternatives like python, ruby, scratch etc.
    But it has real robots! With movements, with sensors like sound (voice commands), touch, color (recognizing objects by color), ultrasonic (distance, image recognition). If your kids want entertainment path to programming, nothing could be more entertaining than that. Also there are lot’s of books with detailed step-by-step instructions on building different kinds of robots.

  45. Mindstorms robots also have bluetooth interface, that allows to control them with your cell phone.

  46. Apps for cell phones are a pain to write (J2ME, or BREW), and a bigger pain to deploy (need to get the app signed, that might cost money, some carriers don’t want you deploying apps, etc.). Probably the best way out is the iPhone route — a web app.

  47. How about processing (http://www.processing.org/)? It’s not as simple as some “learning” languages, but is still relatively simple, lets a user interface with complicated concepts (3D graphics, for example) with ease, and is visually stimulating. Documentation is rich, clear, and _free_.

    Python is a great language, but it’s a bit painful to start doing things that are “fun.” A few lines of processing will have them making fractals and all sorts of crazy things, without the pain of realizing they’re learning something at the same time.

    Just a thought.

  48. Definitely no to python, ruby, actionscript, and lisp. None of those are designed with beginners or kids in mind. Start with any of those and the kids will hate programming for the next 10 years.

    Alice is the one that research is showing is very effective with beginning non-CS undergrads who have no programming experience. It lets you do 3D programming with a drag & drop visual block syntax, so no syntax errors or case-sensitivity issues to worry about.

    If that turns out to be too tough or too boring for the kids, I’d fall back to Scratch from MIT, which is designed with even younger kids in mind.

    A bit above Alice are Netlogo, Starlogo, Processing, Javascript, and Visual Basic. NET. Of those, they’d probably have the most fun with Processing.

  49. I’d suggest PowerShell, Microsoft’s new shell. It has a lower conceptual count than VB, but will give them a taste of the power of automation. Ultimately, it’s extensible with CLR objects, so there’s a growth path if and when they want to become ambitious. Major disadvantage: no tutorial material.

    Otherwise, I’d suggest Ruby, which is very appropriate for Windows admin and has a growth path towards graphical applications with the development of Silverlight. Again, I’m not aware of Young Adult curricula, though.

    One wonders if the best approach might not be eToys, the Smalltalk environment in the OLPC / XO?

  50. Why is it important to start with a “beginner’s language?” I was exposed to turtle graphics, but didn’t really see the point. I did fine starting directly with C at 15 or 16, after only having a computer for a year or two. The fact that it was The Real Thing was motivating to me in a way that a toy language would not be.

    I’m not recommending C (probably too much administrivia…even for professionals) but would recommend removing anything from consideration whose sole virtue is “it’s a training / beginner language.” But maybe C isn’t so bad, since everything is explicit. HTML is also not a programming language, lacking even a rudimentary merge/include functionality.

    My opinion is that the issue is finding the best balance is between using a powerful language so that they get good habits of mind immediately (apparently LISP or something LISP-influenced) and using a simple language that doesn’t just boggle their minds (so a straight procedural language might be good). The tiebreaker may be that children think more flexibly than adults, so the functional programming paradigm (which I honestly don’t understand) might be easier if they are started on it rather than being first brain damaged with procedural thought patterns like I was.

    On the subject of scripting languages, Autohotkey is simple and fun, but maybe that’s because it’s C-like. It doesn’t seem like a good tool for learning programming, however.

  51. It would be helpful to know precisely why they want to learn some programming. Do they want to learn how to develop software, or just automate MySpace updates?

    If they actually want to learn about software development: VB.NET or C# and a copy of Code Complete by Steve Mcconnell. There’s not much else that is going to let them accomplish more faster. The editor and online documentation is designed to keep helpful information at your fingertips. And the .NET framework is fairly easy to understand and put to use while still being comprehensive. It’s important that they don’t get stuck in the mud while trying to write their first programs, and I think the entire .NET environment will keep them moving forward.

    Which syntax? Flip a coin. They’re so close to one another that anyone proficient in one can work in the other. (I can’t help but laugh when people argue about the two.)

    Stay away from VB6 as the .NET framework is a much better example of OOP.

  52. Hi, if kids get excited with mobile apps…

    Maybe the 2007 VB is Adobe Flash Lite, that kids could learn with ease and visually develop mobile applications blending with some actionscript. They’ve heard probably about Flash already so that could get the kids excited. I think t’s more about knowing that is possible to creating something from your imagination that acts as a motive. A powerful language in the beginning will be useless for them anyway…

    For mobile, also the fresh JavaFx Mobile sounds interesting:
    http://www.sun.com/software/javafx/mobile/index.jsp

    Faried Nawaz: For Symbian 60 3rd Edition signing the application is mandatory, you can allow your phone to run any application, although signing its free for freeware applications:

    https://www.symbiansigned.com/app/page/overview/freewareFaq

    http://www.forum.nokia.com/info/sw.nokia.com/id/5f6e9bc6-239a-4c8d-81d4-9256c5de1f9c/Freeware_opp_S60_1_1_en.pdf.html

  53. I think the issue with kids programming is how much they have to learn before then can do anything that interests them. With most languages you have to know a great deal before you can do anything that is of interest to an eleven year old.

    My 11 year old was teaching himself python. The syntax is very clean compared to any of the C family of languages. He spend some time writing programs that ask you your name and then insulted you. This got old after a while.

    Then he discovered he can create mods for a open source game called Battle of Wesnoth, which is not quite programming but closer than most things. He has been working on mods ever since and has done far more than I thought was possible with it.

    When he was 9 he started Stagecast and I highly recommend it. Stagecast is icon based and can be used to create games. You can quickly create a simple game (move your charature around a maze). The most complicated game we made was a pacman type game. It was a good way to get him to start thinking about basic programming issues like looping, branching and why isn’t this program doing what I want.

    From there we moved to Game Maker (windows only). This is also icon based though it has a scripting language you can use. Game Maker it much more complicated that Stagecast and you can create far more complicated games with it. Game Maker is a very rich program and there is a great deal you can do with it.

    He tried Alice and Scratch and while he was very excited by them, he never actually did anything with them.

  54. With all these comments about Python (among other similar languages), and links to projects like HacketyHack, etc. (in said other languages), I can’t believe I’m first to mention Guido Van Robot.

  55. I was going to make a similar response to Michael #63 before I saw his. I’d start with one of the Hollywood graphics CAD packages or a Video Game design package. Its very high level when you start. But then you fair quickly progress into the CAD scripting language to do complicated things (like writing macros in Excel). Then when you become a power-user you can attach your own subroutines written in a conventional computer programming language.

    Unfortunately I cant recommend a particular package because I havent used them that deeply, but I see them all the time at the SIGGRAPH exhibitions. The ones I use are for scientific visualisation, not entertainment, though the designs are similar. There are inexpensive low-end CAD things like Animation Master. Alternatively there are discount student versions of professional packages like Alias-Maya or Soft-Image which have watermarks or output limitations to prevent professional use.

  56. Comming form a 14-year old here is my opinion:

    Learn Basic or Javascript first, these are simple and are fun if your a real programmer, not a gammer. Then learn some simple stuff in Ruby. Later try to learn AS2, not AS3 (Flash languages), these can be really fun, and you can make games like the ones you play. Then your about ready to learn C++, but your would have to be dedicated (not just learn the basics). If you don’t like C++ or learn it well move onto Java.

    This is close to the route I took… I started when I was in 3rd grade, so yeah… I am learning C++ and Java now. But I would be using AS2 if it didn’t cost $600!!!

  57. I’ve been a software developer for, and started in personal computing in, 1977. I’ve seen many technologies rise and fall, but I’ve been able to stay ahead of the game financially and professionally by choosing what I will invest my time in very carefully.

    There are a couple of languages that have been in continuous use since I started in the field; all are in decline now, and yet each of them was enormously influential. These are C/C++, Smalltalk, and Basic (I don’t include Cobol because it has never been widely used in personal computing and is virtually dead). I would not advocate learning any of these languages for someone who wants to become a software developer. Rather, I recommend learning languages that took the best ideas of these progenitors and which are themselves reasonably mature now (that is, there’s a job market out there) and accessible (suitable as a first or second programming language).

    I’d recommend learning JavaScript first. It blends many of the greatest ideas of Smalltalk and Basic, with a few from C/C++ too. It is dynamic, object-oriented, reflective, interpretive, and easy to learn. Amazing things have been and can be done with JavaScript. It also runs on almost anything. Pocket PCs, Smartphones, laptops, desktops. Finally, it is a web language, and is used in the most contemporary websites.

    There are a few things that JavaScript isn’t so good for. For those things, I would recommend either, or both, Java and C#. These are very similar languages, and have equivalent capabilities. A programmer can become proficient in both, but is likely only to master one of them, due to the differences in class libraries and environments.

    Java and C# ,too, are inspired by Smalltalk, Basic, and C/C++. They exchange a bit of approachability and dynamism for better performance, suitability for server software development, and great robustness. Both are supported with a range of design and development tools, librarys, server side development frameworks, etc. Excellent employment opportunities exist for people with skills in these languages, and this will be true for many years.

  58. I just happened to stumble upon this post looking for some statistical analysis of the required languages for a novice (and paid) programmer in the major gaming fields.
    I’m fourteen, I just turned fourteen, I’ve just come from an entire year of being thirteen. I’m quite disappointed by a great deal of the comments here, I tried out Game Maker pretty recently, I was dead bored within five minutes. While true I’ve been programming for three years and just released a quick RPG in C++ and enter in an annual speedgame competition, but seriously, even when I was ten I felt underestimated. There’s a MASSIVE difference between a twelve year old and an eleven year old. Look at the senior programmers of today. They started in ASM, the kid’s not going to die if what he learns in doesn’t have a gui.
    My guess is the kids want games, but its quite possible that I’m wrong, we’re not given enough information as for the motivation. VB isn’t a bad choice as far as I know, I don’t have any experience with it, but I wouldn’t discount it. Something not mentioned yet is the language BlitzMax and BlitzBasic. http://www.blitzmax.com I learned in BlitzBasic and it was a great start for me, built in OpenGL and DirectX, Hello World isn’t tough (unlike Java, I looked at that program and it was a nightmare) its also pretty simple, but incredibly powerful.
    I personally have written a small game engine written entirely in BlitzMax, power is no concern.
    Its quite simple and logical, if they pick up a few programming books, with enough dedication they should be able to be making games within less than a week. Built-in OpenGL if they want to use it, but personally I prefer RPGs. There’s two books currently out for BlitzBasic as well as a pretty substantial community.
    Finally on habits. BlitzMax allows you to integrate quite a few C languages into the language, was written in C, and gets pretty close to C-Like performance. The syntax is also a lot like C, but without the lovely things called brackets and case sensitivity that are both lovely and confusing. If they want they can even get into pointers. That’s quite the line-up of advantages. Its also object-oriented without requiring them to immediately learn the foreign way of thinking.

Comments are closed.