Agree with the author’s thesis of how the folks that “grew with computers” have an advantage over those approaching them now, in terms of understanding the inner workings. I’m not sure that this matters much in terms of solving actual problems though, which is probably a good thing.
But I somehow find it a little bit sad that this is the case, so I’ll plug my own https://www.endbasic.dev/ because it’s very fitting in this context :) I’ve been building it precisely as a way to understand everything that’s going on by offering that 1980s experience (although it’s still far from fulfilling the full promise).
Also, buried in the article is a reference to the https://10print.org/ book. I recently came across it at HPB and it has been a pretty entertaining read. Couldn’t believe there was so much to write about such a simple little program!
I’m not sure that this matters much in terms of solving actual problems though ...
That is certainly correct. But The Industry hasn't successfully abstracted things such that pure problem solving is all there is to software creation. Current abstractions create a reliance on (probably inefficient, likely costly) infrastructure. One needs to understand how so much of a system works so that changes can be made to improve performance and/or reduce costs.
I took a look at EndBASIC and I find it rather awesome. But I also think it's limited to folks who have experience a perspective similar to my own. When looking this from my 7yo's POV, she would have no idea where to start. I could guide her, but it would be nothing like how I learned, alone, on an Apple //c. I'm certainly biased in thinking "how I learned was a pretty good process," and I wouldn't want to assume anyone else learns like that, but exposure to a simple (but complete) system and the ability to program it seems like a phenomenal way to learn.
----
I was thinking recently that it would be beneficial to teach the last century of technological advancement at a slow-ish pace. Kids spend a few months getting to know/understand how early telephone systems routed calls by using the same equipment from the day. Advance up through rotary dial, touch tone dialing, cordless phones, mobile phones ... over the course of a couple years. Parallel to that, the same kind of thing with computers and programming - switches, punch cards, tape, disk; mainframe, mini-, micro-computers; ...
Why start at rotary phones? Why not start them out on Morse code? Semaphore? Naval flags moved data faster than horses for centuries. Should kids learn how to cut pens out of quills?
While I agree with the thesis, I also believe it is possible to over emphasize it. A couple of examples from someone who is a product of that generation:
Given my age at the time, programming was accessible but modifying hardware was hard. Part of the reason is that few sensible adults would hand a soldering iron to a six year old. Part of the reason is that software is easier to learn than electronics. Part of the reason is the hardware was the product back then, something you did stuff with rather than something you did stuff to (contrast the 1977 Apple ][ to the 1982 Commodore 64, and you'll get an idea of how quickly the mindset changed). It wasn't until my early 20's until I learned that people were not only modifying the hardware, but making their own peripheral cards. Someone ten years older than me likely had a different perspective simply because electronics was more relevant ... since software hadn't started eating the world.
Even those people were likely in the same boat as I if they took a moment to think about the generation prior to them. I remember reading something by one of the grandfathers of computing. They blew my mind when they started talking about hard drives, not in terms of the logical layout of the disk nor in terms of the electronics but in terms of the physics. There was a time when people had to think about computers in those terms because they were in the process of developing those lowest layers of abstraction.
I guess what I'm saying is that each generation will have a different perspective on what computers are and how computers work. They will also have different perspectives on what "low level" means. While it is sad to see a lot of the old knowledge and old ways fade into obscurity, we shouldn't pity the younger generation for not having what we had. First of all, the old knowledge hasn't really disappeared for those who choose to pursue it. Second, they are going to be building a new layer on the technological stack anyhow. What they need to understand is the layer directly below them, not what's twenty layers down.
We still have that 80s experience. Lest you forget, the TI83/84 is the only Collegeboard approved graphing calculator for the SAT and is thus the public school standard through to today. Well into the 2000s and probably still now bored teens have TI BASIC with them.
My high school in Norway used TI-84+ in the math classes and exams.
Me and a friend in my math class spent a lot of time writing programs in TI-BASIC.
One of my “proudest” creations was an implementation of Snake. My version of Snake has a particularity to it tough. The features I was using to keep track of segments of the snake were slow to access, and the slowness increased with more data.
So whereas the real snake goes faster and faster over time to make it harder and harder, my snake went slower and slower. And when the snake in my game reached a certain length, the game crashed :p
But that’s ok, I had a lot of fun anyways. My version of snake did not need to be perfect. I liked to play it anyways.
I also transferred my Snake game to the calculators of some other people in my classes so that they could play it too. I don’t remember if that was a case of other people asking for a copy of the Snake game I’d made, or if it was more like me convincing others to allow me to put a copy of the game on their calculator. I like to think it was the former, but it is just as likely that it was the latter :p
the vast majority of people with access to computers in the 80s didn't harness the opportunity to be able to understand a lot of what was happening
that was always going to be the case, and similarly people nowadays more often than not don't harness the vast opportunities that they have at their fingertips
It's true that most kids used their computers just to play games (plus ça change ..). However for me as one of those kids who did love programming my ZX Spectrum as well as the odd game, there were a couple of fun crossovers:
- Working out the 'infinite lives' Poke for a game; this typically involved loading the game's machine code, searching for the 'dec a' and 'dec (hl)' instructions and poking a 'nop' into each location in turn and trying the game. This crude approach was surprisingly effective
- When the microdrive (a fast tape device) came out, getting your games stored in that. This was a challenge as the 'drive required extra ram but there was none spare if the game was 48k. I worked out an elegant hack that involved multiple loads of the game into different areas of memory, including one that wrapped around the top of memory, 'wrote' most of the remainder into ROM and then the last few K into the screen buffer, which is how you got the extra space needed. Then a short routine to reorder everything tacked on :)
I don’t think that growing up with a c64 made kids into great programmers, but it did ingrain the notion that a computer is a programmable machine at its core. That complex things are just collections of simpler things.
It’s very hard to have the same realization growing up with current technology. It just too easy to see computer(/phone/tablet) as a complete appliance, which operation you never really alter. The same way you don’t mess with your washing machine outside of its designed functions.
The C64 was incredible but I thought skipping Basic and going straight to 6510 assembler was the way to go. Got all those extra sprites by interrupting the scan lines, the huge performance advantage, etc
More than once I wiped my source code while zeroing memory.
I enjoyed Byte magazine but Compute! was my favorite:
I bought one of these 2nd hand in early nineties after being introduced to the RPN way of doing things with a Hewlett Packard 28S calculator. Had fun with this machine although it was similar in many respects to ZX81 (and supposedly Spectrum) I grew up with.
The soft- and hardware had similar issues. For a meaningful programs in both cases you would quickly need to descend to machine code, which on both systems was very enjoyable experience. (E.g. BBC micro had far more mature software stack.)
But you are probably right in implying that Forth probably was too alien to ever gain mass adoption, even if the soft and hardware would have been superior to more common BASIC alternative.
I was literally the person that just wanted to play Ultima (Underworld). But when things didn't work because the sound card didn't have the right jumper settings, or there wasn't enough free ram, or I just didn't understand how to start the game up in the most optimized way, I had to figure that stuff out, without the internet. Ultima jump started my IT career.
I'd add that right around 1983 is sort of a special date. It was just around that time that it was becoming reasonable for a middle-class person to buy a home computer. Go back a few years from that time and you could potentially program in Basic or Fortran but you were doing so over a terminal or with punch cards and didn't really have any direct interaction with the computer except in relatively specialized situations.
1983 was when I got my first computer, a Timex/Sinclair 1000, followed up about a year later by a Commodore 64. Unlike many who had their first computing experiences then, I was already an adult, married and almost 30 years old. My experience and enthusiasm for small computers led directly to the IT career I started in 1989.
Isn't it more a case of X% will become programmers if given the opportunity. Computers of old maximised that opportunity thus increasing the absolute number of programmers.
there is truth to that, but mainly in a social sense - the best that was out there in practical and economic terms for most people, also was a very good learning platform
but in terms of just existing, nowadays there is better; you can even just go back and use those old machines in more accessible ways than back then, and for free, too... whereas back then it was a middle class kid thing
Comments
Agree with the author’s thesis of how the folks that “grew with computers” have an advantage over those approaching them now, in terms of understanding the inner workings. I’m not sure that this matters much in terms of solving actual problems though, which is probably a good thing.
But I somehow find it a little bit sad that this is the case, so I’ll plug my own https://www.endbasic.dev/ because it’s very fitting in this context :) I’ve been building it precisely as a way to understand everything that’s going on by offering that 1980s experience (although it’s still far from fulfilling the full promise).
Also, buried in the article is a reference to the https://10print.org/ book. I recently came across it at HPB and it has been a pretty entertaining read. Couldn’t believe there was so much to write about such a simple little program!
That is certainly correct. But The Industry hasn't successfully abstracted things such that pure problem solving is all there is to software creation. Current abstractions create a reliance on (probably inefficient, likely costly) infrastructure. One needs to understand how so much of a system works so that changes can be made to improve performance and/or reduce costs.
I took a look at EndBASIC and I find it rather awesome. But I also think it's limited to folks who have experience a perspective similar to my own. When looking this from my 7yo's POV, she would have no idea where to start. I could guide her, but it would be nothing like how I learned, alone, on an Apple //c. I'm certainly biased in thinking "how I learned was a pretty good process," and I wouldn't want to assume anyone else learns like that, but exposure to a simple (but complete) system and the ability to program it seems like a phenomenal way to learn.
----
I was thinking recently that it would be beneficial to teach the last century of technological advancement at a slow-ish pace. Kids spend a few months getting to know/understand how early telephone systems routed calls by using the same equipment from the day. Advance up through rotary dial, touch tone dialing, cordless phones, mobile phones ... over the course of a couple years. Parallel to that, the same kind of thing with computers and programming - switches, punch cards, tape, disk; mainframe, mini-, micro-computers; ...
It'd be pretty expensive though... :(
Why start at rotary phones? Why not start them out on Morse code? Semaphore? Naval flags moved data faster than horses for centuries. Should kids learn how to cut pens out of quills?
It’s been a few years but the book Code by Charles Petzold covers a number of those topics which I found interesting to learn about (but not study).
https://www.codehiddenlanguage.com/
We should absolutely include the telegraph, wired and wireless. Which leads into radio…
I just picked an arbitrary starting point to illustrate the hands-on approach I would like to see.
We made and used quills in primary school, in a sort of arts and crafts/history crossover, I suppose. Didn't hold us back any, hopefully.
While I agree with the thesis, I also believe it is possible to over emphasize it. A couple of examples from someone who is a product of that generation:
Given my age at the time, programming was accessible but modifying hardware was hard. Part of the reason is that few sensible adults would hand a soldering iron to a six year old. Part of the reason is that software is easier to learn than electronics. Part of the reason is the hardware was the product back then, something you did stuff with rather than something you did stuff to (contrast the 1977 Apple ][ to the 1982 Commodore 64, and you'll get an idea of how quickly the mindset changed). It wasn't until my early 20's until I learned that people were not only modifying the hardware, but making their own peripheral cards. Someone ten years older than me likely had a different perspective simply because electronics was more relevant ... since software hadn't started eating the world.
Even those people were likely in the same boat as I if they took a moment to think about the generation prior to them. I remember reading something by one of the grandfathers of computing. They blew my mind when they started talking about hard drives, not in terms of the logical layout of the disk nor in terms of the electronics but in terms of the physics. There was a time when people had to think about computers in those terms because they were in the process of developing those lowest layers of abstraction.
I guess what I'm saying is that each generation will have a different perspective on what computers are and how computers work. They will also have different perspectives on what "low level" means. While it is sad to see a lot of the old knowledge and old ways fade into obscurity, we shouldn't pity the younger generation for not having what we had. First of all, the old knowledge hasn't really disappeared for those who choose to pursue it. Second, they are going to be building a new layer on the technological stack anyhow. What they need to understand is the layer directly below them, not what's twenty layers down.
We still have that 80s experience. Lest you forget, the TI83/84 is the only Collegeboard approved graphing calculator for the SAT and is thus the public school standard through to today. Well into the 2000s and probably still now bored teens have TI BASIC with them.
On US.
That was never a thing in many European countries.
For example I was always a Casio user.
FX-4500P, FX-880P and CFX-9850
My high school in Norway used TI-84+ in the math classes and exams.
Me and a friend in my math class spent a lot of time writing programs in TI-BASIC.
One of my “proudest” creations was an implementation of Snake. My version of Snake has a particularity to it tough. The features I was using to keep track of segments of the snake were slow to access, and the slowness increased with more data.
So whereas the real snake goes faster and faster over time to make it harder and harder, my snake went slower and slower. And when the snake in my game reached a certain length, the game crashed :p
But that’s ok, I had a lot of fun anyways. My version of snake did not need to be perfect. I liked to play it anyways.
I also transferred my Snake game to the calculators of some other people in my classes so that they could play it too. I don’t remember if that was a case of other people asking for a copy of the Snake game I’d made, or if it was more like me convincing others to allow me to put a copy of the game on their calculator. I like to think it was the former, but it is just as likely that it was the latter :p
For me it was making an implementation of tic tac toe that never lost, just so that I could put 0 players as an interface option
https://www.youtube.com/watch?v=s93KC4AGKnY
The calculators they have today in high-school here (France) use Python as programming interface (TI-83 Premium)
let's not overly romanticise it though
the vast majority of people with access to computers in the 80s didn't harness the opportunity to be able to understand a lot of what was happening
that was always going to be the case, and similarly people nowadays more often than not don't harness the vast opportunities that they have at their fingertips
It's true that most kids used their computers just to play games (plus ça change ..). However for me as one of those kids who did love programming my ZX Spectrum as well as the odd game, there were a couple of fun crossovers:
- Working out the 'infinite lives' Poke for a game; this typically involved loading the game's machine code, searching for the 'dec a' and 'dec (hl)' instructions and poking a 'nop' into each location in turn and trying the game. This crude approach was surprisingly effective
- When the microdrive (a fast tape device) came out, getting your games stored in that. This was a challenge as the 'drive required extra ram but there was none spare if the game was 48k. I worked out an elegant hack that involved multiple loads of the game into different areas of memory, including one that wrapped around the top of memory, 'wrote' most of the remainder into ROM and then the last few K into the screen buffer, which is how you got the extra space needed. Then a short routine to reorder everything tacked on :)
I don’t think that growing up with a c64 made kids into great programmers, but it did ingrain the notion that a computer is a programmable machine at its core. That complex things are just collections of simpler things.
It’s very hard to have the same realization growing up with current technology. It just too easy to see computer(/phone/tablet) as a complete appliance, which operation you never really alter. The same way you don’t mess with your washing machine outside of its designed functions.
Yeah, sort of the same today.
The C64 was incredible but I thought skipping Basic and going straight to 6510 assembler was the way to go. Got all those extra sprites by interrupting the scan lines, the huge performance advantage, etc
More than once I wiped my source code while zeroing memory.
I enjoyed Byte magazine but Compute! was my favorite:
https://www.commodore.ca/commodore-gallery/compute-magazines...
In my opinion, it’s even more exciting learning machine learning today than 6510 assembler on the C64.
I’d skip early the 1980’s nostalgia and begin the next quest. Kaggle is a good place to start:
https://www.kaggle.com/mmellinger66
And this book:
https://www.oreilly.com/library/view/hands-on-machine-learni...
I always wonder what could have been, if the Commodore 64 and similar machines would have come with Forth instead of Basic.
https://en.wikipedia.org/wiki/Jupiter_Ace
I think the answer is: They wouldn't have sold very many :-(
I bought one of these 2nd hand in early nineties after being introduced to the RPN way of doing things with a Hewlett Packard 28S calculator. Had fun with this machine although it was similar in many respects to ZX81 (and supposedly Spectrum) I grew up with.
The soft- and hardware had similar issues. For a meaningful programs in both cases you would quickly need to descend to machine code, which on both systems was very enjoyable experience. (E.g. BBC micro had far more mature software stack.)
But you are probably right in implying that Forth probably was too alien to ever gain mass adoption, even if the soft and hardware would have been superior to more common BASIC alternative.
the C64 didn't ship with it, but there were Forth systems available, notably "64 Forth" which was a superset of Fig-Forth
Agreed. I'd guess that for every hobbyist programmer, there were probably at least 10 people who just wanted to play Ultima or something.
I was literally the person that just wanted to play Ultima (Underworld). But when things didn't work because the sound card didn't have the right jumper settings, or there wasn't enough free ram, or I just didn't understand how to start the game up in the most optimized way, I had to figure that stuff out, without the internet. Ultima jump started my IT career.
I'd add that right around 1983 is sort of a special date. It was just around that time that it was becoming reasonable for a middle-class person to buy a home computer. Go back a few years from that time and you could potentially program in Basic or Fortran but you were doing so over a terminal or with punch cards and didn't really have any direct interaction with the computer except in relatively specialized situations.
1983 was when I got my first computer, a Timex/Sinclair 1000, followed up about a year later by a Commodore 64. Unlike many who had their first computing experiences then, I was already an adult, married and almost 30 years old. My experience and enthusiasm for small computers led directly to the IT career I started in 1989.
Isn't it more a case of X% will become programmers if given the opportunity. Computers of old maximised that opportunity thus increasing the absolute number of programmers.
there is truth to that, but mainly in a social sense - the best that was out there in practical and economic terms for most people, also was a very good learning platform
but in terms of just existing, nowadays there is better; you can even just go back and use those old machines in more accessible ways than back then, and for free, too... whereas back then it was a middle class kid thing
Most definitely did not, but for those that put some interest, it seems like it was much easier than these days.
Endbasic: marvelous execution, bravo!