So much of this! I remember the older kids talking about Pascal (they were using TurboPascal at the time) and to me it was some mystical, highly-advanced form of magic, a sort of "more complex" BASIC. However, I never actually learned Pascal or used it, because I jumped directly from BASIC to C (actually ended up doing both for a while). The reason I even found out about C, was because I asked my computer teacher in junior high how people made games, and she told me that it was a language called C. So that summer I got myself an ANSI C book and started teaching myself C.
It was very difficult at first but I slowly got the hang of it. By junior year of high school we were doing C++, and having done C it was really easy for me to switch to C++.
In my experience this is the common question amongst everybody (myself included) that started programming young. Some adult somewhere (how sad that I don't remember) took me seriously enough and gave me some books so I started writing in C, BASIC, and assembly and I was too stupid to realise that it was supposed to be too hard for a 9 year old.
Today (as in literally this moment in time) I am still writing C for games.
To be fair this approach has many merits with the computers of the time. My main machines were a Commodore 64 (8-bit) and then the Amiga (16 bit models that were very popular by 1988~1991, although the later Amigas are 32-bit). Lots of people followed this progression.
At the time many of us saw programming as a more advanced, "cooler" activity than just playing. It was admired in the nerdy circles that you came up with some clever routine in assembly that did something seemingly impossible for the machine.
I think the form of BASIC that came with the Commodore 128 is ideal for kids to learn. It even came with an asm monitor runnable directly from the BASIC prompt.
If I have kids I think I will teach them this way, it's so effective.
http://www.ticalc.org/archives/files/fileinfo/268/26877.html
I had no trouble understanding pointers when I had a go at learning C++ later (although I'm sure the experience has left a number of other bad coding habits).
The folks over at http://cemetech.net/ are working on a new version of that tutorial you linked, IIRC.
Immediately HTML+Javascript comes to mind, as a language interpreter that every kid's computer comes with.
I would guess that is the top "first language" for kids today, with things like C#, Python, Ruby, PHP and Java somewhere in 2nd place (as popular server side and classoom languages).
Which means, by extension, many of today's JavaScript frameworks are the VisualBASIC of this generation: frameworks that let you use a "child's" language for grown-up work. The reactions to using JavaScript for real applications exactly parallels what people thought about VB when it came out.
Javascript is so basic (pun intended), it's not even considered a real language. Someone who tweaks Wordpress templates wouldn't consider himself a programmer.
Take here to ask the same question.
What hooked me on BASIC was the graphic capabilities. It was relatively easy to create dumb little graphic programs: circles that changed colors and grew, etc.
My kids are growing up on the same old 8-bit machines that I grew up on. After all: those old 8-bit machines still work just fine for the task of learning to write code.
Any reason not to still use old 8-bit machines to learn programming? I can't think of a single one.
About 6 years ago when I was in high school we were using...Pascal! During that time I actually did some work experience with Borland (creators of Turbo Pascal) and they found it hilarious we were still using it.
Though the beginnig was with a blow to the head, I did enjoy the immediacy of BASIC.
(Edit: I had to change the variable to caps)
- read in the text file of the new process, which was a specially programmed QBasic program that included predefined hooks to facilitate preemptive multitasking and that was capable of saving and loading its state (i.e. values of all variables).
- merge this text file with the text files of all other running processes, including the "kernel", and saving the new "system image" to disk.
- call the "save state" of all running processes
- exit from QBasic by running a batch file that would restart QBasic with the new system image, which would initiate by calling the "load state" of all processes.
It kind of worked :-) Such a pity I lost that code...
It's a strange language to celebrate in retrospect in that it lacks the street cred of both academics and hard core engineers. To your point, in a sense it's like remembering your first bike.
Of course the first mechanic of that first bike made his way to the Dartmouth presidency.
Pretty much every 8-bit came with a BASIC[1]. I would imagine a lot of kids today don't program anything since it is much less accessible.
1) had to buy the cartridge for the Atari 8-bits
In most every possible way (except possibly writing files), Javascript simply wipes the floor with Basic.
I think there's a lot of value in letting people approach programming through doing very simple stuff such as automating calculations. Of course a potential downside to that, which was a big problem for Basic, is that this can get in the way of learning about program structure early on and encourages spaghetti code.
But you could get a ZX81 for only $25, which is $56 in today's dollars. But that's about the price of a Raspberry Pi.
I could get a ZX81 and Atari 400 in retail stores, the average non-tech parent has no hope of ordering a Raspberry Pi.
What? The above post just discredited that. Remember, you have to factor in inflation and equivalent purchasing power.
The fact about ordering a Raspberry Pi is more about distribution than price.
If you want to look at ZX81 equivalents, you have extremely cheap Android-powered devices. In my country (3rd world) you can get an awful Android tablet for U$ 50 (your ZX81 equivalent). Not to mention EVERY school-age child in my country owns a computer (because we bought into OLPC).
I agree that it's harder to learn programming on a tablet than on a ZX81 (which cheated by not including a display).
If you count a computer with no displa as an equivalent, you can buy a refurbished tower with no monitor for U$ 50 (and they are sold in stores here).
When people talk about computers getting cheaper, particularly the car comparison that Bill Gates made, they don't factor in either. Low income families in 80s could come up with $100 easier than they can come up with $600 now. Non-techincal parent don't buy their kids refurbished and have no hope of getting a Raspberry Pi in a condition that their kids can learn to program on. OLPC is a government partnership program that has not been generally available in the US except as a 2 for 1.
Best of all, being an interpreted language meant that you often had the source available to tinker with--"open source" of sorts. I remember tweaking GORILLA.BAS when I was 12, altering colors, inserting extra screens and text and silly stuff like that.
I think there's a whole generation that grew up on BASIC. I wonder what today's generation growing up on?