David Brin Laments Absence of Programming For Kids 355
An anonymous reader writes "David Brin is an award-winning science fiction writer who has often written on social issues such as privacy and creativity. Now, he's written an essay for Salon.com titled 'Why Johnny Can't Code'. He discusses his son's years-long effort to find a way to use his math book's BASIC programming examples. All they were ever able to find, however, were either children's versions (on the Mac) or 'advanced' versions which attempted to support modern programming requirements (and which required constant review of the user's manual). Ultimately, they ended-up buying an old Commodore 64 on Ebay — Yes, for those of you under the age of 30, 'personal' computers like the Apple II and C64 used to all include BASIC in their ROMs."
You know, though this is a dupe (Score:5, Insightful)
Come on... (Score:4, Insightful)
Uh, hello? (Score:3, Insightful)
Despite the Dupe - I *Hated* BASIC; PASCAL Baby! (Score:5, Insightful)
It was way, way, WAY too limiting and tedious, even for my neophyte 13-year-old self.
I really didn't discover the joy of programming until I discovered Turbo Pascal. It was like somebody unshackling me - even with the crappy PC XT CGA graphics.
Pascal is a *great* learning language. It teaches all the good habits that will be needed for a C/C++/Perl hacker later in life, without all the administrivia involved with C, or the sheer horsepower (with all the syntactic complexity) of Perl.
Go with Pascal as a first language, and you can't go wrong.
DG
Re:You know, though this is a dupe (Score:4, Insightful)
The article was interesting, but ultimately the author seemed to be concerned about recreating nostalgia for programming on his 8-bit computer rather than actually wanting kids to know how to program. There's countless examples of programming languages suitable for a kid. Bash, Excel, and Javascript are all pretty simple, don't require complex steps like compiling or memory management, and readily accessible.
Re:There are options (Score:3, Insightful)
Actually I really learned to program on an HP calculator. I had previously done some C, but the simple metaphor of the stack was alluring.
Re:You know, though this is a dupe (Score:3, Insightful)
Re:You know, though this is a dupe (Score:3, Insightful)
Yeah, I think you've really hit the nail on the head here. Actually you could get BASIC in ROM for the IBM PC-1... but alas, my machine lacked that option, and I ended up scrapping everything but the motherboard which AFAIK is still hanging on a friend's wall.
Not just that, but those older machines (the 4-bit era) tended to show you BASIC as soon as you booted. It was ready for nothing so much as for letting you write some code.
Kids are more computer literate than us: too bad. (Score:3, Insightful)
I don't think the antiquification of DOS, and of all things, BASIC, is going to have some negative effect.
We'll always have to suffer the hand-wringing from a generation getting older, and I'll always roll my eyes about it.
Re:There are options (Score:3, Insightful)
Changing World: Low % Who Grow Their Own Code (Score:5, Insightful)
Today it's all different. The OS has become a beast that not even a team of programmers can fully comprehend. IDEs, OOP, and layered architectures try to hide the complexity, but its still there. Moreover, almost any bit of code or application that one might want has a multiple incarnations ready for buying/downloading from commercial/shareware/OSS sources. It's now very easy to find the application you want and much harder to write something that is better than anythign else. In the new days, few grow their own code.
Perhaps its like the change from a subsistence-agrarian world to a world of craftsmen (or industry) where programming is like farming. In the past, everyone grew their own code. Today, no one grows their own food and farming is a very minor part of the global economy. Farmers may lament that most children in the city don't know how to milk a cow or thresh wheat, but perhaps those skills aren't needed in most people. Just as one farmer can now feed some 40 people, one programmer servers the programming needs of a growing number of users. Consider that Microsoft as 60,000 employees whose code runs on at least 600 million operating PCs -- more than 10,000 non-programming users per programmer.
As with farming, we now live in a world where few need to grow their own code. As far as schools are concerned we may be entering a world in which fewer than 1 child per class will ever need to know how to program. That makes me sad at some level, I truly enjoyed learning to program, but it may be an inevitable part of the maturation process for IT and the internet.
Re:There are options (Score:3, Insightful)
There are tons of other languages that could have been used, but each one would have required translating the code in the textbook.
The artical wasn't about the lack of BASIC per se, but about the lack of support for learning the roots of the higher languages. Everyone says - oh, don't play with that crap - go for the higher languages - Object oriented blah blah blah. The point was that that's not how it should be done. Yeah you can learn the high order & then work your way down to assembly, but it effects how you think. When I write my own code, I write from a minimalist stance (no I don't write my own tcp/ip stacks etc), it might not be as portable or modifiable as code writen using standard libraries and structured as modules with blind objects. On the other hand, it's usualy clean, elegant, and faster than doing it with libraries.
To put it in perspective, I have worked with people who think that cobbling together widgets is real programming & can't understand how to do anything more than the simplest coding to make them work nice together. I honestly think trying to get them to build a double linked list might give them a heartattack. That's what David's artical was about. Programming, to him, isn't about objects & high level processes, it's about understanding the processes of logic and math that transform blocks of code into something entirely different - whether the magic of a moving ball on a screen, or seeing the difference in performance for a shuttle short vs an indexed sort vs tree sort - and then understanding why each creates the results it does.
But hey, I'm just a few years younger than him, so I'm still part of that old school approach - what do we know?
Re:Lego Mindstorm? (Score:2, Insightful)
As someone who started out with Java 6 years ago, I find it completely ridiculous to go backwards to BASIC. Why not make things fun, and go into a game like Second Life and open up the script editor. Or make a robot. Or make a cool website with a database backend? Then parents wonder why kids rather go back to playing WoW instead of opening up the math book to write some programs. I wish I had some hipster punchline to end this train of thought, like "BUFU MUFU"... I saw that one on Youtube, but yeah I'm too old for that and I read Slashdot, so I don't know what it means. BUFU MUFU
Re:Despite the Dupe - I *Hated* BASIC; PASCAL Baby (Score:5, Insightful)
I started out on a C64/C128 as well. Basic is not a good first language.
Frankly, if I wanted to teach my child programming, I'd start with javascript. Here's why:
- It's extremely easy to get started in. You can do a lot with one-liners, and unlike perl you can explain the one-liners to a neophyte. There are many excellent beginner's books.
- On-screen graphical feedback is instantaneous, and you don't have to restrict yourself to console output.
- Every single web-enabled PC has the development tools right there. They don't have to do complicated installs, and they can show off their 1337 skills on their friend's computer.
- And best of all, if you give them a simple hosting account they can place their javascript programs online for all their friends to see.
Re:There are options (Score:3, Insightful)
Re:There are options (Score:3, Insightful)
Squeak homepage [squeak.org]
and the Education focused site [squeakland.org]
Re:syntax error at yourcomment.pl line 1, at EOF (Score:3, Insightful)
Yeah, seriously I'd avoid teaching kids PERL. One problem basic DID have is it taught a few bad habits (Goto's, bad variable nameing , etc). Perl unfortunately in its quest for "More than one way to skin a cat", allows some shocking codeing, and unfortunately my eternal grip with perl, is it begets shocking code. "Hey , you have a language that lets you do cool stuff like closures and stuff (I think?) and you are using fucking $_@ variables and using regex's to traverse DOM trees. STOP PROGRAMMING, YOUR NOT GOOD AT IT!". ehh.
Python I thinks the clear choice. Its simple minded enough to teach to children (Kids, its all about hash's , lists and atoms), but is actually a real world language that allows some pretty fancy and efficient and READABLE stuff. It might not have the same eseoteric-beard status as lisp or scheme, but its a pretty damn nice language regardless, and you can actually get jobs codeing in it. And later on they can learn perl, once they've learned not to abuse perl.