Article has many valid points, but pushes them too far, as such articles are prone to do.
1) True, today's kids don't have the fly by the seat of your pants relationship to programming (I distinctly remember a book called "What You can do with 1K", the Sinclair Z-80 had 1K of memory!). However they have other, powerful tools. Consider processing, Alice (http://www.alice.org/), and, of course Scratch, among many others.
2) I agree more with the points about hardware: today's kids have less of a relationship with the hardware, I feel. But there are many cheap and powerful kits (Arduino, Beagle, etc.) that can change that.
3) The WWII techie guys that are mentioned probably lamented in their time that the kids don't understand technical stuff anymore but just do BASIC coding.
I disagree that kids these days are spoiled by large platforms. I've been a member of the TI graphing calculator programming community for nearly ten years now, and some of the people I work with are probably the best assembly hackers you'll ever meet.
We have two main platforms we work with: the z80 series (TI-73/81/82/83/85/86 numbered calculators) and the 68k series calculators (TI-89/92 numbered calculators). Z80-based calculators run on the fabled z80 processor, the very same 8-bit ZiLOG processor from 1976 with 64k of address space that ran inside the Sinclair ZX Spectrum.
These devices have a BASIC variant installed on them, which gives students a taste of what it's like to see your work running quickly. I first learned to program on a graphing calculator; it's great to start out because you can write code and run it right away on the school bus.
The community doesn't move incredibly fast, as it's fairly small. But walk into any high school in America, and you'll find someone playing Breakout on their TI-83+. Somewhere in that high school there's going to be someone, perhaps one in a hundred, who has written a BASIC program. A fraction of these will want to learn how to write assembly programs, because they want a first-person shooter on their calculator (http://www.ticalc.org/archives/news/articles/14/143/143227.h...). And then they'll wind up shoving PAL out the linkport of the thing (http://www.ticalc.org/archives/news/articles/14/143/143122.h...).
Disclosures: I'm a ticalc.org staff member. Many of these people are my friends. I was one of the people TI sent a DMCA notice to about the signing keys. Right now I'm working on a calculator-hosted calculator emulator (http://github.com/chronomex/680).
I remember teaching myself some BASIC in late primary / early high school. But I passed on studying it properly because the computer course at high school was notoriously weighted towards masses of work and poor input into the end of school results [1]. So I missed the boat to bigger and better languages (for now at least).
Actually, on reflection that's not entirely true. In the past few years I've found work-related opportunities to teach myself some basic HTML. And iirc, the canonical 'How to become a Hacker' document [2] encourages the use of HTML as just what the OP is asking for - a basic language that teaches kids how things fit together. Sure, it's more complicated than BASIC, but in the Facebook era being the kid at (primary) school who can build his own webpage is perhaps not dissimilar to me being the kid at school who could build games with curse words in them.
No Commodore 64 required.
[1] My state's school system weighed the grades you received in any course against the overall skills of that course cohort when compared to the rest of the state on a standardised test. So I received much higher results from taking Drama (full of very smart kids at my school) than I would have taking IPT (full of average students, and harder workload). No comment on which cohort may now be more successful, but that was the choice at the time.
[2] http://catb.org/~esr/faqs/hacker-howto.html
I understand what the author is trying to convey, but the world has moved on. Given that it has, BASIC has been replaced with other technologies.
Personally, my wife and I take our children education into our own hands and CS has been part of all of there curriculum.
For the girls we use Alice http://www.alice.org/kelleher/storytelling/ and for the boys we use Mindstorm http://mindstorms.lego.com/en-us/Default.aspx , they are as successful, if not more successful at providing a simple yet compelling programming environment that make the children want to embrace them. As well, Flash is a good environment that can give a kid training wheels while they learn ever increasing complexity.
At what age do you think Alice and Mindstorm are usable?
The main thing that catches my attention on Alice is it is targeted at High School or College level, but the article talks about his 11 year old son.
Where are the programming tools for 6 to 8 year olds?
(I started in BASIC that early, but then again I was programming C by 11, so I'm probably an exception...)
I'd like to point out that a BASIC interpreter sufficient for his needs could be written with fewer LOC than the article.
I learned on BASIC myself, but it's just so tedious. If I had to guide kids on programming today, I'd look at scheme or smalltalk. Probably the latter first.
Perhaps nowadays kids progress: HTML -> JavaScript -> PHP?
What is missing from programming languages nowadays is a really easy way to do graphics and games. But at least HTML and JS give you fast feedback, where each line you write has a visual result. (And yes, HTML is not a programming language, but it is a great starting point.)
What I miss are the books and magazines with code listings, which I patiently typed in. :)
I agree, the web is a much more rich programming environment than BASIC ever was or will be. It's high level, quick to pick up, rewarding, and can be as simple or complex as you want to make it.
I reckon the code blogs have replaced the books and magazines, and I GUESS if you don't want to download a file or cut and paste you can type it in!
A Linux workstation is a programming utopia so far beyond what I imagined when I was a teen.
I loved BASIC on the C64 too, but later on, I was looking at spending $350 to buy a C compiler for my Amiga back in 1991. I learned what I could of AmigaShell, ARexx, and AmigaVision, but it was a bit limited. These days, you can be writing C, C++, Python, C#, JavaScript, PHP, Flash/ActionScript and so on for free.
In Linux or MacOS, most of these are preinstalled. As far as I know, Windows comes with no programming tools installed, other than a browser, and that is indeed a major oversight.
Who cares that you boot up to BASIC. Kids can now make a website and share it with THE PLANET.
However, if anything is hurting the desire to code it is not modern OS but the move of the gaming industry toward consoles. With PC games kids can get in to games they love and with actual code extend them and again, share them with the planet. They won't be doing this if they're spending their day playing XBOX games instead of PC games.
Python. Sure, it's not meant to be a "learning language", however, one can simply ignore the "hard" stuff (e.g. classes, separate modules), and focus on the easy stuff (e.g. the fact that it is executable pseudocode)
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." - Edsger Wybe Dijkstra
I think that kids have been finding their own ways into programming.
I used to play Warcraft III, a game that has players play on precreated levels with each other which came with a pretty open level editor. My first 'coding' experience was here, with a checklist of possible 'events', 'conditions' and 'actions', that acted as functions for my levels. My own interest came with my excitement in playing my own level in my favorite game. I think that kids will find their own way into programming following other computer related interests.
I think this is a really good point, and the game mod tools have only become more sophisticated. Have you by any chance seen Tetris recreated inside of the StarCraft 2 level editor? http://www.youtube.com/watch?v=gO2kZ6e9JUI
I can only imagine how popular a video game modding class would be in school.
If your on Windows, just install AutoIt. It has the BASIC syntax and you can even do cool things like make the computer beep or open the optical drive with one easy command. Good intro language.
22 comments
[ 2.4 ms ] story [ 52.2 ms ] thread1) True, today's kids don't have the fly by the seat of your pants relationship to programming (I distinctly remember a book called "What You can do with 1K", the Sinclair Z-80 had 1K of memory!). However they have other, powerful tools. Consider processing, Alice (http://www.alice.org/), and, of course Scratch, among many others.
2) I agree more with the points about hardware: today's kids have less of a relationship with the hardware, I feel. But there are many cheap and powerful kits (Arduino, Beagle, etc.) that can change that.
3) The WWII techie guys that are mentioned probably lamented in their time that the kids don't understand technical stuff anymore but just do BASIC coding.
We have two main platforms we work with: the z80 series (TI-73/81/82/83/85/86 numbered calculators) and the 68k series calculators (TI-89/92 numbered calculators). Z80-based calculators run on the fabled z80 processor, the very same 8-bit ZiLOG processor from 1976 with 64k of address space that ran inside the Sinclair ZX Spectrum.
People have written car racing simulators (http://www.ticalc.org/archives/files/fileinfo/391/39185.html), and run assembly code in otherwise inaccessible platforms using buffer overruns they had to type in by hand (http://www.ticalc.org/archives/news/articles/14/145/145220.h...). We factored all of TI's operating system signing keys, something you may have heard of (http://news.ycombinator.com/item?id=909990). Some other people reverse-engineered an undocumented USB controller and wrote a nearly complete USB stack for it, including support for flash drives (http://www.ticalc.org/archives/news/articles/13/139/139572.h...).
These devices have a BASIC variant installed on them, which gives students a taste of what it's like to see your work running quickly. I first learned to program on a graphing calculator; it's great to start out because you can write code and run it right away on the school bus.
The community doesn't move incredibly fast, as it's fairly small. But walk into any high school in America, and you'll find someone playing Breakout on their TI-83+. Somewhere in that high school there's going to be someone, perhaps one in a hundred, who has written a BASIC program. A fraction of these will want to learn how to write assembly programs, because they want a first-person shooter on their calculator (http://www.ticalc.org/archives/news/articles/14/143/143227.h...). And then they'll wind up shoving PAL out the linkport of the thing (http://www.ticalc.org/archives/news/articles/14/143/143122.h...).
Disclosures: I'm a ticalc.org staff member. Many of these people are my friends. I was one of the people TI sent a DMCA notice to about the signing keys. Right now I'm working on a calculator-hosted calculator emulator (http://github.com/chronomex/680).
Actually, on reflection that's not entirely true. In the past few years I've found work-related opportunities to teach myself some basic HTML. And iirc, the canonical 'How to become a Hacker' document [2] encourages the use of HTML as just what the OP is asking for - a basic language that teaches kids how things fit together. Sure, it's more complicated than BASIC, but in the Facebook era being the kid at (primary) school who can build his own webpage is perhaps not dissimilar to me being the kid at school who could build games with curse words in them.
No Commodore 64 required.
[1] My state's school system weighed the grades you received in any course against the overall skills of that course cohort when compared to the rest of the state on a standardised test. So I received much higher results from taking Drama (full of very smart kids at my school) than I would have taking IPT (full of average students, and harder workload). No comment on which cohort may now be more successful, but that was the choice at the time. [2] http://catb.org/~esr/faqs/hacker-howto.html
Personally, my wife and I take our children education into our own hands and CS has been part of all of there curriculum.
For the girls we use Alice http://www.alice.org/kelleher/storytelling/ and for the boys we use Mindstorm http://mindstorms.lego.com/en-us/Default.aspx , they are as successful, if not more successful at providing a simple yet compelling programming environment that make the children want to embrace them. As well, Flash is a good environment that can give a kid training wheels while they learn ever increasing complexity.
Where are the programming tools for 6 to 8 year olds?
(I started in BASIC that early, but then again I was programming C by 11, so I'm probably an exception...)
I learned on BASIC myself, but it's just so tedious. If I had to guide kids on programming today, I'd look at scheme or smalltalk. Probably the latter first.
http://www.squeak.org/About/
What is missing from programming languages nowadays is a really easy way to do graphics and games. But at least HTML and JS give you fast feedback, where each line you write has a visual result. (And yes, HTML is not a programming language, but it is a great starting point.)
What I miss are the books and magazines with code listings, which I patiently typed in. :)
As for books, are you referring to something like this? http://www.atariarchives.org/basicgames/ I LOVED this book.
I reckon the code blogs have replaced the books and magazines, and I GUESS if you don't want to download a file or cut and paste you can type it in!
I loved BASIC on the C64 too, but later on, I was looking at spending $350 to buy a C compiler for my Amiga back in 1991. I learned what I could of AmigaShell, ARexx, and AmigaVision, but it was a bit limited. These days, you can be writing C, C++, Python, C#, JavaScript, PHP, Flash/ActionScript and so on for free.
In Linux or MacOS, most of these are preinstalled. As far as I know, Windows comes with no programming tools installed, other than a browser, and that is indeed a major oversight.
However, if anything is hurting the desire to code it is not modern OS but the move of the gaming industry toward consoles. With PC games kids can get in to games they love and with actual code extend them and again, share them with the planet. They won't be doing this if they're spending their day playing XBOX games instead of PC games.
"It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." - Edsger Wybe Dijkstra
I got started in basic, then assembly, C, Ada, Java, etc... So there is hope, or maybe I am a lost cause.
I used to play Warcraft III, a game that has players play on precreated levels with each other which came with a pretty open level editor. My first 'coding' experience was here, with a checklist of possible 'events', 'conditions' and 'actions', that acted as functions for my levels. My own interest came with my excitement in playing my own level in my favorite game. I think that kids will find their own way into programming following other computer related interests.
I can only imagine how popular a video game modding class would be in school.
Johnny has it way easier today than in 1983, let me assure you. Johnny has the Web. Johnny needs to get off my d*mn lawn.