tags:

views:

447

answers:

8

My brother would like to learn some programming to find out if he'd enjoy doing it. He's 16 and doesn't know much about computers in general and knows nothing about programming in particular.

I'm thinking about picking either Alice or Python. I see Think Python is the often recommended read, but isn't it a bit too much (size-wise) for a beginner? It's certainly not too complicated, but I'm not that optimistic about my brother... :) Anything else he could try that would be smaller and VERY simple?

Also, has anyone had any experience with Alice? I myself wouldn't really want to start programming this way, but I can see why the visual aspect might be more attractive to certain people. I'm just not sure how limiting it is and if the time used learning the pseudo language wouldn't be better spent learning a real one.

EDIT: Thank you for your replies. I guess we'll go with Python. However, as I mentioned above, isn't "Think Python" a bit too extensive for a complete "newbie"? Any other, but simpler Python programming introductions you could recommend?

A: 

Having gone through the Alice website, I wouldn't be too hopeful, it seems like a platform for a bunch of people to charge for texts, and workshops. Really, python has a billion beginner tutorials and that'll pay off. While Alice will remain relatively unknown. Much depends upon what your brother, not you, want to accomplish. Does he want to 'learn' programming? Or maybe he sits on facebook all day, and would benefit from learning php so he can do things against the facebook API, or what have you. I would worry more about the activity, than the language he starts with. Assuming, he's got someone to ask questions.

And about the best thing you can do is have some confidence in him, and encourage your brother.

Saem
+5  A: 

The advantage of Python is that - should he be bitten by the bug - there's massive a community and lots of resources to drawn on and explore.

If he's not bitten by Python, then programming might be a hard sell anyway, so I don't see the advantage of starting on logo-likes, even 3D ones like Alice. Alice can of course be fun, as can writing Lua scripts to extend a mainstream game title. But all the hardcore programmers in their thirties now seem to have started on Turbo Pascal or even assembler when they were around 16, and Python offers an approachable modern-day equiv.

Will
+1 for the Python community - not only large, but incredibly friendly and welcoming to beginners. It's centered around the comp.lang.python newsgroup / python-list mailing list (they are the same thing, mirrored via mail/news gateway).
RichieHindle
+4  A: 

Use Python. It's very simple. It will let you make "Hello World" in one line, and also let you do any range of powerful things down the road.

It's great for beginners because of the minimalist syntax, and it also forces you to indent your code properly.

Even a non-programmer can understand Python:

print "hello world"

you = True
if you:
  print "I bet you think this program is about you, don't you, don't you?"

a = 1
b = 1
c = a + b

Another nice thing about Python is it is interpreted, so you can open up a terminal and just play around.

Andrew Johnson
+2  A: 

I've never used (or even heard of) Alice, but I second your thought that it's better spending the time learning a real language.

Rather than going through a whole book, he may prefer to do something practical. One great possibility is PyGame, a whole framework for producing games in Python - that might appeal to him and get him interested.

Daniel Roseman
+1  A: 

Alice seems a bit young for a 16 year old guy... I (being a 16 year old guy) would not want to learn in a way that seems patronizing... lol.

A lot of people start with Python, and its a great way to get into programming. When I was 14, I started with web development, which lead to PHP, which lead to javascript. Then I branched off and learned C for memory management in a lower level language, and then Ruby + Python to learn another interpreted language then Scheme to learn the functional paradigm, then Objective-C and then Java, C++ and C#. So it depends what he wants to focus on. If he wants to do web work, I suggest he learn HTML (it is a great way to get into computers without being a real "language"), then PHP (even though a lot of people here don't like it, its a good first language) and then javascript and possibly Ruby. If he wants to get into Windows programming, I suggest he learn C, C++ and C# and Python, starting with Python (or C if he daring...). If he wants to learn Mac Programming, learn C, Objective-C and either Ruby or Python. Then you can branch off from there. Some people recommend Java as a first language... I'm not a huge java fan, but it is a very good candidate.

I found that a fantastic way to learn (especially when your younger) is through video tutorials. I learned PHP through Lynda.com tutorials. They are great and cover the basics and beyond. You can get a free trial (http://www.lynda.com/promo/freepass/Default.aspx?lpk35=240) and try it out. I think that is one of the best ways to go IMHO. Once you know the basics through the video series, you can go on to reading manuals for other languages (like Python), but manuals can be daunting if its your first time. Depends what kind of learner he is.

You can learn some bad practice in PHP, so its best to watch the series to get some programming basics, then go on to read about another languages.

If he'd rather learn C first (some people prefer learning it first) http://vtc.com/ has a great C series of video tutorials.

Good luck!

micmoo
+2  A: 

My wife Anna, who's very skilful and experienced in training people (especially newbies and kids) as well as a Python semi-guru (I'm the other half, but not a training expert), hotly recommends the book "Hello World" -- I haven't read that book myself (nor do I know much about training newbies or kids, I've only taught professionals, engineering students in college, etc) -- but I've seen her going through it with a highlighter (using it heavily while nodding her head vigorously and making approbatory remarks) and many enthusiastic comments have emerged from her about it.

Alex Martelli
A: 

If you don't mind spending some money on a book (about $20 from Amazon.com), you could try Python Programming for the Absolute Beginner by Michael Dawson. I have skimmed it (a coworker's copy) and it is extremely basic, assuming no programming experience. It's written in an approachable, casual style; and builds up gradually to games with Pygame. Obviously it's best if you can find it at a brick-and-mortar store to check it out yourself.

Quick general recommendation in case you haven't already thought of it: Use Python 2.x rather than 3.x. The book I mentioned, and probably 98% of all other existing books, tutorials, and third-party modules (including, crucially, Pygame) have not yet switched over to 3.x, and probably will not for at least a few more years.

[Oh, and I was just reminded of another beginner book candidate while checking out the Pygame site to confirm that it doesn't work with Python 3.x: Hello World! Computer Programming for Kids and Other Beginners by Warren D. Sande and Carter Sande. I have not personally seen this book at all, but Guido van Rossum himself has reviewed it. It strikes me as a bit too kid-focused for a 16-year-old, but it may be worth checking out.]

John Y
The book in my addendum is the same as the one Alex Martelli recommended just before I finished composing my answer.
John Y
A: 

I think programmers are the last group of people you should ask for such advice. Mostly because you'll get fairly predictable responses about how Alice and the visual interface seems condescending, and why would one not just learn how to do it the proper way. I've often used the "python as executable pseudocode" line myself. But, beleive it or not, there are many, many people out there who don't grok pseudocode all that quickly and give up on programming. To a large degree, most people on this forum are programmers because they "got it" pretty quickly.

You know your brother best, and might choose or tailor an approach best suited to the way he grasps ideas, concepts, etc. In evaluating Alice, you should at least consider the actual studies and papers written by educators:

Also see the answers by John Y and Alex Martelli, which consider the opinion of other educators.

(Incidentally, one of the people behind Alice was the late Randy Pausch of CMU, who made headlines a while back based on his "last lecture".)

ars