Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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 Rizos 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 Rizos 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
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

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

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

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'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

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

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

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

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

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.