82 comments

[ 3.3 ms ] story [ 149 ms ] thread
We really need to find a way to restore the "home computer": You turn it on, there is a BASIC prompt.

(Of course we can't restore it 1:1, but that quality is so valuable)

UPDATE: I was probably a bit, er, terse. I am really about restoring that quality, and yes, the world has moved on and is in many ways better, so we absolutely cannot "go back", and yes, it is absolutely not a trivial problem. In fact, I'd say it is very, very hard. But so worthwhile.

Components are: open source; languages, particularly for UI programming that make "open source" meaningful (giving people the ability to tinker); development/customization interfaces on devices (shame on you, Apple...and almost everyone else), languages and libraries/frameworks that collapse our incredible complexity stack for the many simple things we want to do, etc.

I don't think we can go back. It's like cars. The first cars were sold with the understanding that they needed a lot of maintenance by the buyers. Naturally car drivers got to understand their cars because it was necessary. Now you can drive a car without having a clue how it works. Same with computers. In the 80s it was assumed that would fiddle with your computer all the time. Now you can get a device and just use it.
I have problem with understanding the mindset of people that don't want to learn how the car work or how the computer work. But that is probably because for me it is easier to understand how something mechanical or electric work than to understand how people work..
Many people don't buy cars to understand how they work, they buy cars to go from point A to point B. Computers are much more useful to people than they were 30 years ago, so people don't buy computers to use a computer, they buy computers to accomplish a task.
If you bought a car in 1950 or a computer in 1980 you HAD to understand it if you wanted or not. That was a downside for many people but had the upside of bringing up people who knew how things work.

Most people don't care about learning how things work. Otherwise we'd all be engineers. And even among engineers there are only a few people who want to understand how things work.

There is something, likely many things, in your life that you don't understand the details of, something that an expert in that subject may chastise you for not knowing. Something that you take for granted that it just works, and never stop to think about the logistics.

And that's fine. You have your specialty, they have theirs. And when you need help with it, you don't need to be an expert in the subject because you can hire one for a short period of time.

I'll be honest, I don't know how my furnace works. It just does. And when it doesn't, I call an expert to fix it. Because that's gas and fire and a whole lot of pipes and there's an air conditioner somewhere in the mix and I think that's a humidifier attached? Doesn't matter, I have more important things to think about and I don't want to break it even more (or worse, blow up my house). I'll let the expert handle it.

Sure there are lots of stuff I don't know, but I do want to learn at least the basics about them. Not even saying I think it is something wrong with people that don't think like that, only that they in that way are different. Different is good and is what bring progress. I hire people for doing stuff like electricity and doing service on my daily driver, not because I don't know how to do it but so I can use my time on other things. But to me going out to the garage and work on an old car is therapy, it is relaxing and take my mind off everything else
I understand perfectly well how my car works. I know I could change the oil if I wanted to, yet I also know that I have never and will never do so, because it's messy, time-consuming the first couple of times, and you still have to dispose of the old oil anyway.

That mindset, my mindset, is completely alien to people of my parents generation. I think it's the same thing for hobby programming in my generation.

> Now you can drive a car without having a clue how it works. Same with computers.

Here's a qbasic program to draw a line on the screen.

    10 SCREEN 13
    20 LINE (X1, Y1) - (X2, Y2), COLOUR

What's the equivalent in a modern language?

  1. Open Paint (or other options).
  2. Click line icon on toolbar.
  3. Click canvas, hold down click.
  4. Move mouse.
  5. Release click.
Don't need a language to do it. Don't even need a keyboard to do it.
In the early 80s the computer was thought of and perceived by almost everyone as a tool to be used to achieve some further end. Today if people think of computers at all (given the ubiquity of embedded computing) it is as a means of consuming content or a communication channel.

I'm not sure there's a real path to "restore" that original mindset for the vast majority of people now.

Well back then, they had games which were consumption, and honestly, mostly what I use a computer for. I also programmed. I think the missing ingredient is showing off (as implied in an earlier post). In other words, when we wrote something, we would show it off to other people.
Of course those ROM BASIC interpreters tended to be very minimal implementations. It almost always made more sense to boot up DOS and run GWBASIC instead.

I remember getting the full Hypercard development stack with the Mac LC my parents bought when I was a kid. It just came with System 7, and given that there was no Stack Exchange or anybody around to ask I had to figure it out by reading other stacks. There aren't many languages you can learn with virtually no other programming experience from just reading the source, but Hypertalk had lots of syntactic sugar to help the young reader.

For anybody who has not seen it, Hypertalk code looked like:

  ask "What is your name?"
  
  put it into card field "yourName"
The language came with the UI builder built in, so making a button was as simple as dragging it onto the stack, then opening it up to write the callback directly into the object.

When you opened the button, you would see the text editor with:

  on mouseUp

  end mouseUp
already populated
Nowadays, you turn it on and you get access to most of the collective knowledge of the world, can connect with anyone, that kinda thing. Computers and devices are several orders of magnitude more capable in various dimensions than they were back then, and IMO "kids these days" get to use it to get access to a LOT more possible areas of employment than they did back in the BASIC era. I mean what could you do with a computer back then besides basic text entry, some simple games, and programming? The last part was for some people - the privileged few that actually had access to a computer - the most exciting part.
We've pretty much got it in the Raspberry Pi. Having a distro that boots straight to a python REPL is not a significant challenge at all.

I mean, you can do the same on any computer, but SBCs seem to make people approach them differently. By not looking at all like a PC, people simply forget to treat them like a PC. And it's fantastic.

I don't think this actually solves the problem though. The problem is that there's no magic anymore. It's just normal. I know children who aren't quite walking yet, can't quite form the word "banana", but can operate an iPad comfortably enough. They will never, ever, approach a computer with the sense of wonder that I did my Atari.

Computing is simply so universal that today's children approach it with the same awe and wonder as you would electric lights or running water. That doesn't mean we'll have no plumbers, electricians, no-one will be fascinated by electronics, etc. But it does mean that it'll never be the same as the 80s.

> Computing is simply so universal that today's children

> approach it with the same awe and wonder as you would

> electric lights or running water.

I think a better analog would (should?) be paper and writing, a medium not a tool (see Alan Kay). Just because pen and paper are ubiquitous and seem unremarkable (they are not, they are extremely remarkable and refined information processing/storage technologies!), doesn't mean they can't get used to create. And of course computers are used that way by a lot of people, but only in simulating old media. So in many ways "computing" is not universal. Tools built by computing and often simulating other tools are.

Of course, you needed to write down the code instruction in order to play video games in the 80's

Kids were only motivated by the idea of playing, like kids today, the difference is that nowadays you can just launch League of legends

:) I had to made my own video games. And I had to type them if I wanted to play. I really didn't play that much since I had already spent my time typing them.
> you can just launch League of legends

And, while one could have a reasonable expectation of being able to write some crude games in the 80's, the idea of someone being able to write a LoL is completely absurd.

I was one of those kids who started with BASIC at age 8 in the 80s.... and I really disagree with modern scripting languages being more difficult. They have more things you can do, but it isn’t harder to make a simple program.
Also, it's so much more accessible now. I've been working with kids and it's amazing how many know how to do some basic work in the browser's Javascript console.

Even if most people never go on to program more than that, those are the baby steps that you climb from if you do.

> Another big change that can be attributed to developers starting at a later age is that programming is a lot harder now. The BASIC dialects, which many people learned to program with in the 1980’s, have largely taken a back seat to more powerful (but more complicated) languages like Python, JavaScript, and Java.

I think the author is romanticizing the past too much and could probably use a good refresher course on the history of CS and programming languages.

Agreed. Discovery might be harder in some ways (doesn't ship with a normal PC (well, a JS interpreter does), you'd have to know/figure out which of the thousands of options is a good one), but other than that I'd say e.g. basic Python is as accessible as BASIC, and you can easily get a treasure trove of information about it. Python is a more complex language, but you don't need all of it.
How long from the time I power on until I print “mikestew is awesome.” in a loop in Python, on a fresh install of $OS? On an Atari 800 or Apple II, the answer is “how fast can you type two lines of code?”
A few minutes. I don't think the time necessary is all that important.
What I feel is most important is reducing the amount of "friction". if the OS is a GUI Linux with Python, it's just a matter of:

- opening a terminal

- `python`

- `print "mikestew"`

The friction to get over is the Terminal ("You mean I have to type to get the computer to do something? Why can't I use my mouse?", and the situation if the above fails because you were using Python 2 or 3.

> Discovery might be harder in some ways

“Might be”? I mean, compared to “boots to BASIC REPL” (or even “boots to DOS prompt”), discoverability of a minimal usable programming environment on modern consumer OSs is much worse.

I would imagine that people who learn to program earlier are more like native speakers. As we know age is very important when we acquire natural languages
That was me with and BASIC and QBASIC. I wrote my own metronome so I wouldn't have to buy one!
I wanted to be a business man as a kid (See pet Businessman Kids in the Hall). I would look at the source for every program Apple provided in an attempt to help me to learn how to build programs (the few that were in basic vs hex).

I started programming at roughly 7 in 1980 by sneaking away to get on the Apple ][ computers the school had. My own 5.25" disk was like a gateway into another dimension.

I've done several speeches on career days at my local elementary, middle and high schools. Kids have no interest in learning how computers work anymore in my experience. I always offer them full lists of resources and offer free mentoring. Have never had a kid follow up in 20+ years of doing this. Which I would have killed for that opportunity as a child.

I think partly it's when I describe the job of being a game programmer though. It's work, what they want to be is a game designer, which is really just a game player. And there's absolutely nothing wrong with that. I just wonder where all the curious kids went.

Children especially are reluctant to ask esp about something they aren't sure about. Talk to the parents. Even better start an after school computer course, change a few hundred and you'll have a waiting list.
Job security for us software pros. One day, 20 years from now, there will be an actual shortage of engineers, not the fake shortage that employers are bellyaching about today. I figure we'll be able to charge about $1-2k per hour to dive deep and fix a legacy C++ program by that point?
>I figure we'll be able to charge about $1-2k per hour

Knowing my luck, that will be $15 / hour in present dollars. :)

(comment deleted)
That, honestly, wasn't programming. It was very small scale tinkering, or copying programs out of listings. Or typing the command to load a tape.
All of that was the first baby steps. Everyone my age that had a computer soon went further and began to modify and write their own programs and games.
I have to agree. I tried typing in programs from magazines and such but that didn't make me interested in programming at all. I didn't really get serious about writing code until late in High School / College.
As a kid I typed in all 450 lines or so of a Star Trek game I found in a BASIC computer games book back in the early 80s. I remember it taking ages but that's probably just an artifact of my bad elderly memory. By the time I was done, I didn't even want to play Star Trek, I just wanted to improve the game and fix some things that didn't work just right. When I graduated over to a PC, I ended up porting it to Pascal and giving it a GUI.
We can complain that programming is more opaque and difficult than it was. We like to remember that when you boot an Apple II, you can start typing code a split second after you flip the power switch. Modern programming environments aren't like that, and if you told the average programmer to write a program to draw a graph of sin(x) they might stumble around looking at their APIs for a while.

But take a look at Scratch, which is commonly used to teach children programming. It's amazing, way better than anything we had in the 80s or 90s.

I was an 80s kid (born in 1980, in fact). I started programming in BASIC on the family Apple ][e sometime between kindergarten and 2nd grade, I can't remember anymore now. My mother is a software engineer (who started programming in college, on punch cards) and had to suffer through me constantly badgering her for help early on :)

The Apple ][e became an Amiga and I moved on to AMOS, then a 486 when I finally switched over to hacking around in "real" languages like C and Pascal on DOS, windows, and eventually Linux. Then came college (I knew I was going to major in Computer Science since... always).

My resume shows a little more than 10 years of 'professional' programming experience, which is all anyone cares about, but when you hire an 80s kid like me, you're getting a lot more experience than you imagine.

Yea, yea, a lot of the early stuff was undisciplined hacking and flailing without the proper theoretical grounding of a CS education. But I say it still counts for something :)

AMOS! I created an image editing program in AMOS and several games. I must have been around 11 or 12. I never published any of them sadly, and they've long since disappeared. Happy memories
I started in the late 1970s at age 11-ish, on a TRS-80 Model I.

One of the local high schools bought a classroom of them and offered "Computer Math" as an evening extra-curricular for younger kids.

The difference then was that access to computers was something new and exciting. Today's kids grow up with computers from almost birth. They are commonplace items and don't strike up as much interest or curiosity.

I remember the facility my mother worked at had a family-day and I went on a tour, and got to see an actually operating Cray-2 (with the coolant waterfall). It was mesmerizing.

So much cooler than rows of cabinets full of rack-mount equipment in a modern data center :)

I was born in 74 and around 1982 someone gave my family a Commodore VIC-20, a computer that you hooked up to the TV. It had no storage, so every time I wanted to play a game called Moon Patrol, we had to type in 3 pages of BASIC.

Most of the time I asked my mom to type it in, but since I actually did it a few times by myself I tell people that I started programming when I was 8. However, I didn't really get started until a few years later.

I'm so glad for that computer though because it got me into video games which is what got me interested in building computers and then programming.

I was born in 1985, but our family could only afford a very old hand-me-down IBM PCjr back in 1991. I started programming BASIC by hand entering code from the examples given in the manual. When I would get stuck or have a question I would ask my Dad and he would tell me I was "jumping the gun" because I would be deep into the latter half the the manual asking him what a word meant. I wasn't discouraged though and I think the time I spent learning to work through the issues myself was very valuable to my skill as a programmer later in life.
Well, we had no choice and it was really in our faces to get involved. Nowadays you can be entertained by a computer endlessly without having any real idea of how it works.
It is not obvious to me when i "began coding".

I edited a QBASIC program (`gorillas.bas`) in ~1994. I was 9, and an IBM systems programmer was a foot away from me. I wrote a LOGO program to draw my initials on the screen when i was 11. I stumbled through a J2SE 1.4 course in at 16 largely by trial and error, and a c++98 class at 18.

The first time I wrote a program and understood anything about what was happening in moderate detail, i was 19 or 20. (matlab, and shortly thereafter, latex)

The first time I thought "huh, i can actually code", i was 25. (c#)

I'm 33 now, and I am finally a semi-proficient coder. (python, c#, matlab, latex, ... )

I started in 1981 when I was 15 on an Apple ][. This was in Germany and I was a tiny minority, most kids didn't start until late high-school or early university.
Think about the differences in the environment:

80s: databases, programming, administration, networks ... that's what you did with computers, and nobody did this yet. Computers were the future and parents wanted their kids to know the future, a computer. Only thing to do ? Developing, and later administration.

Today: cell phones, games and ADS ADS ADS. Distractions, ADS, LOOK HERE, ADS, ADS, ADS. Everything is a computer, and actual computers (the ones you can actually program) are the past, not the future, and they won't come back.

Oh and by the way, to develop for those ADS ADS ADS computer/"phone", you need either a $1200+ machine (ie. a macbook), or a $800+ machine (one that can reasonably run the android emulator + full IDE, which is bloody heavy, more if you want it in laptop form).

There are interesting programming environments for kids that aren't iOS and Android. Roblox comes to mind.

Your comments on computer prices leave me scratching my head. The Commodore 64 launched at $595 and that didn't include the disk drive. Adjust that for inflation.

Also, the tools are free today. I don't remember what I paid for Editor/Assembler on my TI-99/4A, or my first copy of Borland C for MS-DOS... but it was a lot.

Sure but the 80s programming environments were useful. You could actually see your programs you made 10-11 years old used. For bookkeeping, or learning, or ...

No chance of that with Roblox and the like.

Thanks to my trusty Atari 800 in 1981 I learned to program through magazine articles and books and experimenting with code at home. It was a great experience.
Shouldn't it be "Gen X kids"? I thought that "millennial" referred to the generation born during the 80s and 90s.
The title to me read as:

Gen X kids programmed at a younger age than millennials.

The main problem with programming is that it is seemingly useless as a hobby. I have been programming for many years and am quite experienced, yet I never managed to keep it up consistently because programming project ideas were either way too complicated requiring hours of research, or really boring. The main issue with programming as a hobby is coming up with realistic and non-tedious projects to do.
My first experience with programming was with ZZT, where we could use it to make our own levels and interactive thingies in said levels - basically, gamification. Of sorts.
The thing that got me into coding was running a BBS in the 80s and early 90s. The ones I ran came with source code, so I modified the BBS to add features, or make it look unique like someone would do to a car. The changes were directly seen and used by the users, so it was easy to see the impact. We would share our code by releasing "mods," so other people could use them. It was a lot of fun.

I relate to Woz saying he did the stuff he did to show (off) to his friends. With the BBS, it was the same thing. We had a whole community, but since it was mostly local, it was closer. We of course had trolls back then too.

Computers before modems were quite boring, especially with limited resources. You had the manual that came with your computer and maybe another book or two, or a magazine subscription. Getting a modem really opened up a much larger world of socialization with other computer people.

FWIW, I started using computers in earnest in 3rd grade. The local school got a new computer lab of TRS80s and offered after school computer classes; one for kids and one for adults. I had been fascinated with them before, but I don't remember when exactly.

I caught the end of the brief period where people were more interested in programming itself, whereas now programming discord, even in hobby circles, seems to revolve around entrepreneurship and capitalism.
I wonder is this is in part because the older home computers often needed the users (kids) to write out the BASIC game programs in order to play them. This seems like a nice way to get kids interested in programming.
Maybe kids today are focused more on "disrupting" markets rather than take a step back and learn how to program those tools in order to disrupt.
That's because computers today have a million times more possibilities, especially if connected to the internet.

The lucky few nerds that had access to a computer back when (and keep in mind it was very much a luxury device with limited use for families) didn't have that much else to do with it, compared to today.

I'd argue that "today's millennials" (urgh) get to explore a lot more career and hobby opportunities than they would with computers back then. The computers back then were specialized devices for the elite and already technically inclined; today's computers (and phones, etc) are for everyone.

When you booted up an Apple II+, you were dumped immediately into a command prompt. To do ANYTHING useful, you needed to learn to type a few commands like looking at the directory contents or running a program.

If you just typed in the line '10 PRINT "I AM THE GREATEST!"'

and then "RUN", you had a working program.

Type in a '20 GOTO 10', and you were making magic happen.

These days, kids turn on a computer or their phone and they have no clue as to what directories are, source code looks like, or how to do even basic things with a command line.

Things are just too easy for kids these days.

It reminds me of the Butterfly Struggle Story: http://instructor.mstc.edu/instructor/swallerm/Struggle%20-%...

You could also buy magazines with 1000's of lines of Basic code that required you to simply type it in and get it working.

So, programming learning methods were different.

First, you had to type in all that code, and inquiring minds would eventually wonder what each of those lines did. So you would learn something new with every month's magazine that arrived in the mail.

Second, you had to debug all that code you typed in, because no one can manually type in 1000's of lines of code copied from a magazine without errors.

it was a fun time to learn....

It was worse. AppleSoft Basic was so limited that if you wanted to take full advantage of your computer as a programmer, you had to type in machine language hex code.

I remember typing in pages of hex code to add the ability for AppleSoft basic to draw in double hires mode, another program to get more sounds from basic than the simple peek command could do, shape tables so you could write text in graphics mode, etc.

At least with Basic you would get syntax errors.

I never did have a real assembler for my Apple IIe. I used the built in miniassembmer to learn 65C02 assembly. But you couldn't use that to type in the assembly version of the code in magazines.

>Things are just too easy for kids these days.

You can either have something be really difficult to learn, or you can have mass-market adoption. I'd wager that easier-to-use computers have a benefit that far outweighs any negative that comes from hiding the underlying code and commands.

I don't know how to fix the bus I'm riding on if it breaks down, but that's okay because most of the time it doesn't break down and if it does, there are other people who know how to fix it. And if I wanted to learn how to fix the bus... it's really easy to open my laptop and go to YouTube and watch a video on how a bus works.

There's no need to force me to build my own bus before I can ride on it. People who want to build buses will learn how to build buses. And people who want to build websites that teach you how to build a bus will learn how to build a website to teach people how to build a bus.

You don't need to force them to learn it. If they want to, they will.

The whole point of the article was how kids these days don't get going on learning to program until later.

While I like a nice UX as much as anyone, I think that the challenge of using a computer back in the day had its beneficial outcomes.

> Things are just too easy for kids these days.

I think it's quite the contrary. When you booted an Apple II, a C64, you get instantly inside a REPL. In order to get into any REPL on a Windows box, you need to choose a language, find a place to download it, read instructions, install it and run it. Then you need to figure out how to run it (or compile it into something you can run).

That's a huge stack of concepts even to start it. Then you may have your first contact with alien things like a "console" or, worse, have to deal with the mile-high stack of any GUI.

In all fairness, I started in my early teens and, in hours, had a program. In months I had a pretty good understanding of how my Apple II+ worked. If anyone starts in their teens now, it'll take a couple years to have command of a platform.

I'm not saying kids have it too easy in getting to the programming layer of a computer.

I'm saying that kids have it too easy in terms of being able to use their computers without having to even learn what a command line is.

The easy part is how they just turn on their computers and click the mouse at icons.

Touch screen phones and tablets are depriving kids of a general purpose computer. The training wheels environment ensures that there is minimal contact with the actual mechanics of how the device works.

Cory Doctorow had a great article on this 6 years ago: https://boingboing.net/2012/01/10/lockdown.html

I think it is similar to how vehicles evolved in the early 20th century. In the 1940s and 50s, car engines were designed to be serviced by the user, and the relative novelty of automobiles meant that a lot of young men made it their hobby to crack open the hood and tinker around.

Later, as repairability and novelty declined, mechanic work became professionalized for all but the most hardcore hobbyists.

My elementary school kids are told about CodeMonkey in school, and they play with it a bit, but it is just so sad to see them exposed to coding in a task oriented, graded system, as opposed to the way I was introduced to coding in school, with Logo.