Domain: pine.fm
Stories and comments across the archive that link to pine.fm.
Comments · 17
-
Ruby!
I'd particularly recommend Ruby, even over Python. It's got very clean, elegant syntax, and its main disadvantages (performance, mostly) won't matter to him. He would be able to quickly get into web development too if he learned Rails.
I highly recommend the book Learn To Program by Chris Pine. It uses Ruby as a teaching language.
Ruby is truly purely object-oriented (no primitives) which helps with consistency and the principle of least surprise. It also does NOT have the whitespace-as-syntax 'issue' of Python. But, python is also a good choice. Ruby has nice functional aspects as well, which if he eventually learns how to use them, will make him a better programmer in any language.
Lua is used as the scripting engine for a lot of games, which might make it a good choice.
Scala is another alternative, though it might be a little tricky as a first language.
The advantages of higher-level languages like Ruby, Python, Lua, Scala etc. are that there's less code and less boilerplate, and while they're further from the metal than C, you can get meaningful stuff done faster, which may be a good thing for a 12 year old's attention span.
I'm a PhD student in computer science at Tufts University and our department is seriously rethinking how intro CS is taught at the undergrad level, so I've put some thought into this. Note that I would NOT make the same recommendations for a 12 year old as for a college freshman, necessarily.
-
Re:Consider Python
Now if only they would do a version of that book in Ruby...
:)Actually, there is a book like that for Ruby.
Chris Pine's "How to Program". Excellent intro text. Check it out:
-
Interactive Fiction and book suggestions
How about writing Interactive Fiction? Download Inform and he can go through the manual coding alongside it. It's not a traditional programming language, but the concepts are there and easily accessible. Graham's writing really shines in the manual and he explains a lot of complex programming very nicely.
If your kid isn't so much into the writing (or the text only, which is understandable) then I'd start him off with Learn to Program.
Although your kid is probably too old for many of the exercises and activities, but Computer Science Unplugged is a fantastic resource.
-
Lead programmer, Civilization III
I'm somewhat surprised that this crowd hasn't picked up that there is also a Chris Pine who was lead programmer for Civilization III, author of Learn to Program, and a current Opera employee.
-
Chris Pine... is there nothing he can't do?
I mean, Captain Kirk, ruby programmer, author.
What a stud. -
Re:Yes, but it's rails... ;)
Ruby or Python are probably the best places to start; they're not going to be suitable for every type of programming you do, but they might teach you some good habits before you learn other languages with horrific syntax and dangerous pointers, and you can get going very quickly.
For Ruby, there's Chris Pine's Learn to Program or Why the Lucky Stiff's Poignant Guide to Ruby which is whimsical, but does pretty much the same thing, or just go to Try Ruby and type help.
For Python there's Instant Hacking, or Useless Python and I'm sure many others. These two sites, like the Rails site, are written in PHP, but I wouldn't touch PHP with a barge-pole if you're learning just now, it's only useful for web apps and will teach you bad habits. -
Re:Yes, but it's rails... ;)
The answer is of course Ruby. You can start with Chris Pine's Learn to Program which walks you through the basics of Ruby programming, or for a more psychedelic way of learning programming there is always Why's poignant guide to ruby. Then when you get advanced enough (you've read the pickaxe and possibly the ruby way) you can start working on the bi-weekly Ruby Quiz.
/ruby fanboy -
Kids have to create something useful/interesting
I have an eight-year-old daughter and I recently started teaching her HTML and CSS (yes, I know, those are not programming languages). She created her own little website (hand-coded, none of this FrontPage/DreamWeaver stuff), and she was interested because she could see the immediate results and it was something useful (at least to her). Now she's getting interested in programming, so I'm starting her on Ruby. Why? Because Ruby is clean and elegant, easy to understand and write, and I like it. Also, because there's a good website called Learn to Program (http://pine.fm/LearnToProgram/) which is simple enough for her to understand. So we're going through that together. It's fun and all, but I'm starting to wonder, now what is she going to create that's going to keep her interest? When I was a teenager it was fun to create your own stuff because there was so much that hadn't been done. But now everything's been done and out there, so it's tougher. Why should she program her own computer calculator when she already has one? So I'm thinking that in order to keep her interested, I need to tie it in to her website somehow, so she can see visible results. That's leading me to think about introducing JavaScript to her. (I haven't come across any JavaScript tutorials/manuals that would be simple enough for her to understand, though I haven't done much of a search yet.) Either that, or set something up so that she can run little Ruby scripts on her website. (She's not ready for something like Rails yet, but I could just use eRB.) I'm not really sure though and I see myself coming up to a crossroads. Do I continue with Ruby, or switch to JavaScript or try to introduce both at once? I don't think she'll grow up to be a hacker -- she's much more artistic than mathematic. But I believe that a good understanding of computers, and some programming skills, expands her mind and will prove useful. (She's also using Linux, though she can dual-boot into Windows but never does. That's one reason why I wouldn't consider KPL because it's Windows-only, not to mention that it's not OSS.)
-
Chris Pine's 'Learn to Program'
This is mentioned in the article in parent's post:
http://pine.fm/LearnToProgram/
I'm going to give this to my niece when she's a bit older. -
Ruby is a good choice
Ruby is readable and pretty easy to grasp. There's even a free text, Learn to Program by Chris Pine, which takes the reader through the baby steps of learning to program.
-
Re:Programtic structure
Tutorials like http://pine.fm/LearnToProgram/ should be a good start for this.
-
Re:Entry Barrier
That's because you're trying to run before you can walk. Instead of trying to do full-blown Win32 apps as an entry, why not start with simple commandline apps. Try Ruby, Python, Javascript or even C.
Furthermore, the barrier becomes much more manageable if you start with a book written to make it more engaging, and clear. For example, Learn to Program, by Chris Pine, makes learning Ruby easy, manageable, and fun.
-
"Learn to Program" (with Ruby)
Chris Pine has written a book, which is also available online, called Learn to Program which uses ruby to teach basic programming concepts. In addition to the book, he offers his thoughts behind introducing students to programming, and why ruby is a good language to choose. I enjoyed his book, and I generally agree with his ideas on teaching.
I still think that if the student wants to understand how a computer works, there is much insight to be gained from using a low level declarative language like C, and this should probably be the next language she learns. However, as a first language I would go with ruby (and definitely not VB). With ruby, the introduction is easy, with intuitive syntax and no steep learning curve, and yet as the student's skills progress, she is free to experiment with more advanced programming concepts like lazy evaluation and currying.
-
Re:No.
For that *simple* language let me recommend Ruby. There's a great "learn to program" book online that uses Ruby here.
-
Another good intro
If you're new to programming (or your kid or sibling is), there is a great introduction to programming (that happens to use ruby) at:
Learn to program, by Chris Pine
Check it out. It's really fantastic.
-
Re:Is it ok as a beginner's langage ?
So, is it ok as a beginner langage ?
For a tutorial, check out Why's Poignant Guide to Ruby, or if that's just a bit too bizarre you might have a look at this Ruby tutorial. -
Re:The solution: Ruby
Ruby is a good choice for a language, but I'd get started with this tutorial.