David Brin Laments Absence of Programming For Kids
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."
It does afford me the option of wondering "aloud" why Brin didn't just download, say, an Apple ][ or C64 emulator. I mean, I always thought the guy was kind of smart, but now I know it's not true. (And don't tell me that non-computer nerds wouldn't know about emulators; if you don't know, ask someone.
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Personally, having grown up with the C64 and the Apple][ and all the rest... man, I HATED BASIC.
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
Want to learn about race cars? Read my Book
I too have lamented the changes in IT. When I first learned to program (1977 on an HP-25), the technical environment was very different. Back then, everyone who wanted to use a computer HAD to know how to program. The scarcity of software meant that everyone wrote their own code or, at least, typed in code from a magazine. Very limited software sharing schemes and the inability to quickly find software meant it was easier to write your own than to find someone else's software. Simple languages, simple hardware, simple interfaces, and simple APIs ruled. When the entire OS plus application suite resided in a few k of RAM, it was easy to both work with the system or create your own. It took very little effort for a novice programmer to produce world-class code because the bar was so low and the functionality so primitive that anyone could make something interesting. In the old days, everyone grew their own code.
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.
Two wrongs don't make a right, but three lefts do.
Personally, having grown up with the C64 and the Apple][ and all the rest... man, I HATED BASIC.
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.