Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

So, I'm trying to teach my much younger cousin a little bit about programming. My initial thought was something like Scratch or Alice, but there were a few downsides to that.

  • Everyone seems to be really in to game programming and developing video games (because everyone loves playing video games, and as far as playing video games goes, playing your own can be the most rewarding) - but neither Alice nor Scratch seem to cater to game development

  • Alice and Scratch seem too childish, while I'm sure my cousin would enjoy dabbling in it, I think he'd quickly bore of it

  • I want a language that can be used to develop really cool stuff that will impress his friends. I remember writing BASIC back in the day and inviting all my friends over and showing off my creation, and I just feel like Alice and Scratch just don't appeal in the same way

  • I want a language that requires my cousin to write code. Now, this isn't just because I think typing code out is good preparation for other programming languages, but it's because it gives him an opportunity to actually practice typing, and maybe get used to some of the slightly more esoteric characters on the keyboard

Now, that's why I don't want to choose Alice or Scratch.

I also don't want to pick a language like C or Java, or even Python or Ruby for that matter. My cousin has already imparted to me that he enjoys playing video games and wants to make his own, and that he enjoys using computers. In my opinion, even a simple language like Python or Ruby simply takes too long to build cool stuff. Ideally, he'd sit down, spend around a day or two (or maybe even up to a week, but hopefully less than that) and have a working, 2-dimensional game. I'm not saying you can't do it in Python or Ruby, but I'm just saying it would be difficult for a first-time programmer. Plus, I don't want to bog him down with all the computer science stuff, as that can come later. I just want to help him create the spark, and then let him carry on with the rest of the fire.

I've looked at languages like Lua, and while it seems common in game programming, I'm not sure if it's the best pick - but if you guys think otherwise, please let me know.

I've also looked at a language like Blitz and it looks really promising (plus, I tried it out a few years ago, and it was really quite nice). The downside is that I have to pay, something I'm definitively against.

I've looked at SmallBasic, which seems promising and I'll continue looking at. But I haven't done much (in fact, I'm running the installer as I type this, so I'll report my thoughts on it shortly).

UPDATE: I gave SmallBasic a quick try and it seems intriguing, but it also seems quite different compared to some other languages - that's not a bad thing, but it just is an unusual. Out of the things I've looked at, Blitz is still my favorite, but I refuse to go there because of the cost.

But basically, what do you guys think of what I've said so far, and the languages I've looked at and do you know of any other, good alternatives?


UPDATE: Here's what I've chosen to do...

I've realized that while I would love to help my cousin, I can't be with him all the time, and I can't help him every time he needs help. So, I wanted to choose something that has a good documentation, a good community, and a good book he can follow.

Anyways, I've chosen Python and Pygame. Python is a language I'm fairly familiar with, plus I know there is a pretty good (and pretty large) community around Python. Furthermore, I know that the Python documentation is fairly complete and easy to navigate. Pygame also has an excellent documentation and set of tutorials. I'm also having him use/follow Invent Your Own Computer Games with Python, which seems like a very good book, I bought him a hard copy as a Christmas present, plus I know that his monitor isn't huge, and it would be inconvenient to constantly swap back between the text and the editor.

I think it should go well!

EDIT: I don't want to imply that my choice is final or that it is correct. I just think it's the best fit for this situation. I think each person looking to teach someone younger should browse the selection and find the best solution for the individual person, considering things like age, skill level, and interest.

share

locked by World Engineer Jun 10 '13 at 23:57

This question exists because it has historical significance, but it is not considered a good, on-topic question for this site, so please do not use it as evidence that you can ask similar questions here. This question and its answers are frozen and cannot be changed. More info: help center.

closed as not constructive by MichaelT, gnat, Bart van Ingen Schenau, GlenH7, World Engineer Jun 10 '13 at 23:57

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

15  
+1 I want a language that can be used to develop really cool stuff that will impress his friends. That's still my primary motivation for programming, after 25 years at it... – Yannis Dec 23 '11 at 9:22
2  
+1 For knowing where to stop when teaching somebody younger. No boring computer science, just the cool results. "create the spark, and then let him carry on with the rest of the fire." – AndyBursh Dec 23 '11 at 9:28
1  
@Bob I've being working as a web developer for well over a decade, but only recently involved in something people actually use directly. I've been doing deep back end stuff for far too long. Although my official response is that my motivation is my deep love for problem solving, blah blah blah, the past year was the first in my professional life that I had the chance to hear from random people that they are actually using what I'm building, and it helped them in some small way. The feeling is awesome! Hope your cousin finds programming as exciting as we do... – Yannis Dec 23 '11 at 9:41
1  
@MahmoudHossam I'll definitely let you know – Bob Dec 23 '11 at 18:29
3  

19 Answers 19

up vote 12 down vote accepted

Looks like no one has thrown out Python+Pygame. Depending on your cousins age/maturity it certainly opens the possibility of a lot of cool stuff. That's certainly basic enough to get started, but with its huge standard libary, you can't really get bored with Python.

share

I think the modern-day equivalent of BASIC is Javascript. Give him a simple HTML page that has an embedded script that creates a canvas and draws a shape on it, point him at some tutorials and see what happens. Quick turnaround (save your changes and refresh the page) and decent debugging support.

share
    
an added plus is that he can instantly share w/ friends too – bunglestink Dec 23 '11 at 17:24
    
HTML5 games are a hot topic for mobile gaming industry, due to its (future?) portability / platform independence. Another is WebGL which I believe is less common. New toolkits for them are appearing daily. – mctylr Dec 23 '11 at 18:44
    
This is an interesting idea, and I think web development is definitely a good skill. I'll have to think about it, but it seems interesting. – Bob Dec 23 '11 at 19:24
5  
I don't entirely agree. Javascript is quite a bit harder to learn than Basic is / was (not that I know Basic, mind), and if you want to combine it with a webpage, you have to learn about HTML and web technologies as well. Simpler beginnings (I think) would be in server-side Javascript, for example combining with NodeJS as a lightweight execution environment, or another commandline JS interpreter. – Cthulhu Dec 24 '11 at 12:42
    
+1 for JavaScript - yes, the HTML(5) part is additional learning to do, but again, HTML is quite simple - I remember learning to make an HTML button and showing off when I was learning GWBasic :) – yati sagade Dec 24 '11 at 18:27

Not a programming language explicitly for gaming, but very cool graphical effects can be done using rather little code with processing. Plus, it's free and relatively easy to learn. IMHO an ideal language to learn the basics of programming, especially since the tutorials teach many of the basic concepts like variables, arrays, math operations etc.

share
    
I think a key point is the availability of tutorials. I taught myself programming with a copy of Dave Ahl's 101 BASIC Computer Games, and the key (for me) was seeing the code and sample output together. I found it a lot easier to work backwards from the output to figure out how something was done than to be told "do this, and watch what happens". – TMN Dec 23 '11 at 13:32

I haven't played with it in a year or two, but using C# with XNA could be a good place to start. From what I remember, getting started with it is quite easy. Though that link is probably more for you than him.

share
1  
I actually have some first hand experience both with C# and XNA (I worked with C# in a past job). I think it's a great recommendation, but I'm not sure if it's a little bit too advanced for him. He might be able to do it, but most kids want real results for minimal effort and "learning overhead". – Bob Dec 23 '11 at 9:38
    
Since it's a .NET library, I would assume it's also available for use in VB, which would reduce the 'learning overhead' of C# by some. – AndyBursh Dec 23 '11 at 9:45
3  
@AndyBursh when I was forced to learn VB, it gave me headaches until I stopped. I haven't ever touched it since. – codesparkle Dec 23 '11 at 10:52
    
@codesparkle I completely agree, VB as a language is annoying as all hell. However, it's quite easy to read and write simple stuff, so it's often a nice introductory language. Sadly, the language has some awful idiosyncrasies, such as the awful code you have to write to cast from A to B! – AndyBursh Dec 23 '11 at 11:07
    
XNA is indeed a bit to advanced to start with. I did, until I found Unity, which uses the same language but has a much more visual approach, with much quicker results. @AndyBursh: It's not available for VB.NET, only C#.NET – Simon Verbeke Dec 23 '11 at 13:14

Try Greenfoot,

Image

Its java based and there are all these totorials for using it on Youtube.

greenfoot provides a good top-down approach meant for a beginner.

see this stackoverflow answer, the thing i noted there was "Children, in fact, are the fastest learners and they do so by pattern-matching, extrapolation, interpolation, etc.."

so after using java in greenfoot for a while later concepts will be easier to understand just because it feels familiar.

share
    
Greenfoot looks like a pretty neat project. I'm not a huge fan of Java as a first language, but Greenfoot actually makes it simple enough for young programmers. I'm still playing around with it, but I think it could be the one. – Bob Dec 23 '11 at 10:23
    
@bob Anything that gets you writing code and solving interesting problems quickly should be a good choice. – Siamore Dec 23 '11 at 11:47
    
This looks like a really cool project – KallDrexx Dec 23 '11 at 15:51
    
"stackoverflow answer" you refer to has been deleted and link doesn't work anymore, would you mind updating the answer? – gnat Jun 10 '13 at 21:11

Sounds like a typical case for modding. Many games are very flexible and extendable, from the good old Quake I (with its QuakeC language) to TES IV Oblivion, or dozens of titles that can be extended with Lua.

Another option is Second Life - it is a very flexible world where one can build games, simulations, demos, whatever else with a nice and clean scripting language.

share
    
I would agree for the most part, but I think he wants to create his own games. I think this is more of a case by case scenario, but my cousin and his friends aren't into games that lend themselves to modding very well... Plus, I think half the fun is building something (mostly) from scratch. Saying "hey (dad or friend) look at this game that I made all by myself" is different then saying "hey look, I made a mod for this game that I hardly play" – Bob Dec 23 '11 at 9:30
    
What I'm trying to say is that kids want to take pride in their work, build things from scratch, and build things easily that produce pretty cool results. I think game modding might be better oriented for teens. – Bob Dec 23 '11 at 9:37
    
@Bob, with Second Life you can create your own games, using as much of the already available functionality as you want. It is just a platform. And it is free. And some of the game mods are entirely new games, with nearly nothing in common with their underlying platform. – SK-logic Dec 23 '11 at 9:43
    
@Bob, as for building something entirely from scratch, a language choice should be the last thing to consider. A platform and libraries would be more important. I'd suggest XNA in this case (with a choice of any of the .NET languages on top of it). – SK-logic Dec 23 '11 at 9:45
    
Alright, the Second Life idea actually sounds pretty cool. I'll definitely take a look at it. Thanks for the suggestion! As a former .NET developer, I definitely considered it, but I don't want to choose something overly complex for a younger audience. But I'll definitely look into it. – Bob Dec 23 '11 at 9:45

I'm currently an avid user of Game Maker. - While the full version isn't free ($40) the free version is enough to taste the basics of game design. It has enough "content" for somebody new to stay busy for a few years. If I would have to place it somewhere, I'd place it somewhere between modding & languages such as python.

It has several methods of writing. You can use "drag and drop icons", and a much more advanced "scripting language" (GML). I never understand why people wish to "write code" so much - I see drag and drop just as a way of visualizing code.

Another advantage of gamemaker -and the reason that after learning other languages, and 10 years of experience I stick to gamemaker- is that it helps organizing a game: It has several resources, an event system etc etc.
It's not the ideal tool to create the next world of warcraft, however to impress others it's more important to create SOMETHING.

I can't really recommend on other choices - as I personally am happy with gamemaker and nowadays take more interest into learning general purpose languages.

share
    
+1 I discovered Game Maker in high school and had a lot of fun with it. While there's not a lot of required coding you can ease your way into it as it exposes you to variables and you can set formulas to change those variables when certain events happen. The built-in collision events alone allow for loads of creative game making. The built-in template games allow for helpful modding. I've made primitive side-scrollers, top-downs, a block breaker type game... lots of fun. – joshuahedlund Dec 23 '11 at 17:25

The thing that thousands of people are developing games in is Flash. The "official" Flash development package from Adobe costs money, but there are free alternatives; FlashDevelop took me less than an hour to find, download, get running, and get a "Hello World" flash going. The Flixel library provides good supporting functions for games, including physics, particles, easy level creation for platformers, has lots of samples, and is easy to set up.

share

FWIW, I purchased my cousin "Land of LISP" for this same purpose. The book is illustrated with cartoons and is all about creating games in LISP. My cousin only wanted to create text-based games, though, but I think the book will give him a good introduction to programming.

share
    
I've read Land of Lisp and it is a cool book, but I don't know if Lisp is always the best starting place for youngsters. The syntax is comprised mostly of parentheses which would seem simple, but I think it gets confusing pretty quickly, especially when you're a kid. – Bob Dec 23 '11 at 18:36
    
For text-based games, you should introduce your cousin to Inform or TADS – user16764 Dec 24 '11 at 22:14
    
@user16764 Thanks for the suggestion, I think it'll be a great way for him to model his ideas! – Bob Dec 25 '11 at 22:25

The language I got started with was Dark Basic Pro . I moved away from it kinda quick because game development isn't my cup of tea, but it was a powerful language. I haven't messed with it in quite a few years now so I'm not sure how good it is now(I last used it when DirectX 9 was new and cutting edge). But it allows you to quickly get started coding and making fancy 3D graphics with just a bit of code (and also, it's pure code.)

share
    
Dark Basic seems pretty neat, and it seems similar in it's goal to Blitz, but you still have to pay for it. – Bob Dec 25 '11 at 22:23

One of the hardest part about game development, althought less prevalent in 2D game development is creating graphics. So assuming your cousin doesn't need to deal with creating art assests, or happens to be very good at 2D art, then I think the goal is achievable.

I'd suggest you use python along with pygame to get started. I know you had reservations about python, but hear me out. Python is a very simple language. I would argue that the lack of strict typing makes it a far better choice than something like C# to begin with.

Prototype based languages are cool and some people find them very easy to pick up, however I don't think that people really understand the concepts of how objects works in prototype based languages as easily as they can grok the class/object paradigm.

Pygame also has numerous examples that your cousin and you could go over to learn the basics, and is in many ways a very simple framework, not hiding so much from you as to make you have to learn a lot of the framework to do more complicated things.

Perhaps after a game written in pygame, you can move onto writing games that also integrate with a 2d physics engine like box2d, which has excellent python bindings.

As for teaching your cousin python, I'd stray away from getting him to learn the language first, perhaps a crash course in the class/object ideas. Then some basic syntax of the language, before throwing him in the deep end, and having him/her look up the syntax and/or libraries when he/she needs something.

Finally another good thing about python, is that you can easily move onto 3d game engines while keeping your skills with engines like panda3d, or even unity (Boo is very similar to python).

share

Lua and LÖVE. Lua is one of the simplest languages available. The LÖVE framework is optimized for 2D games. It also has an OpenGL backend, with the performance and other benefits that that brings.

share

You might want to try the Unreal Development Kit (Features). It might be a bit hard to learn about the interface. But the great thing about this is that it also has a visual scripting engine, so you don't need to be able to program to make something. He can then make something and program small parts of it himself. A downside might be that it uses its own scripting language.

Another engine I really like is Unity3D (Features). Unity doesn't have visual programming, but is does use two common languages: C# and JavaScript. It also supports a python dialect called Boo. These three can inter-operate. Unity also comes with a lot of finished scripts.

share
    
If the target is their own game with 3D graphics, this is the best approach IMO. Many/most of the major game toolkits have free versions (some require you own a registered version of their primary game). Most extend from modding to creating entirely new game environments. Several (not all): Playground, Havok, and Value Source. There are plenty more I can't think of right now. – mctylr Dec 23 '11 at 18:39
    
Unity and Unreal are both really cool, but I think the target age starts in the teens, which is a little too old. – Bob Dec 25 '11 at 22:26
    
@Bob: I don't think you mentioned any age, so I wasn't sure what to propose :) – Simon Verbeke Dec 26 '11 at 11:49

There is a Haskell library called Gloss, which has a really simple interface and has been used to teach children:

http://cdsmith.wordpress.com/2011/09/28/haskell-for-kids-week-7/

It can be tried online too:

http://dac4.designacourse.com:8000/anim

share

I know that you are looking for free languages and there are some good suggestions by other posters. Since you are concerned about getting interesting results, fast and since Blitz seems like the kind of thing you'd like, except for the cost, I'd like to suggest Phrogram. This used to be KPL (which was free). It isn't free, but it's cheaper than Blitz and it has many of the same features that I think make it very suitable to use as a teaching language, especially for teenagers.

You can do some pretty sophisticated stuff with Phrogram and there is a pretty well established community of Phrogram and KPL users who have posted lots of code to learn from.

share
    
Phogram looks cool, and I'm not really set-in-stone against paying, but I would prefer free options. I will do the trial and see how it compares to DarkBasic and Blitz. – Bob Dec 23 '11 at 18:37

Lots of good suggestions here, I'll just give a shout out to RoboCode. There are lots of examples to tweak, and you can be up and running in just a few minutes. It'll give him the flavor of programming, but he's not likely to learn the nuts and bolts of actually writing a program from scratch. It's also Java based, for what that's worth.

share

I can't understand how no one talks about Games Factory! This is one of the best resources to build quickly a computer game, without a knowledge of programming.
http://www.clickteam.com/website/usa/downloads/index/7
It consists of the story board editor - with frames. You put different objects which can be controleed by various ways by the player (Platform movement, 8 direction, etc..)
The most important aspect is the event editor - it is a huge matrix, which you use to define what happens from pre-defined rules(Like - object(1) moved to end of screen, location of object is > 100, etc...).

share

Go with Unity3D...

there is no need to be afraid coding in it... and there is to much thing in that you don't need to code... samples will make your cousin happy.

also there are some videos... nice to be watched walkerboystudio.com/html/unity_training_free.html

share

http://news.bbc.co.uk/2/hi/programmes/click_online/9658183.stm

The BBC program Click showed a website where you can create Flash based game without needing to know a programming language.

http://www.stencyl.com/

share

Not the answer you're looking for? Browse other questions tagged or ask your own question.