Comments on: Machine Code is for kids! I agree with the author, by learning assembler, the kids get a good understanding of the machine. Not as a magic box but as the device that makes them rule! I agree with the author, by learning assembler, the kids get a good understanding of the machine. Not as a magic box but as the device that makes them rule!

]]>
By: Peter Wone/2011/03/24/machine-code-is-for-kids/#comment-6327 Peter Wone Sat, 25 Jun 2011 15:11:31 +0000 Or maybe even Brandy, a C port of BBC BASIC V: http://jaguar.orpheusweb.co.uk/branpage.html Or maybe even Brandy, a C port of BBC BASIC V:

@Rob: cheers for Acorn Lemmings, thought it was a really good conversion, was hard to spot any differences from the original, good job! I'll just chip in and say that BBC BASIC is excellent tool for teaching kids to learn, especially considering as other people have mentioned you can drop opcodes straight in. Perhaps a good way to teach kids the basic's (excuse the pun) would be BeebEm? @Rob: cheers for Acorn Lemmings, thought it was a really good conversion, was hard to spot any differences from the original, good job!

I’ll just chip in and say that BBC BASIC is excellent tool for teaching kids to learn, especially considering as other people have mentioned you can drop opcodes straight in.

Perhaps a good way to teach kids the basic’s (excuse the pun) would be BeebEm?

]]>
By: Noel/2011/03/24/machine-code-is-for-kids/#comment-2656 Noel Tue, 12 Apr 2011 21:23:33 +0000 FYI, Microsoft does release a BASIC for kids called Small Basic. Not sure if it’s what you’re looking for, though, in your conclusion.

]]> By: Jan/2011/03/24/machine-code-is-for-kids/#comment-2108 Jan Tue, 29 Mar 2011 05:07:42 +0000 My article isn't about what you should learn as a first language as much as, what *can* you learn as a first language when you are 10 years old or younger. Once kids get to 15-20yrs old they should be able to learn most languages as their abstract thought processes will have begun to develop. I see plenty of resumes from people who have learnt java/javascript/flash script during this period in their lives. My article is about the physical learning limitations that are inherent in younger kids. A language like LOGO is actually almost a perfect first step I think. One of the programmers here at Q got his 6yr old kid playing around with one of the logo links in the comments section here and he was having fun and understanding it. However, he tried getting his kid to understand "Processing" (deemed a "simple" and expressive "visual" language) and he just couldn't get into it, there are too many abstract concepts involved right from the get-go. (what are brackets for? what are semi-colons for?) With LOGO apparently he got the hang of the LOOP/REPEAT construct immediately (in the way anyone can grasp 10 PRINT "HELLO MUM" 20 GOTO 10 immediately as I mention in the article). My article isn’t about what you should learn as a first language as much as, what *can* you learn as a first language when you are 10 years old or younger.

Once kids get to 15-20yrs old they should be able to learn most languages as their abstract thought processes will have begun to develop. I see plenty of resumes from people who have learnt java/javascript/flash script during this period in their lives. My article is about the physical learning limitations that are inherent in younger kids. A language like LOGO is actually almost a perfect first step I think. One of the programmers here at Q got his 6yr old kid playing around with one of the logo links in the comments section here and he was having fun and understanding it. However, he tried getting his kid to understand “Processing” (deemed a “simple” and expressive “visual” language) and he just couldn’t get into it, there are too many abstract concepts involved right from the get-go. (what are brackets for? what are semi-colons for?) With LOGO apparently he got the hang of the LOOP/REPEAT construct immediately (in the way anyone can grasp 10 PRINT “HELLO MUM” 20 GOTO 10 immediately as I mention in the article).

]]>
By: Hans/2011/03/24/machine-code-is-for-kids/#comment-2086 Hans Mon, 28 Mar 2011 18:05:56 +0000 Key moments for me (back in Apple IIe days): The Learning Company's sequence of Gertrude's Secrets, Rocky's Boots and Robot Odyssey - amazing depth & complexity. You can still find old disk images for emulators and someone ported RO a few years back as well. Logic gates! LOGO, making Spirograph-type stuff on screen. Seeing a LOGO robot 'turtle' do the same things in real life. A programmable robot dump truck. Keying in BASIC programs, interrupting programs I'd loaded from floppies and LISTing them to look under the hood and see what made them tick, making small changes, breaking things, trying again, fixing them, etc. Dropping into assembly to mess around. Taking a week-long 65C02 class at a summer camp. Learning how to use a disk editing tool (Locksmith 6) to bit-edit character files in Bard's Tale to max out my characters' XP and put items in their inventory. Much later, building our own 68HC11 interface boards and making circuits that'd let programs interact with the real world via sensors, make interactive art, etc. Then embedding behaviors via code in PIC chips. The LEGO robotics stuff and Arduino came a lot later but I think those are also great modern-day ways to teach kids how to think logically and make neat stuff happen. Key moments for me (back in Apple IIe days):

The Learning Company’s sequence of Gertrude’s Secrets, Rocky’s Boots and Robot Odyssey – amazing depth & complexity. You can still find old disk images for emulators and someone ported RO a few years back as well. Logic gates!

LOGO, making Spirograph-type stuff on screen. Seeing a LOGO robot ‘turtle’ do the same things in real life. A programmable robot dump truck.

Keying in BASIC programs, interrupting programs I’d loaded from floppies and LISTing them to look under the hood and see what made them tick, making small changes, breaking things, trying again, fixing them, etc.

Dropping into assembly to mess around. Taking a week-long 65C02 class at a summer camp. Learning how to use a disk editing tool (Locksmith 6) to bit-edit character files in Bard’s Tale to max out my characters’ XP and put items in their inventory.

Much later, building our own 68HC11 interface boards and making circuits that’d let programs interact with the real world via sensors, make interactive art, etc. Then embedding behaviors via code in PIC chips.

The LEGO robotics stuff and Arduino came a lot later but I think those are also great modern-day ways to teach kids how to think logically and make neat stuff happen.

]]>
By: ARVI/2011/03/24/machine-code-is-for-kids/#comment-2036 ARVI Sun, 27 Mar 2011 16:07:00 +0000 You can try but you're kind of missing the point I was making regarding children and abstract thought. Besides, if Ruby was good for 10yr olds we would already be seeing professionals who learnt Ruby when they were still in kindergarten and we don't see that at all. What we do see are thousands of very good programmers who learnt assembler at very young ages. We're not seeing the same take-up at such young ages of modern languages (based on resumes I receive) and my theory (based on some interesting paragraphs in Richard Dawkins books on evolution) is that it is because kids' brains aren't wired for abstract thought. Functional languages and "pure" languages such as Ruby are extremely abstract. BASIC and assembly have far more rigid down to earth concepts such as "GOTO" and variables that aren't scoped, almost no encapsulation whatsoever as it happens. I'm not saying you couldn't teach a kid *eventually* how to program in C++ or Ruby (or any other language), but it would require a lot more time and the speed of learning would be impaired as a result. Kids get bored if their learning is slow so you lose impetus and the critical mass to generate the drive for self-learning will be lost. You can try but you’re kind of missing the point I was making regarding children and abstract thought.

Besides, if Ruby was good for 10yr olds we would already be seeing professionals who learnt Ruby when they were still in kindergarten and we don’t see that at all. What we do see are thousands of very good programmers who learnt assembler at very young ages. We’re not seeing the same take-up at such young ages of modern languages (based on resumes I receive) and my theory (based on some interesting paragraphs in Richard Dawkins books on evolution) is that it is because kids’ brains aren’t wired for abstract thought. Functional languages and “pure” languages such as Ruby are extremely abstract. BASIC and assembly have far more rigid down to earth concepts such as “GOTO” and variables that aren’t scoped, almost no encapsulation whatsoever as it happens. I’m not saying you couldn’t teach a kid *eventually* how to program in C++ or Ruby (or any other language), but it would require a lot more time and the speed of learning would be impaired as a result. Kids get bored if their learning is slow so you lose impetus and the critical mass to generate the drive for self-learning will be lost.

]]>
By: Dan Olson/2011/03/24/machine-code-is-for-kids/#comment-2031 Dan Olson Sun, 27 Mar 2011 10:09:33 +0000 is a pretty intriguing book and I’d like to see how a complete noob to programming handles it. Forth or Factor could be another interesting choice… mostly because I feel that the reason I don’t understand those is because I’ve got a couple decades of stuff to unlearn about programming.

I started in assembly and basic myself, moved on to C. I still lack a good background in functional programming, sadly. I don’t imagine the order in which we learned things really matters so long as we understand what’s going on in each context.

]]>
By: Mike Tedder/2011/03/24/machine-code-is-for-kids/#comment-2019 Mike Tedder Sat, 26 Mar 2011 14:44:25 +0000 yup, that's Krister Wombell, do you know him? yup, that’s Krister Wombell, do you know him?

]]>
By: Dylan Cuthbert/2011/03/24/machine-code-is-for-kids/#comment-2009 Dylan Cuthbert Sat, 26 Mar 2011 10:58:11 +0000 Nice article, Dylan! I definitely agree with you with abstraction being difficult to grasp for kids. Even I was interested in 6502 assembly when I had my Apple IIe, as BASIC was pretty limited, but I never got far into it as school started teaching us Pascal (which I absolutely hated and ended up learning C by myself)... By the way, is that Krister in the foreground there? Not quite sure, but it looks like him from the back side. :) Nice article, Dylan! I definitely agree with you with abstraction being difficult to grasp for kids. Even I was interested in 6502 assembly when I had my Apple IIe, as BASIC was pretty limited, but I never got far into it as school started teaching us Pascal (which I absolutely hated and ended up learning C by myself)…

By the way, is that Krister in the foreground there? Not quite sure, but it looks like him from the back side. :)

]]>
By: Kamikaze Dan/2011/03/24/machine-code-is-for-kids/#comment-2004 Kamikaze Dan Sat, 26 Mar 2011 04:53:59 +0000

(I can’t find the ST version of the magazines, so the Amiga version will have to do)

]]>
By: Stuart Carnie/2011/03/24/machine-code-is-for-kids/#comment-2001 Stuart Carnie Fri, 25 Mar 2011 21:34:27 +0000 C64, ZX Spectrum and Atari 800XL reference manuals. Within the first chapter or two you are off into writing your first BASIC program. Beyond that, if you went out searching for books about your 8-bit machine, most of them were about programming either BASIC or assembler.

For the inquisitive you had two choices, load a program or figure out what this BASIC thing was all about and what could we do with it. For many of us on this forum from that era, we wanted to learn; I would doubt any of our parents forced us. Shift the clock forward to even the early 90s, and BASIC or any hint of how to program is gone.

I actually have plans to bring BASIC and a good ML monitor to C64 for iPhone (and iPad) over this year, to hopefully pique some interest :) Along with the original hardware and programming guides for C64.

Cheers,

Stuart

]]>
By: Rob Wyatt/2011/03/24/machine-code-is-for-kids/#comment-2000 Rob Wyatt Fri, 25 Mar 2011 21:29:03 +0000 Holy Crap Dylan, you really hit a gamedev chord with this post :) 24+ responses.. Yeah, I started by learning basic on the Atari 2600 Compumate before graduating onto the C64.. We could jump onto EBay and grab a c64 and sit it in front of the kids... though without Zap64, the demo scene and all the tapes and games and typing in demos from magazines I don't know if the kids will get into it like we did. I never made the connection between assembly and basic.. I think C is probably closer to assembler than basic. Basic has no bit shifting and assembly is all about rol and ror. I'd agree with Snake's post. Somehow the kid just has to discover it. As parents we need to cunningly plant all the appropriate hardware and incentives around them so they do that but don't realise it was a setup :) Been thinking of making some game creation tools (and maybe a basic interpreter) for the iPad. Even if apple doesn't approve them, they can play them adhoc :) Holy Crap Dylan, you really hit a gamedev chord with this post :) 24+ responses..

Yeah, I started by learning basic on the Atari 2600 Compumate before graduating onto the C64..

We could jump onto EBay and grab a c64 and sit it in front of the kids… though without Zap64, the demo scene and all the tapes and games and typing in demos from magazines I don’t know if the kids will get into it like we did.

I never made the connection between assembly and basic.. I think C is probably closer to assembler than basic. Basic has no bit shifting and assembly is all about rol and ror.

I’d agree with Snake’s post. Somehow the kid just has to discover it. As parents we need to cunningly plant all the appropriate hardware and incentives around them so they do that but don’t realise it was a setup :)

Been thinking of making some game creation tools (and maybe a basic interpreter) for the iPad. Even if apple doesn’t approve them, they can play them adhoc :)

]]>
By: David Schofield/2011/03/24/machine-code-is-for-kids/#comment-1976 David Schofield Fri, 25 Mar 2011 10:44:33 +0000 sorry it wasn't a personal retort against you - it's just that my whole article is based around the idea that children have trouble with abstraction. As you get older and your brain adjusts to abstract thought you can begin to learn in other languages of course but a child's brain is actually wired to not allow complex abstract thought and this is evolutionary. (I think Richard Dawkins touches upon it in one of his books on evolution actually after reading which is when I got the seed of the idea for this article) sorry it wasn’t a personal retort against you – it’s just that my whole article is based around the idea that children have trouble with abstraction. As you get older and your brain adjusts to abstract thought you can begin to learn in other languages of course but a child’s brain is actually wired to not allow complex abstract thought and this is evolutionary. (I think Richard Dawkins touches upon it in one of his books on evolution actually after reading which is when I got the seed of the idea for this article)

]]>
By: Dylan Cuthbert/2011/03/24/machine-code-is-for-kids/#comment-1974 Dylan Cuthbert Fri, 25 Mar 2011 10:06:39 +0000 Thanks for this very interesting article! +1 for basic as the beginning language. I think blitzmax (widely underestimated by coders community) is a perfect tool for a beginner, because your C code becomes: Repeat print "HELLO MUM!" Forever And, more interactively: Repeat print "HELLO MUM!" Until KeyDown(KEY_ESCAPE) After having understood the basic foundations, the procedural approach, the modularity concept, the graphics programming, the student can progressively step into OOP thing, almost completely covered by the language. He can count on an awesome community, a lot of code samples to learn from, and his software can run on every common OS. I believe that Blitzmax, in the long term, is a king choice. I love that language! :) Thanks for this very interesting article!
+1 for basic as the beginning language.
I think blitzmax (widely underestimated by coders community) is a perfect tool for a beginner, because your C code becomes:

Repeat
print “HELLO MUM!”
Forever

And, more interactively:

Repeat
print “HELLO MUM!”
Until KeyDown(KEY_ESCAPE)

After having understood the basic foundations, the procedural approach, the modularity concept, the graphics programming, the student can progressively step into OOP thing, almost completely covered by the language.
He can count on an awesome community, a lot of code samples to learn from, and his software can run on every common OS.
I believe that Blitzmax, in the long term, is a king choice.
I love that language! :)

]]>
By: Ricardo Hernandez/2011/03/24/machine-code-is-for-kids/#comment-1968 Ricardo Hernandez Fri, 25 Mar 2011 07:07:02 +0000 I'm certainly not suggesting teaching complex abstract concepts to start. Pointers, inheritance and coroutines are obviously not beginner material. The issue is with teaching the introductory concepts like control flow and data without being punished by the language. Hence I suggest pair programming to lower the learning curve of the syntax while focusing on the logic. Do you disagree with that? As for C++, I don't really understand what your retort means. I'm not claiming it's the best language to start with. I don't think it is. However, if you're focusing on the right concepts, C++ and many other languages are serviceable. I’m certainly not suggesting teaching complex abstract concepts to start. Pointers, inheritance and coroutines are obviously not beginner material. The issue is with teaching the introductory concepts like control flow and data without being punished by the language. Hence I suggest pair programming to lower the learning curve of the syntax while focusing on the logic. Do you disagree with that?

As for C++, I don’t really understand what your retort means. I’m not claiming it’s the best language to start with. I don’t think it is. However, if you’re focusing on the right concepts, C++ and many other languages are serviceable.

]]>
By: snake5/2011/03/24/machine-code-is-for-kids/#comment-1965 snake5 Fri, 25 Mar 2011 05:50:55 +0000 I disagree and I wasn't talking about abstraction from the machine. I was talking about abstract concepts in general. Children's brains simply aren't wired to understand complex abstract concepts. (most at least, of course there might be the odd 1 or 2 outliers but I was talking about the general case) As for C++ w/teacher&debugger - sure, with enough time even monkeys can type Shakespeare but why not get them to write "hello" first? I disagree and I wasn’t talking about abstraction from the machine. I was talking about abstract concepts in general. Children’s brains simply aren’t wired to understand complex abstract concepts. (most at least, of course there might be the odd 1 or 2 outliers but I was talking about the general case)

As for C++ w/teacher&debugger – sure, with enough time even monkeys can type Shakespeare but why not get them to write “hello” first?

]]>
By: Peter Christensen/2011/03/24/machine-code-is-for-kids/#comment-1963 Peter Christensen Fri, 25 Mar 2011 05:41:15 +0000 that petite computer thing looks quite cool doesn't it! that petite computer thing looks quite cool doesn’t it!

]]>
By: Aaron Matthew/2011/03/24/machine-code-is-for-kids/#comment-1961 Aaron Matthew Fri, 25 Mar 2011 05:16:58 +0000 which hopefully gets a US port some day.

]]>
By: negroponte rabit/2011/03/24/machine-code-is-for-kids/#comment-1958 negroponte rabit Fri, 25 Mar 2011 03:45:54 +0000 I don't think they are forcing it - they are just trying to give their kids the same opportunity to learn and at as young an age as possible. Javascript/C#/C/C++ etc are all too abstract to learn when you are too young (my main point in the article) but right now what else is there to start kids in? (once you start them with the basics you can just let them learn by themselves as either they'll be hooked or they won't be hooked at that point) What kid isn't excited when he/she can move a square left/right on the screen via the keyboard and he/she knows he/she did all the work to make it happen/ I don’t think they are forcing it – they are just trying to give their kids the same opportunity to learn and at as young an age as possible.
Javascript/C#/C/C++ etc are all too abstract to learn when you are too young (my main point in the article) but right now what else is there to start kids in? (once you start them with the basics you can just let them learn by themselves as either they’ll be hooked or they won’t be hooked at that point)
What kid isn’t excited when he/she can move a square left/right on the screen via the keyboard and he/she knows he/she did all the work to make it happen/

]]>
By: snake5/2011/03/24/machine-code-is-for-kids/#comment-1956 snake5 Fri, 25 Mar 2011 02:30:11 +0000 micro-controllers with mechanical reactions seems like an interesting direction (and is still "cool" and different even nowadays). How about a simple robot they can program? There must be something out there in the hobbyist world. Although you would need one with proper inputs of some kind and not just something that can move left/right/forward/back. However, anything with a simple to manipulate display is probably a good basis - anything they can quickly get text or graphics up onto and see results with. micro-controllers with mechanical reactions seems like an interesting direction (and is still “cool” and different even nowadays). How about a simple robot they can program? There must be something out there in the hobbyist world. Although you would need one with proper inputs of some kind and not just something that can move left/right/forward/back.

However, anything with a simple to manipulate display is probably a good basis – anything they can quickly get text or graphics up onto and see results with.

]]>
By: Dylan Cuthbert/2011/03/24/machine-code-is-for-kids/#comment-1954 Dylan Cuthbert Fri, 25 Mar 2011 01:31:46 +0000 I saved up my pocket-money after learning to program at a friend's house and bought myself a second-hand ZX-81 + wobbly 16k ram pack. I also sent off for those stick on rubber keyboards they sold in computer magazines at the time for it which helped considerably. A year later I finally got to "upgrade" to a ZX Spectrum and that made me very happy indeed! The embedded assembler in BBC Basic was pretty cool eh, what a clever idea (and it also shows the parallels between the two languages). The problem with the BBC was it was too expensive and not enough kids could access it (my computer teacher at school used to prevent me from going into the computer classroom to continue programming at lunchtime, what a *complete* dick he was, in two years of him as teacher I didn't learn one thing I didn't already know and seemed to relish forcing me to learn how to code using frickin punchtape), As for smalltalk, Isn't it a little too abstract for young kids? It seems to me that what's easy and fun to use for adults isn't necessarily that easy or fun to use for children because of the abstraction involved. It depends on the intelligence of the child of course as all kids develop differently but this article and ideas are aimed at the average Joe Kid. I saved up my pocket-money after learning to program at a friend’s house and bought myself a second-hand ZX-81 + wobbly 16k ram pack. I also sent off for those stick on rubber keyboards they sold in computer magazines at the time for it which helped considerably.
A year later I finally got to “upgrade” to a ZX Spectrum and that made me very happy indeed!

The embedded assembler in BBC Basic was pretty cool eh, what a clever idea (and it also shows the parallels between the two languages). The problem with the BBC was it was too expensive and not enough kids could access it (my computer teacher at school used to prevent me from going into the computer classroom to continue programming at lunchtime, what a *complete* dick he was, in two years of him as teacher I didn’t learn one thing I didn’t already know and seemed to relish forcing me to learn how to code using frickin punchtape),

As for smalltalk, Isn’t it a little too abstract for young kids? It seems to me that what’s easy and fun to use for adults isn’t necessarily that easy or fun to use for children because of the abstraction involved. It depends on the intelligence of the child of course as all kids develop differently but this article and ideas are aimed at the average Joe Kid.

]]>
By: Dylan Cuthbert/2011/03/24/machine-code-is-for-kids/#comment-1951 Dylan Cuthbert Fri, 25 Mar 2011 01:19:13 +0000 Started with Timex Sinclair 1000 (US version of the ZX-81) too - still have it with that crap 16kb RAM module (had to use double-backed tape to keep it from falling out), then on to the TI 99/4a with Extended Basic with those lovely moving sprites but grew frustrated over trying to do anything but not-asteroids-like on it. It was really the Atari 800, De-Re Atari and Analog Magazine that got me and sealed my obsession with programming. One hack in particular - I wish I could remember who authored it (someone rather notable still - Tom Hudson?) published a small demo in Analog that made your Atari like it was dying - the snow effect survived the reset key. Awesome in it's time. I was determined to know how all this was done. But really my path into computing had more to do with a grandfather who recognized what my parents did not - passion is everything. He become obsessed with radios as a toddler and that simple passion led him thru a series of amazing experiences from humble country kid to heading a large team of engineers designing computer-controlled flight and rocket systems. Though he retired by the time I was born, he took me to the facility he'd ran which had vast rooms containing many mainframes, some jet plane cockpits, a motion simulator room and other things no civilian over 12 was allowed to see (recently found some photos of the place among his stuff, more impressive now than I remembered) I think one crucial thing that only some comments touched upon is how do you motivate kids to _self-motivate_. How do you light that fire? Anyone remember learning programming through BBC Basic? I didn't, but a good friend of mine did. This was BASIC that but with a unique feature in that you could embed hieroglpyhic-looking three-letter 6502 opcodes right in with your BASIC code to do things that all your friends couldn't imagine possible. And the demoscene happened. Maybe call it the Suzuki Violin Child Prodigy Method for young programmers. ;) Sad in the age of Crysis that flicking colour palettes and dancing sprites ain't what it used to be. I think learning how to express ideas in 6502 code is the best introduction to programming you can have. Writing your first vertical-blanking interrupt routine was a big thrill, wasn't it? And it also taught you pretty much everything you ever needed to know beyond that. :) People often mention Smalltalk environments like Alice and Squeak, which are great. They provide a nice starting point to drop widgets and then learn a cute language to make them interact, but importantly offer some amount depth and an incentive for kids to "dig" into the tools and create more inventive things. One thing that impresses me with the OLPC project is their music app called Tam-Tam which actually sits on top of an immensely powerful audio environment called Csound. What better way to ensure the Brian Enos and Hans Zimmer of the future than teach kids how to express the sounds they imagine in their heads into pure synthesis code. Started with Timex Sinclair 1000 (US version of the ZX-81) too – still have it with that crap 16kb RAM module (had to use double-backed tape to keep it from falling out), then on to the TI 99/4a with Extended Basic with those lovely moving sprites but grew frustrated over trying to do anything but not-asteroids-like on it. It was really the Atari 800, De-Re Atari and Analog Magazine that got me and sealed my obsession with programming. One hack in particular – I wish I could remember who authored it (someone rather notable still – Tom Hudson?) published a small demo in Analog that made your Atari like it was dying – the snow effect survived the reset key. Awesome in it’s time. I was determined to know how all this was done.

But really my path into computing had more to do with a grandfather who recognized what my parents did not – passion is everything. He become obsessed with radios as a toddler and that simple passion led him thru a series of amazing experiences from humble country kid to heading a large team of engineers designing computer-controlled flight and rocket systems. Though he retired by the time I was born, he took me to the facility he’d ran which had vast rooms containing many mainframes, some jet plane cockpits, a motion simulator room and other things no civilian over 12 was allowed to see (recently found some photos of the place among his stuff, more impressive now than I remembered)

I think one crucial thing that only some comments touched upon is how do you motivate kids to _self-motivate_. How do you light that fire? Anyone remember learning programming through BBC Basic? I didn’t, but a good friend of mine did. This was BASIC that but with a unique feature in that you could embed hieroglpyhic-looking three-letter 6502 opcodes right in with your BASIC code to do things that all your friends couldn’t imagine possible. And the demoscene happened. Maybe call it the Suzuki Violin Child Prodigy Method for young programmers. ;)

Sad in the age of Crysis that flicking colour palettes and dancing sprites ain’t what it used to be. I think learning how to express ideas in 6502 code is the best introduction to programming you can have. Writing your first vertical-blanking interrupt routine was a big thrill, wasn’t it? And it also taught you pretty much everything you ever needed to know beyond that. :)

People often mention Smalltalk environments like Alice and Squeak, which are great. They provide a nice starting point to drop widgets and then learn a cute language to make them interact, but importantly offer some amount depth and an incentive for kids to “dig” into the tools and create more inventive things. One thing that impresses me with the OLPC project is their music app called Tam-Tam which actually sits on top of an immensely powerful audio environment called Csound. What better way to ensure the Brian Enos and Hans Zimmer of the future than teach kids how to express the sounds they imagine in their heads into pure synthesis code.

]]>
By: Stuart Carnie/2011/03/24/machine-code-is-for-kids/#comment-1949 Stuart Carnie Fri, 25 Mar 2011 00:00:27 +0000 books and magazines. What fun that was.

To your point, I remember being completely confused with Turbo Pascal 5.5 OOP concepts in early teens, and stuck with procedural code whilst I was developing my first real app.

Cheers,

Stuart

]]>
By: Mike McRoberts/2011/03/24/machine-code-is-for-kids/#comment-1946 Mike McRoberts Thu, 24 Mar 2011 21:50:36 +0000 I started with DarkBASIC at 10, and it was really easy to grasp. The fact that it was made for game development is a big advantage, I was able to code simple 3D games easily. From a motivation standpoint, that pure gold. But your code example is totally off, so I'm wondering if you're not confusing it with another language? See: http://en.wikipedia.org/wiki/DarkBASIC#Simple_Rotating_Cube.5B7.5D I started with DarkBASIC at 10, and it was really easy to grasp. The fact that it was made for game development is a big advantage, I was able to code simple 3D games easily. From a motivation standpoint, that pure gold.

But your code example is totally off, so I’m wondering if you’re not confusing it with another language?

See: I too started with BASIC, but on the TRS-80 Model 1. Soon thereafter I moved on to assembly language for speed. My 7-year-old son is showing interest in programming, and creating his own games, so my plan is to start him out the same way. I considered a TRS-80 emulator, as I still have all of my source code from my childhood, but recently learned of Petit Computer, which is a BASIC interpreter for the Nintendo DSi. That may be a more fitting context starting point for him. That childhood experience would lead to my first job in the industry programming the Sega Gamegear, which was also Z80 based. I too started with BASIC, but on the TRS-80 Model 1. Soon thereafter I moved on to assembly language for speed. My 7-year-old son is showing interest in programming, and creating his own games, so my plan is to start him out the same way. I considered a TRS-80 emulator, as I still have all of my source code from my childhood, but recently learned of Petit Computer, which is a BASIC interpreter for the Nintendo DSi. That may be a more fitting context starting point for him.

That childhood experience would lead to my first job in the industry programming the Sega Gamegear, which was also Z80 based.

]]>
By: Chas/2011/03/24/machine-code-is-for-kids/#comment-1941 Chas Thu, 24 Mar 2011 18:15:25 +0000 If you've got a Commodore 64 lying around, there are still excellent cartridges being made for them, including both a machine code monitor as well as Turbo Assembler in ROM, combined with more modern storage solutions and other goodies, making coding much less of a hassle back in the days of 5.25" floppies or even tapes. Check out <a href="http://www.1541ultimate.net/content/index.php" rel="nofollow">1541 Ultimate</a> and <a href="http://www.jschoenfeld.com/products/chameleon_e.htm" rel="nofollow">Chameleon</a> (not yet available) - I think this computer still is an excellent platform for teaching kids (or yourself!) programming in a hands-on manner. Not to mention there's still a very vibrant community around it. If you’ve got a Commodore 64 lying around, there are still excellent cartridges being made for them, including both a machine code monitor as well as Turbo Assembler in ROM, combined with more modern storage solutions and other goodies, making coding much less of a hassle back in the days of 5.25″ floppies or even tapes.

Check out 1541 Ultimate and Chameleon (not yet available) – I think this computer still is an excellent platform for teaching kids (or yourself!) programming in a hands-on manner. Not to mention there’s still a very vibrant community around it.

]]> By: LarryD/2011/03/24/machine-code-is-for-kids/#comment-1939 LarryD Thu, 24 Mar 2011 17:59:19 +0000

]]>
By: Bill Budge/2011/03/24/machine-code-is-for-kids/#comment-1938 Bill Budge Thu, 24 Mar 2011 17:28:06 +0000 Excellent ideas, if a little counter-intuitive. I definitely think we shouldn't shy away from teaching kids stuff just because we think it's too difficult for them in principle. They're better at learning some things than we are! And ASM may well be one of those. For reference, I learned to read control flow in BASIC around early elementary school; later in those years I learned some simple python to bridge the gap. Only when I was a little older did I learn C, then basic data structures (using "Practice of Programming" by Khernigan and Pike, then C++. Excellent ideas, if a little counter-intuitive. I definitely think we shouldn’t shy away from teaching kids stuff just because we think it’s too difficult for them in principle. They’re better at learning some things than we are! And ASM may well be one of those.

For reference, I learned to read control flow in BASIC around early elementary school; later in those years I learned some simple python to bridge the gap. Only when I was a little older did I learn C, then basic data structures (using “Practice of Programming” by Khernigan and Pike, then C++.

]]>
By: Mattias Gustavsson/2011/03/24/machine-code-is-for-kids/#comment-1930 Mattias Gustavsson Thu, 24 Mar 2011 14:29:02 +0000

I think it could be a good idea to develop something like that *specifically* for teaching beginners the basic concepts of programming and how a processor works. Because it doesn’t have to be a *real* processor, as long as it behaves like one :-)

]]>