OK, but if you wanted to program a VIC-20, you were literally POKEing 6502 opcodes as hex numbers into memory addresses - the development tool VICMON cost extra, and even then you still had to know the mnemonics. And people of my generation still did it. And kids today have everything handed to them on a plate, they just aren't interested.
Adoption has increased, but the web is also far more interesting than playing another text based adventure game. So, I think the percentage of total people has stayed about the same. It's only the percentage of people with access to a computer who learn to program that's changed. Because, the further back you go the fewer things there where to do with a computer other than learn to program.
Plus minecraft constructions. Lots of video games now let you create and share. My son is building automatic doors and creeper traps at the age when I was making sprite data by hand and making it move across the screen using basic
Right, but a kid who uses the web and wants to make their own web page, has basically zero barriers to overcome. All they need is the browser they already use, and Notepad. Sure hosting it somewhere is a bit more work, but trivial compared to distributing a program you wrote in the 80s, where you had to physically exchange cassettes or floppy disks with your friends in the school playground (!) or persuade a magazine to distribute your program as a listing or on the coverdisk.
yet there are a lot of concepts they need to digest before they jump into the html/js world. it already means they need to learn two languages (html and js), interaction between them , etc... I'm not even mentioning things like - open notepad, save the file, make sure you get the extension right, fire up the browser, click open (why not in address bar? oh yeah, you can, but tell a kid the file:///<blah> business and see if they remember it after 3-4 days of not doing it) and see what happens. of course it's just a reload away next time.
not as easy as qbasic.exe, then typing in some code in, then hitting 'run' and seeing what happens.
speaking from experience here, i have 8 and 10 yo, and tried this with both of them. my friend tried with his 9 yo. they seem to get the idea of assignments, loops etc, but it just doesn't excite them. can't generalise on a test sample of 3, so just my 2p.
The difference is how easy it is to find the information about what to do.
Someone totally new won't know what notepad is, won't know what html is, and won't know how to make the browser show it, and the manual that came with his computer will say nothing about it.
You start a browser, there's no hint what to do. You start searching for "how to make a web page" and you get a bewildering array of information, some of which are totally over-engineered.
On the other hand hooked up a VIC-20 or C-64, opened the manual, and what stared you in the face in the first chapter was your first program.
I remember opening a browser, selecting the "View Source" option, and there was my first web page. I really started to learn how to program when a misconfigured web server spit out the source code to a web app that I enjoyed using.
I think the commonality between us here is that having access to the source itself provides the best learning environment.
Yeah, but the thing with that is, it fucking sucks.
What about
10 print "HELLO"
20 GOTO 10
Or something like that? If I wanted hello world on the screen I'd get a piece of damn paper. The beauty of quick basic was it got you into procedural code, where the computer does stuff. You can get someone going with Python relatively easily but not as easy as QBasic was on a Mac II in the school computer lab.
You can say there's been a cultural shift but every generation's been saying "kids these days", back to at least Socrates. I'd say that not having QBasic be one of 6 icons you can click is a bigger change, it's not the kids.
You may as well just open up notepad and type "Hello, world!", and leave it at that. HTML is not a programming language; if you want to program on the Web you do have to jump into JavaScript.
I would recommend not trying to teach for loops etc... Show them how to tie a function to an image to make it move across the screen as a building block to make a game and they will find it interesting. Maybe start with flash/actionscript so they can see (click image > write code for image > image does stuff)
unfortunately in the selection that I have of 8 (mine), 9 (not mine) and 10 (mine) none are bright enough to grasp the concept of a 'sprite' yet, i'm not even talking about relating code to that sprite. flash/actionscript? ho many steps are there between typing something and actually getting stuff appear on the screen? I've written 2-3 simple swf's, and it caused my head to spin... you think a kid could do it? on their own?...
friend of mine ('owner' of the 9yo), tried some sort of python environment which was supposed to do just that (i think it's this: http://rur-ple.sourceforge.net/en/rur.htm, but not sure), but failed - quite limited in what it does, or get way too complicated if you want to tweak something.
Hmm true, I always considered Flash/Actionscript to be dead simple (Drag image to the view => click on it and add code to make it do stuff) However maybe it's because I grew up loading 5.5inch floppys in a computer without a hard drive that only ran DOS. This is actually something I've been thinking about lately since my son is now 4 months old and I'm trying to figure out how I'm going to teach him this stuff, I grew up evolving with the technology so a terminal window does not feel foreign to me. How do you start from scratch in the age of iPads etc.. ?
I am pretty sure when I was 10, it was normal for a kid to know what a sprite was (indeed the finer points of what and how your computer did sprites was playground argument stuff). Most people had at least had an attempt at creating their own game or demo. Kids these days only want to use computers.
yes, precisely. they want to use it to create other things. drawing, writing, presentations - they find it interesting. programming? not so. why? i don't know. i tend to think it's the tools, or the complexity of it all. on the second though, i think they all got too used to the instant gratification, in other words, the more time it takes to get the result, the less interesting/inspiring it becomes. and it kind of brings us back to the first point - tools are too complicated... :)
If you wanted to program a VIC-20, you opened the manual, read the preface, which starts like this:
"You are about to meet friendly computer! Friendly in price,
friendly in size, to use and learn on experience.
Most important you don't have to be computer
programmer, or even typist, to use it!
If you're first time computerist, this manual will provide an
excellent introduction to computing. Unlike most instruction
manuals, you don't have to read through this whole book to get
to the "good stuff." After reading Chapter (GETTING
STARTED), you can go directly to chapter that interests you
and start reading. If you're interested in animation turn to
Chapter 4. If you like music, try Chapter 5.
The first page of each chapter has sample program to start
you off. Just type the program exactly as shown ("Try Typing
This Program") and see what happens. The rest of the chapter
explains what you did, and shows how to do more. Chapter
summarizes some important programming concepts, and
explains the techniques used in sample programs."
(The manual was the baby of Michael S. Tomczyk, who wanted to strongly focus on the "user friendly" aspect of the VIC, including for programming)
Then you'd turn to chapter one, and start typing in the first example program:
1 PRINT "VIC20"
2 GOTO 1
You then had an approximately 150 additional pages explaining how to use the machine that for the most part assumed that "use" meant "program" - only a tiny fraction of the manual dealt with non-programming related activities. My dad learnt BASIC from that manual, and I learnt BASIC from him and went on to improve my skills with nothing but the Commodore 64 manual when we upgraded. Commodore continued that tradition with the Amiga, up until AmigaOS 2.04 (which came with ARexx, but not AmigaBASIC) but pushed it far less on the Amiga than on its 8-bit machines.
That's a large part of the difference: If you bought most home computers back then, and _especially_ Commodore machines, you got programming showed in your face - User was equated with programmer. And though a lot of people learnt how to load games and didn't bother with programming, the threshold to actually finding something exciting in programming was far lower.
I'm not suggesting we go back to the days where people get a BASIC prompt on starting a machine, but surfacing scripting capabilities for automation more, for example, would make a big difference.
Consider even something as trivial as macro recording that displays what it records and give people an easy way of modifying it, instead of hiding it "behind the scenes".
A lot people are programmers today because the plumbing was out in plain view and some of us found it fascinating and started figuring out what it did. But today the plumbing tends to be hidden and people go "magic. got it."