Growing up I had a Commodore 64 and for some reason came into possession of another of David Ahl's books ("More Computer Games" I think it was called). It contained Eliza as one of the listings and it was a program that fascinated me so much I ended up creating a ton of clones, in horribly nested BASIC (though, to be fair, is there any other kind?)
On the Commodore 64, it was the only option. It had minimal support for a thing it called a "subroutine", but what it really was was a GOTO that pushed the source on to the stack and could be RETURN'd to that source. In particular, no concept of return value, no concept of parameters; everything's global. Modification of global values prior to the "call" is the argument passing, and modification of global values is the "return".
Commodore 64 BASIC, and 8-bit BASIC in general, was fully in the paradigm that Dijkstra was referring to when he wrote Goto Considered Harmful. (Not exclusively, of course.)
The 6502 processor itself also has very poor "stack" support, the hardware-supported stack is limited to 256 bytes at a fixed location. It's one of the things that make it hard to compile a modern language like C for the architecture, so even among compiled languages one would prefer something FORTRAN/BASIC-like.
To be fair, the 256 byte stack can essentially be used in assembly as 256 registers, which is also one of the features (along with indirect addressing) that make assembly on it awesome.
My relatively poorly researched impression of it is that it's half-way to portable C, with a proto-stack and pointers, essentially.
The on-chip stack on the 6502 was not intended to be used for implementing the stack for programming language procedure calls; it was intended to provide system extension functions that provide things missing in the 6502 instruction set,(for example, multiply), which had to be implemented with multiple instructions. For "modern" languages like C, 16-bit 2's complement integer arithmetic was expected but the 6502 native instructions were for 8-bit numbers.
They Create Worlds is a fantastic podcast in general, and I encourage folks with an interest in the history of games--or of computer tech in general, given the way it's historically tracked--to give it a listen. Alex is one of the true scholars of the topic.
Typing in a program from a paper source forces you to think about each line you're entering, it's more than just a 'slow way to distribute a program', it's also a teaching exercise along the same lines as how writing your notes in class are part of the learning exercise that reinforces your mental model of the subject.
I remember typing in a quiz-show game from "More BASIC Computer Games" (the sequel to this book) and somehow ending up with it displaying the answer and expecting the question. My dad helped me debug it. I was around seven years old at the time; I entered quite a few of the games in that book into our Tandy 1000 TX, using the ZBASIC compiler and editor, moving on to writing my own programs once I understood what I was copying. I've come to recognize that experience as one of the foundational pieces of my long-term career development.
Most of the lines I typed in where "2050 data 100,98,0,0,45,128,..." up to the maximum line length (256 character?) at which point it was "2060 data...." Nothing to learn there. I suppose I could look up each opcode and figure it out, but even then there were no names to guide me as to what anything means.
You were either typing in mostly game code (with a simple BASIC HEX ML loader), or were using a machine with a limited form of BASIC that didn't allow for easy graphics manipulation (the C=64 and VIC-20 were famous in this regard).
While I recall doing the same on my machine (TRS-80 Color Computer) - it was usually to get functionality that was lacking otherwise. I recall having to type a ton of DATA statements for an ML program that would give you simultaneous graphics and text on screen, like it was a native mode. Then there was another program (called "Bells and Whistles") that was essentially a 4-track music editor, similar to 90s era "tracker" programs; you could define simple waveforms as different "instruments", then build your music in a note-by-note "tracker" style - except the tracks ran left-to-right, not top-to-bottom! It would then output the music and show the notes playing (scrolling) - four channel, 6 bit music, with user-defined waveforms and envelopes. Truely amazing at the time!
Especially considering the TRS-80 CoCo did -not- have a sound chip. It was all done by the CPU and a 6-bit DAC (which was also used by the cassette tape interface for storage, as well in a convoluted manner by the joysticks).
I was probably typing in a program that was written in assembly language, and then the bytes were output so that I didn't have to type in the assembly code (which would be even more keystrokes with only limited additional ability to understand, not to mention everybody has BASIC, assemblers were rarer).
I was doing this on an Atari 400. There was plenty of power available from BASIC to get at the graphics and sound, but there wasn't the speed. BASIC was an interpreted language and so you had to drop to assembly to get enough speed for a large program to not feel slow.
Funny enough, this is my PhD research. Granted, I do agree that the examples should be more meaningful; however, offering students worked examples as typing examples to better train them on syntax errors is the general feel.
Really, you type in codes/programs from paper printouts for your PhD? I knew that some programming communities in academia still clung to old habits and way of doing things, but not like that!
No, I developed a platform that converts code formatted from TinyMCE into a PNG which is then an exercise for students. Students in turn retype out the program. The activity requires zero high level thinking, but presents a worked example of a CS concept. Since novices struggle initially with syntax errors, the exercise serves as a scaffolded process of practicing typing syntax without also trying to problem solve [1]. The hope and thought process is that the exercises get students comfortable with writing syntax without problem-solving so that when they DO problem-solve, they can rely on muscle memory.
The platform is currently deployed at NC State as an optional exercise for some of the classes and while there is no explicit "those students did better" (yet I hope...), I do have promising information like regular completers earn high final grades in the course and even potentially as an intervention tool for lower performing students. In that context, students that regularly performed lower on midterms scored higher on the final and earned a higher final grade than students that just "looked at the exercises" (it is optional). My current hypothesis on that data is that poor performing exercise completer's realized they needed additional practice, which helped boost their skills.
My comment history goes in better detail, but I describe it akin to drilling in other technical skills like cooking, music, dance, martial arts, etc.
I think this as an activity is one of the methods that causes much of the "prior experience" seen in some higher performing CS students. They learned about syntax errors and tweaking code while making these BASIC games, or in modern contexts like modding Minecraft.
Moving forward, my research then goes into optimal exercise sequencing for learning CS. If you are compiling more syntax errors during a traditional coding exercise, maybe do a few typing exercises or output prediction exercises before trying to code.
I will add though that I do attempt to retype code I find on StackOverflow rather than rely on copy pasting. I'm a PhD student that can't extract a tar file or correctly set up an Apache server configuration because I work primarily on a Windows machine and it's "not needed" for my career path. However, this lack of ability annoys me, so either I continue to rely on SO and having the Internet to save me, or I learn to do it myself.
Hey, I can still remember most of the copy protection poem from Faery Tale Adventure. Them's some valuable neurons that won't be repurposed any time soon.
I guess Gorillas and Nibbles didn't come with that book from the article, but with MS-DOS, so to have it with the book would have been a waste of space as they were already present on most systems
That book was somewhat "old" when I first encountered it as a kid in the 1980s. Most of the code in it was first created for minicomputers in the 1970s, probably running some form of Dartmouth BASIC.
The first "programming" I ever did was when we had computer day in third day, I bet a kid I could get to a higher level of Nibbles than he could. I read a BASIC book from the library, found the script and changed the START_LEVEL variable from 1 to 100. 20 some years later, I write code for a living.
We had a book or two of Apple II BASIC programs in the school library. They had just enough Apple-specific BASIC in them that only the simpler, text-basd games were usuable at home on my PC with QBASIC.
For some reason nobody ever thought to put those books in the computer lab which was full of various Apple II's.
I wish there would have been more explaination of the code, it was pretty much a couple hundred lines of LET X1=15 IF L2 < 1 GOSUB 12100
The People's Computer Company published What to do after you hit return. It was a large format book that collected many of the games published in PCC Newspaper, People's Computers, and Recreational Computing. PCC, before the microprocessor, ran storefront computer centers in the Silicon Valley and promoted the personal use of computers worldwide. There is a whole generation of kids who celebrated birthdays by going to PCC to play BASIC games.
Bob Albrecht, the Dragon and fellow PCC founder, has always been passionate about teaching kids BASIC programming and still volunteers in local schools. He has written multiple books on BASIC mostly targeted at newbies.
One thing no one has mentioned are the BASIC functions PEEK() and POKE() which allowed BASIC programs to read and change memory. Many people learned about control registers and machine language experimenting with PEEK and POKE.
PCC also published The Computer Music Journal and Dr. Dobbs Journal. Dr. Dobbs Journal: running light without overbyte started when the Altair microcomputer was delivered with almost no memory and no software. PCC curated the development of personal computer software
including Tiny Basic. The TRS-80 integer BASIC was a variant of Tiny Basic.
The Dave Ahl books include many games that initially appeared in PCC publications.
Star Traders was designed and written by Dave Kauffman who was one of the People's Computer Center staff. It was many people's favorite. Another PCC game, Hunt the Wumpus, written by Greg Yob, has been a favorite of AI researchers as well as computer game freaks.
Back then, you didn't have a choice. Most microcomputer BASICs did not have any other kind of "infinite" looping construct beyond a GOTO. FOR-NEXT was about the only other option.
There wasn't a WHILE or a DO-UNTIL construct in those BASICs, with the exception of (IIRC) or the BASIC used in the MSX systems (which didn't see much action outside of Japan) and in BBC BASIC (it was probably the best BASIC out there along with Microsoft's - but again, not as well known outside of the UK).
I remember young me spending hours on a VIC-20 version of animal.bas ("Computer guesses animals and learns new ones from you"). Given enough time and training input the computer could answer any question put to it! It helped open my eyes to the magic of computation and still gives me a bit of a tingle when I think about it.
Not just that we expect to, we can. Back in the day you could download them as well, but it costs a lot of money: someone had to pay for the computer and phone line and then one computer per phone line was common. It also took a long time to download files at 300 baud, and often you were paying long distance rates to the phone company (which was far more expensive than long distance rates now despite inflation). Most of us were using audio cassettes to store our programs on, dreaming of a floppy disk that held 80k... (we knew hard drives existed, but they were so expensive that we didn't dare dream of them)
While it was possible to buy a multi-user computer, or a connection to the internet, we didn't even know such a thing existed. Not that it mattered, as practically the cost was far our of reach.
I never heard of that until much latter. There wasn't a dominate computer platform: as a kid I knew people with Apple II, C64, Atari, or TI. They were not compatible in general, so it doesn't really make sense to air such things. Even assuming the recording would work, my memory of cassette systems is they rarely worked. I typically saved everything to 3 different tapes to have a hope of reading back correctly eventually.
There wasn't a dominant platform in the UK either. We had multiple machines from Acorn (inc BBC Micro), Sinclair, Dragon and Amstrad plus the Commedores and Atari's you had too.
I don't think Apple really came to Europe until much later.
> we knew hard drives existed, but they were so expensive that we didn't dare dream of them
I was from a slightly later generation (I think); I got my first machine in 1984. I knew hard drives existed too - a 10 meg system would only cost about $8000.00 back then that would connect to my machine (TRS-80 CoCo 2). Sigh.
As far as "multi-user" was concerned - well, we had OS-9 - if one could afford it (plus you needed a dual-floppy system if you didn't want to be swapping all the time). It could support multiple users, but it needed some special hardware for it.
As a kid, I later got a CoCo 3 (sometime around 1987 or so) - and I ended up building a null-modem cable to connect both of them, so I could "share" programs from the floppy drive on my CoCo 3 to my CoCo 2. I also experimented around with BBS coding using that setup. It was my first "network", so to speak.
Not really in terms of just listings of code, but there are plenty of 'Learn Language X Through Games' type of books like 'Land of Lisp' or 'Automate the Boring Stuff in Python' that have the same feel.
Brings back fond memories. That was the book that got me started programming. I didn't even have a computer at the time but loved reading about the games and trying to understand the code by going through it in my head.
Like others have posted, my childhood included a lot of typing in BASIC programs from books and magazines. What I remember most is staying up late one night when I was ten years old to type in the text adventure game from the back of "Basic Fun with Adventure Games" [1] on my TRS-80 MC-10 with 4K RAM. Before I could finish typing it in, I was shocked to get "?OM ERROR" -- out of memory. My first ever experience with running out of resources. :) I knew I was going to need a better computer...
The only difference with my introduction during my childhood was my father had a friend, who was building RAM extension boards (and other things) out of his garage, and he, excited that a kid was into computers, extended our TRS-80 for free. I can't remember the exact number at the moment, but it was something insane like 40Kb of RAM (But it was sometimes... Unstable).
I was the only one of my friends with a computer at the time, and we used to gather round and play BASIC games we either wrote ourselves, or write up the latest magazine game.
I went all the way upgrading my TRS-80 Model 1. Expansion Interface with an additional 32k (48k total), AND the lowercase modification kit! [Reliability was increased when I gold-plated the tin edge connectors associated with the external ribbon cable.]
Oh, good on you for posting this. This takes me back to childhood summers spent hacking away at TI Extended BASIC trying to write my own games - with admittedly humble results. Or the evenings spent reading dot matrix printouts of other games' code trying reverse engineer the text parser. Or memories of playing Scott Adam's text adventures, the flight-sim SPAD, Parsec, Infocom's Witness, etc. Or attending Chicago TI user group meetings with my Dad - who eventually became the president of such IIRC. Or my Dad dialing up 300 baud modems to a BBS. Those were definitely good times.
I have such fond memories of coding in these BASIC games with my dad at our C64 when I was six or so. Honestly the most memorable part was the night I got to stay up late, while he and I spent hours trying to figure out why this one little problem kept appearing. My first late night debugging session.
I really think there's something magical about beginners typing in whole projects by hand (instead of the modern copy-paste). It really helped me when I was getting started with programming.
To me, it feels like typing each character manually cements the knowledge in there much deeper than 'oh, I think I understand what I'm copy/pasting.'
Maybe that's a shallow truism by now, but I still see people struggling to learn programming via copy/paste from examples.
That's a smart take. Even today when I'm learning something new I try to do as much physical typing as possible from the example because I feel like I learn it better.
The other day I had the thought of "all memory is muscle memory" - it's not literally true, but memorizing in an associated form builds up so many cues that it's worth applying to any study: do warm-ups and repetitions, speak, move, and think in sync.
I tend to think of it is holistic memory or whole body memory. The more functions you can involve subsystems in your body the more it hangs together in your brain for longer terms I think.
Learn Python the Hard Way is often blasted for adhering to that sentiment. I think it has value. I think LPtHW perhaps attracts ire first for other things, like a now dated bias towards python 2 over 3, but whenever I recommend it to beginners, people always get mad over its emphasis on memorization.
I get what they're saying (probably from dealing with too much rote school work in the past), programming is more about critical thinking than memory, but it really helps to have the core constructs memorized in a language. If you have to google "loops in python" every time, it's not going to go well.
My first machine was a TRS-80 Color Computer 2 with a cassette tape drive; compared to the PET, due to the "generation difference" (probably in the encoding method?) - plus Radio Shack - it's cassette storage was actually really reliable.
People are still pulling old software and data off of some of their old CoCo tapes, what little problems there are typically can be solved by dumping to digital file and editing in some audio software to clean things up.
My first computer was a TRS-80 Model I. The cassette tape storage was just Radio Shack's regular tape recorder. For some reason you had to use different volume settings for BASIC and machine language programs. The volume setting was horribly imprecise and I was always having to reload programs. The Commodore 64's tape recorder was a big upgrade.
Readers in the UK or Commonwealth might be more familiar with the Usborne series of books for 8 bit computers.
The publisher has made them available from their website[0]. Here is a series of modern reviews from a friend of mine[1].
My favorite when I was a kid was the one that taught assembly language to pre-teens. I still think of cartoon robots putting notes into boxes whenever I assign something to a variable.
Computer Battlegames and Computer Spacegames were much loved in my youth. I wish I had seen some of the other books in the programming series from Usborne.
I remember my dad being super frustrated with me when I was very young. He was on such a different level (chip/board designer) that everything was so effortless to him, and he had serious trouble relating to anyone "beneath" him. It only got worse when he left when I was about 9. I always had trouble self-motivating, and it would hurt like hell when he'd show up out of the blue and express disappointment that I wasn't writing assembly yet or building my own circuits.
But the Usborne stuff, and the spectrum/vic20 games I played around that time, are treasured memories. Thank you for reminding me :)
this book brought me so many hours of joy as a child. I typed these programs in and read it over and over again. I remember now parts that I didn't understand (like Nim) and being amazed at some things people could do in BASIC (https://www.atariarchives.org/basicgames/showpage.php?page=4).
> being amazed at some things people could do in BASIC
My first software engineering job out of highschool used a version of BASIC; I was originally hired as an "operator" because I didn't have a degree, and they wouldn't hire programmers without degrees. So they trained me on how to load 9-track tapes on a vacuum-column drive, as well as how to load up greenbar and run reports on the system. It was an IBM RS/6000 running AIX (my first encounter with Unix), and VT-100/Wyse-370 terminals via a serial concentrator - but our main system ran on top of that; it was called UniVERSE, and ran a variant of Pick BASIC:
They gave me access to the system, and their sysadmin gave me a copy of a "Learn Pick BASIC" book. The company was a small mom-n-pop shop that created insurance claims management software for small insurance companies administering our state's indigent health care system.
I started writing various pieces of software - an adventure game, playing with the printers (made one of them play music - not a good use of company resources), just having fun while in between actual "jobs" given to me by the real programmers (run this report, or load this tape). Well...someone was monitoring me and my coding.
They started to give me small tasks - fix this problem with this piece of code, or build this kind of report, or can you make the printer do this?
Within six months - after I had graduated a local tech school and got my "degree" - they hired me (at a pitiful rate that irks me today, but I was a young-n-dumb teenager at the time). I stayed there for a couple of years, learned more Unix, became intimately familiar with terminfo settings, helped to build a text-mode windowing system for their product, got involved with the Amiga scene...
Ultimately, it was my beginning of a career I enjoy and love to this day; but I do have to say I miss the Wyse-370 terminal (it had a Textronix vector graphics mode I played with as well - plus it was just a great terminal overall - they can still be purchased today, but supply vs demand has kept their cost high, so I've never purchased one).
Back in the 90s I learned a lot from the Prodigy QBasic community. There were some really cool games that people contributed, they have to be out there on the web somewhere.
Heh - you may have ran into some of my old stuff from back then, up thru the late 1990s or so. BASIC still holds a place in my heart (if you haven't played with QB64, you owe it to yourself to look it up).
For that old stuff, "Pete's QB Site" still holds a lot of it:
123 comments
[ 1.3 ms ] story [ 217 ms ] threadGrowing up I had a Commodore 64 and for some reason came into possession of another of David Ahl's books ("More Computer Games" I think it was called). It contained Eliza as one of the listings and it was a program that fascinated me so much I ended up creating a ton of clones, in horribly nested BASIC (though, to be fair, is there any other kind?)
Commodore 64 BASIC, and 8-bit BASIC in general, was fully in the paradigm that Dijkstra was referring to when he wrote Goto Considered Harmful. (Not exclusively, of course.)
My relatively poorly researched impression of it is that it's half-way to portable C, with a proto-stack and pointers, essentially.
Similarly, GWBasic, Turbo Pascal, Turbo C, etc.
While I recall doing the same on my machine (TRS-80 Color Computer) - it was usually to get functionality that was lacking otherwise. I recall having to type a ton of DATA statements for an ML program that would give you simultaneous graphics and text on screen, like it was a native mode. Then there was another program (called "Bells and Whistles") that was essentially a 4-track music editor, similar to 90s era "tracker" programs; you could define simple waveforms as different "instruments", then build your music in a note-by-note "tracker" style - except the tracks ran left-to-right, not top-to-bottom! It would then output the music and show the notes playing (scrolling) - four channel, 6 bit music, with user-defined waveforms and envelopes. Truely amazing at the time!
Especially considering the TRS-80 CoCo did -not- have a sound chip. It was all done by the CPU and a 6-bit DAC (which was also used by the cassette tape interface for storage, as well in a convoluted manner by the joysticks).
I was doing this on an Atari 400. There was plenty of power available from BASIC to get at the graphics and sound, but there wasn't the speed. BASIC was an interpreted language and so you had to drop to assembly to get enough speed for a large program to not feel slow.
Really, you type in codes/programs from paper printouts for your PhD? I knew that some programming communities in academia still clung to old habits and way of doing things, but not like that!
The platform is currently deployed at NC State as an optional exercise for some of the classes and while there is no explicit "those students did better" (yet I hope...), I do have promising information like regular completers earn high final grades in the course and even potentially as an intervention tool for lower performing students. In that context, students that regularly performed lower on midterms scored higher on the final and earned a higher final grade than students that just "looked at the exercises" (it is optional). My current hypothesis on that data is that poor performing exercise completer's realized they needed additional practice, which helped boost their skills.
My comment history goes in better detail, but I describe it akin to drilling in other technical skills like cooking, music, dance, martial arts, etc.
I think this as an activity is one of the methods that causes much of the "prior experience" seen in some higher performing CS students. They learned about syntax errors and tweaking code while making these BASIC games, or in modern contexts like modding Minecraft.
Moving forward, my research then goes into optimal exercise sequencing for learning CS. If you are compiling more syntax errors during a traditional coding exercise, maybe do a few typing exercises or output prediction exercises before trying to code.
[1] https://research.csc.ncsu.edu/arglab/projects/exercises.html
> the on board computer has crashed (it was made by xerox) so you have to land your lunar module manually
Back when games could just make jokes about existing companies without getting into trouble.
Some things stick unnaturally well in the brain.
(Yes, I realise this was a Luna Lander clone on the Amiga desktop, but for me it's roughly equivalent time ago.)
https://www.atariarchives.org/basicgames/showpage.php?page=i...
For some reason nobody ever thought to put those books in the computer lab which was full of various Apple II's.
I wish there would have been more explaination of the code, it was pretty much a couple hundred lines of LET X1=15 IF L2 < 1 GOSUB 12100
https://archive.org/details/Whattodoafteryouhitreturn/page/n...
With my personal favorite BASIC game: Star Traders
Ported to Python
Bob Albrecht, the Dragon and fellow PCC founder, has always been passionate about teaching kids BASIC programming and still volunteers in local schools. He has written multiple books on BASIC mostly targeted at newbies.
One thing no one has mentioned are the BASIC functions PEEK() and POKE() which allowed BASIC programs to read and change memory. Many people learned about control registers and machine language experimenting with PEEK and POKE.
PCC also published The Computer Music Journal and Dr. Dobbs Journal. Dr. Dobbs Journal: running light without overbyte started when the Altair microcomputer was delivered with almost no memory and no software. PCC curated the development of personal computer software including Tiny Basic. The TRS-80 integer BASIC was a variant of Tiny Basic.
The Dave Ahl books include many games that initially appeared in PCC publications.
There wasn't a WHILE or a DO-UNTIL construct in those BASICs, with the exception of (IIRC) or the BASIC used in the MSX systems (which didn't see much action outside of Japan) and in BBC BASIC (it was probably the best BASIC out there along with Microsoft's - but again, not as well known outside of the UK).
But there's absolutely zero reason why this couldn't be replicated with pygame, nodejs or even just a modern BASIC interpreter/compiler.
While it was possible to buy a multi-user computer, or a connection to the internet, we didn't even know such a thing existed. Not that it mattered, as practically the cost was far our of reach.
You could record it straight onto your audio cassette (like you would record any song on the radio) then play that on your BBC Micro.
It was cheap, accessible and effectively the analogue equivolent of downloading.
I don't think Apple really came to Europe until much later.
I was from a slightly later generation (I think); I got my first machine in 1984. I knew hard drives existed too - a 10 meg system would only cost about $8000.00 back then that would connect to my machine (TRS-80 CoCo 2). Sigh.
As far as "multi-user" was concerned - well, we had OS-9 - if one could afford it (plus you needed a dual-floppy system if you didn't want to be swapping all the time). It could support multiple users, but it needed some special hardware for it.
As a kid, I later got a CoCo 3 (sometime around 1987 or so) - and I ended up building a null-modem cable to connect both of them, so I could "share" programs from the floppy drive on my CoCo 3 to my CoCo 2. I also experimented around with BBS coding using that setup. It was my first "network", so to speak.
[1] https://www.usborne.com/quicklinks/eng/catalogue/catalogue.a...
long way from logo
[1] https://scratch.mit.edu [2] https://en.scratch-wiki.info/wiki/Scratch_Books
[1] https://www.amazon.com/Basic-Adventure-Games-Susan-Lipscomb/...
The only difference with my introduction during my childhood was my father had a friend, who was building RAM extension boards (and other things) out of his garage, and he, excited that a kid was into computers, extended our TRS-80 for free. I can't remember the exact number at the moment, but it was something insane like 40Kb of RAM (But it was sometimes... Unstable).
I was the only one of my friends with a computer at the time, and we used to gather round and play BASIC games we either wrote ourselves, or write up the latest magazine game.
[0] http://js99er.net
Having both the running system and the log system together makes for an awesome experience.
My greatest accomplishment was a Stronghold-like simulation/management game, of several hundred lines. Got some success among my pals.
What a time... and what a painful language.
To me, it feels like typing each character manually cements the knowledge in there much deeper than 'oh, I think I understand what I'm copy/pasting.'
Maybe that's a shallow truism by now, but I still see people struggling to learn programming via copy/paste from examples.
I get what they're saying (probably from dealing with too much rote school work in the past), programming is more about critical thinking than memory, but it really helps to have the core constructs memorized in a language. If you have to google "loops in python" every time, it's not going to go well.
People are still pulling old software and data off of some of their old CoCo tapes, what little problems there are typically can be solved by dumping to digital file and editing in some audio software to clean things up.
Every time I turned the power off or wanted to try a different program I had to start from scratch.
The publisher has made them available from their website[0]. Here is a series of modern reviews from a friend of mine[1].
My favorite when I was a kid was the one that taught assembly language to pre-teens. I still think of cartoon robots putting notes into boxes whenever I assign something to a variable.
[0] https://usborne.com/browse-books/features/computer-and-codin...
[1] http://www.asciimation.co.nz/bb/category/usborne
Computer Battlegames and Computer Spacegames were much loved in my youth. I wish I had seen some of the other books in the programming series from Usborne.
I remember my dad being super frustrated with me when I was very young. He was on such a different level (chip/board designer) that everything was so effortless to him, and he had serious trouble relating to anyone "beneath" him. It only got worse when he left when I was about 9. I always had trouble self-motivating, and it would hurt like hell when he'd show up out of the blue and express disappointment that I wasn't writing assembly yet or building my own circuits.
But the Usborne stuff, and the spectrum/vic20 games I played around that time, are treasured memories. Thank you for reminding me :)
[0] http://www.8bs.com/othrdnld/manuals/publications.shtml
For fun recently I ported zork to an esp32.
My first software engineering job out of highschool used a version of BASIC; I was originally hired as an "operator" because I didn't have a degree, and they wouldn't hire programmers without degrees. So they trained me on how to load 9-track tapes on a vacuum-column drive, as well as how to load up greenbar and run reports on the system. It was an IBM RS/6000 running AIX (my first encounter with Unix), and VT-100/Wyse-370 terminals via a serial concentrator - but our main system ran on top of that; it was called UniVERSE, and ran a variant of Pick BASIC:
https://en.wikipedia.org/wiki/Pick_operating_system
They gave me access to the system, and their sysadmin gave me a copy of a "Learn Pick BASIC" book. The company was a small mom-n-pop shop that created insurance claims management software for small insurance companies administering our state's indigent health care system.
I started writing various pieces of software - an adventure game, playing with the printers (made one of them play music - not a good use of company resources), just having fun while in between actual "jobs" given to me by the real programmers (run this report, or load this tape). Well...someone was monitoring me and my coding.
They started to give me small tasks - fix this problem with this piece of code, or build this kind of report, or can you make the printer do this?
Within six months - after I had graduated a local tech school and got my "degree" - they hired me (at a pitiful rate that irks me today, but I was a young-n-dumb teenager at the time). I stayed there for a couple of years, learned more Unix, became intimately familiar with terminfo settings, helped to build a text-mode windowing system for their product, got involved with the Amiga scene...
Ultimately, it was my beginning of a career I enjoy and love to this day; but I do have to say I miss the Wyse-370 terminal (it had a Textronix vector graphics mode I played with as well - plus it was just a great terminal overall - they can still be purchased today, but supply vs demand has kept their cost high, so I've never purchased one).
"If you want the track record of Dick Pick, just hang upside down" [1]
1: https://secure28.securewebsession.com/jes.com/gfx/people/csn...
https://www.calormen.com/jsbasic/
For that old stuff, "Pete's QB Site" still holds a lot of it:
http://www.petesqbsite.com/
Also, check out the old ABC Packets - they're still available, and also have a ton of code worth looking into (I was a frequent contributor):
http://www.phatcode.net/downloads.php?id=204