Usborne computer and coding books from the 1980s
usborne.com
usborne.com
The most striking about these books: they are more readable and enjoyable than many programming and computing books published for adults today.
The books use illustrations extensively to explain concepts, and the layouts are varied and lively to keep readers attentive. (Compare to the stranglehold of markdown for any technical documentation).
Not only are these Usborne books well-written with clear, concise explanations, they are also excellent source for inspiration and ideas for anyone writing a technical guide, tutorial or book.
8 year old me knew there was something different about the comic art alongside the text, yet I couldn't explain what. Turns out - British!
The machine code books would have been useful at that time, but again, I'm 8 playing with a hand-me-down Apple with no other help. I don't know what I don't know and I have no mentorship and no internet or bbs access to download new stuff.
Kids today have access to all the video tutorials they could ever want.
e: God DAMN line numbers suck. And double god damn do line editors (think ed as opposed to vim) with no proper backspace.
I was also too young in those days to be able to understand how to port PEEK, POKE and so forth, but I do credit trying to get stuff working (often in futility) toward my future interest in becoming a professional computer programmer. (Of course I'm not writing games like I imagined.) The experience of trying to parse mystery code is surprisingly similar to frustrations with finding libraries that almost but not quite solve your problem, or web layouts that look okay in most browsers until you encounter a weird screen size, and so on. I wonder if this background is what led me to being the kind of developer who greatly prefers maintenance, troubleshooting and bug fixing to new feature development.
They don’t exist anymore I think because computer games (ironically given the OP) killed them.
[1] https://www.thriftbooks.com/series/usborne-puzzle-adventures...
1. It was normal and expected to program a computer, if you had one.
2. Computers were inexpensive enough that many families could reasonably own one at home.
If you go too far back in time, computers were either expensive or made from kits, which meant that very few people had them. If you look at more recent periods in history, it was no longer normal & expected to program computers. During this period, your computer came with a manual that explained how to write BASIC, and you could get these Usborne books from the public library.
Nowadays, it is easier than ever to learn programming. There are all these wonderful tools like Scratch. It’s just that the normal way to use computers these days is to use premade software. There are tons of children who could learn to program, could even teach themselves, but who are unaware that the option exists.
It might be easier to learn, but it's harder than ever to actually do something useful with those "toy" environments. Back then, the "mainstream" computer magazines were full of source code listings, often even in Asm, for utilities that did various useful things. They created binaries in the <1k size range, with a lot of them being below 100 bytes. There was a continuum from "computer illiterate" to "master developer", with "average user" and "power user" sitting somewhere between. Now you have to fight your way through layers of "security" to even start to do something useful, and on some platforms, it's nearly impossible.
IMHO corporate interests are to blame for this gradual closing-off, because they don't want users to discover that some things they profit from are in fact extremely easy to do. There's been a bunch of articles here and elsewhere about the "war on general-purpose computing" which really started being noticeable in the late 2000s/early 2010s.
I have to laugh at these conspiracy theories.
The real reason is the operating systems no longer come with a BASIC prompt. This is true for Windows, OSX, and that corporate Linux product.
If every operating system, including phones, came with an icon that opened to a BASIC prompt, I bet you'd see an explosion of programming competence especially among young people.
I’ve never used BASIC, but is it really so much more approachable/productive than python? With python’s batteries included philosophy, I’d expect it to be pretty quick for beginners. The only sticking point I can think of is GUIs
Productive? Not really sure about this. But obviously Python has a nice standard library and package manager which help you install 3rd party libs easily. Not idea which modern BASIC environment which provides that. If you want to handle various networking, GUI, database etc stuffs then probably Python is easier.
While you technically can write a Python program in Microsoft's terrible terminal window, such a program is a very distant second class citizen in the Windows ecosystem. This adds to the friction the poster above is referring to.
> 10 print "Bow before the Mighty Walter, scum!"
> 20 goto 10
> run $ python
>>> while True:
... print("Help, I'm trapped in a loop!")
There's a little bit more punctuation (>>> and ... don't count) but you don't have to fuss with line numbers.These days, when someone I know is interested in learning some computer programming, I tell them to get a copy of Introduction to Computer Science Using Python by Dierbach. My own intro programming books are horribly outdated at this point, but I happen to have a copy of Dierbach's book, and I think it is pretty nice. You start up by firing up the Python REPL on your computer, and from there it talks about how computers work.
IMO, this is an easier way to start computer programming than we ever had with BASIC. The barrier to entry is as low as it ever was, the languages are a lot nicer and you can definitely get real work done with Python, and over the years we've gotten more textbooks & better textbooks.
Honestly, the real friction here is that you have to open up a terminal window and type "python". Or if you are interested in JavaScript, you have to press Ctrl+Shift+I or some other combo to bring up a REPL in whatever browser window is already open. It's not friction, it's just a little obfuscation--give someone a computer and they probably won't discover Python or JavaScript just by playing around with it, but if you give someone an Apple II, they're going to run head-first into BASIC.
C:\scan>python
'python' is not recognized as an internal or external command,
operable program or batch file.
C:\scan>
which is my point. (BASIC is also a far, far easier to learn language than Python.) kimsbox:~ $ python3
Python 3.5.3 (default, Sep 27 2018, 17:25:39)
[GCC 6.3.0 20170516] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
(This works on 2 out of 3 most common operating system families. Just don't use the bad one :-P ).I learned BBC BASIC first and it still holds special place in my heart. A lot of the feel of Python is similar (it also has similar goals), but it is quite a bit younger and has a lot more 'batteries included'. So I have to say I do actually prefer python for my day-to-day usage now.
Well, there are certainly a lot of closed platforms. But arguably it started a long time ago with games consoles.
It's hard to define 'useful,' but I'd argue that you can make useful things in Scratch. My first language was Scratch, which I learned 14 or so years ago. Although I only stuck with it for a couple years before moving onto Python (then Scheme, then C, then OCaml), Scratch was very formative in my development as a programmer, and there are a ton of 'useful' things you can do within Scratch itself.
I grew out of Scratch after writing a 3d rendering engine for a platformer, and a neural network that played a racing game (NEAT). Both of things are fun, and I'd argue to some extent, useful, if not only to others who are learning. It was at this point that I was recommended a book on Python and, well, the rest is history.
I realize that, for some tasks, like systems programming, Scratch would be absolutely counterproductive. (though I recently recall seeing a post about writing a Linux kernel module using the language.) Nevertheless, that doesn't mean that you can't do useful things using the language. Having later developed games in C from scratch (ha!), just trying to replicate a fairly basic Scratch program with sounds and sprites and movement requires a good working knowledge of how to type, C and its compiler, SDL and related libraries, memory management, maybe how to embed Lua for scripting, etc.
None of these things are hard, per se, and I do agree that you have to jump through a number of layers of "security" to do modern development work on most platforms, but one has to admit that the environment that Scratch provides is powerful enough to create useful things, that require a non-trivial amount of work to replicate elsewhere.
- The old "toy" environments like BASIC, back then, were not very powerful.
- The kind of thing that you would get from a 1k binary is something that nowadays you get for free with the OS. The bar for "useful" is much higher.
- There are still tons of people in the range between "computer illiterate" and "master programmer" who are doing interesting things by writing code. It's not a jump from, say, Scratch to JavaScript. You have Excel, R, Julia, Matlab, SQL, etc. There have been tons of other environments over the years like FileMaker, MS Access, Flash, Director, etc. Some of these are still around, others have evolved and been replaced. It's also relatively easy to make a basic website with Django or Rails, or write a plugin for Drupal or Wordpress, because you have some need.
It's easy to respond and say something like, "Flash is dead." Yes, there's no direct replacement for Flash, but in general, new tools are appearing at a much faster rate than old tools are disappearing. Even though there's no direct replacement for Flash, there are a bunch of approximate replacements that may serve your needs.
> Now you have to fight your way through layers of "security" to even start to do something useful, and on some platforms, it's nearly impossible.
I would love to see a walkthrough where you go headfirst into one of these layers of security that's causing you problems.
My guess is that you are working with a preconception that a "useful" something-or-other is an executable script or program. My claim is that something useful might be a Jupyter notebook, a Wordpress plugin, or a SQL query.
I'll also say this--I've met plenty of high school students who seem to be just fine making games using something like Unity, Godot, RPG Maker, Game Maker Studio, etc. As far as I can tell, the #1 hardest part of this whole process is connecting people with the right tools and resources. The problem is not that those tools and resources don't exist or have gotten worse. They've gotten a lot better! They just don't ship with your computer any more, so there's a process of discovery, which has a big impact.
A few years later, my dad would bring home IBM PC XTs and ATs they were throwing out at his work. The rest is, as they say, history.
I loved these books, and I'm pretty sure I had almost the complete library. A few of these books, a curious kid, and a simple computer that boots directly into BASIC, with no distractions.
One thing that was amazing about this time is that even a 10yo (as I was) could understand almost everything that was going on in those machines (in a functional way, if not the finer details). Then as we grew up the programming world became more complex, and we were able to track that complexity as it happened.
I don’t envy new programmers today who have to contend with vast complexity even to do the simplest of things.
I would happily trade all the complexity I have to deal with daily, if there was a common, cross platform, secure, open and well integrated sandboxing solution.
This just isn't true, there are a billion ways into programming that there weren't in the 80s and 90s, and computers are cheaper too. Sure you don't get to tinker with your OS as casually but the scope of "learner" programming environments is so much greater. Even a keyboard isn't a necessity - look at the results from Dreams on the PS4. And Scratch is ubiquitous in (UK) schools, my son picked it up without any prompt from me.
It might just feel like kids don't want to learn programming because most people don't want to learn, but most people (you know) are now using computers compared to the 90s. So proportionally that is fewer computer users becoming programmers, even if numbers are going up!
> And Scratch is ubiquitous in (UK) schools, my son picked it up without any prompt from me.
Scratch is a huge downgrade from the likes of LOGO (a real LISP implementation, with a few syntactic conveniences to help novices) and even BASIC on the BBC Micro, which used to be taught in UK schools.
There are more resources than ever if you already want to learn to program, but it's still hard to cross that threshold from using computers to realizing that learning to program them is something approachable. Microsoft and Apple have both always promoted this sort of learned helplessness with their users, treating the GUI like a tangible thing and not providing obvious tools that encourage programming.
It's not exactly helplessness, since programming is no longer required to do the many things that you can do with the millions of apps and web sites that are at your fingertips, and you no longer need to type in (and probably debug) a long program just to play a game.
And Microsoft has actually provided BASIC for ~45 years (currently Visual Basic .NET and VBscript, as well as the Small Basic learning language), while Apple provides Swift Playgrounds (a nice onramp to Swift that can also create full apps.) And every web browser includes JavaScript.
But as you note the key part is obvious tools that encourage programming.
I too would like to see platform owners make programming onramps more obvious and easily accessible. A good start might be adding a CODE button to web browsers to bring up a user-friendly JavaScript programming environment. Another idea might be providing an installation option to include tutorial and professional programming environments. Another might be for the Xbox (and Game Pass) to include game creation tools (I also like Dreams for the PlayStation but it hasn't really caught on.)
At the end of the day though I wouldn't expect it things to change too much because programming requires a lot of effort for minimal reward compared to visiting a web site or downloading a new app or game, while commercial apps and games have largely moved beyond what a single person can create.
The creators of collosal hits such as Stardew Valley, Undertale, Five Nights at Freddy's and Minecraft might object this sentiment. It's entirely possible (not easy though) to create a successful game on your own that competes and surpasses large studios.
That's a brilliant idea.
I must have spent half the developement time of my early programs simply retyping in stuff that I had done the day before but lost without saving it.
- they can get a feel for how real-life programmers work;
- they can incrementally refine and build on what they know until they have picked up a very valuable (in terms of job market) skill
I agree Scratch is sufficient to understand loops etc. but it doesn't "scale", i.e. at some point you need to switch over from Scratch to an "grown-up" language.
Presumably if you limited which parts of the now massive 3.10 you exposed to newbies, you could still get the same result? The very basics haven't changed too much since 20+ yrs ago. I suppose the trouble is that any web searching is going send newbies off the tracks into advanced topics pretty quickly now, but that is still likely in just about any language.
I mean, Linux aside that's technically true. But, you got a BASIC interpreter that was pretty barebones even for the mid-80s in a PC of that era. And Turbo Pascal was a revelation when it came out because other "real" programming tools cost hundreds of dollars.
But, today, for free, you can install any number of advanced programming languages and IDEs in about 10 minutes. (And, on a Mac, Python at least comes pre-installed.)
With an 8-bit micro, BASIC was the point and it Just Worked. These systems were toys sold with a toy language, but it was a toy language that had enough depth to teach useful fundamentals.
More, there was an ecosystem of other toy users and support sources and motivators - books, magazines, game entrepreneurs, TV shows, even just the novelty factor of having an actual computer at home - that made the 8-bit era in the UK a cultural scene.
There's no exactly equivalent cultural scene today. You need a fair level of experience to get started with modern languages, and there are no mainstream cultural drivers pushing you to do it. (There are niche drivers but they're only effective after you find them.)
You do get some motivators with entry-level HTML and web design, but they're immediately aimed at careers and professional development.
What's missing today is the combination of a toy environment which is fairly simple but can still be used for non-trivial projects, a mainstream non-niche non-professional cultural scene, and a sense of fun, play, and exploration which provides the curious with motivation.
The closest approximations are toy environments like Minecraft. They're doing a reasonable job and there's a scene of sorts around them, but it's not quite on the same scale as the 80s systems.
> This just isn't true, [...]
Let me get this straight... you're saying that children are generally aware that they can learn to program, and that children who aren't aware of these opportunities are rare or something?
I must be misunderstanding something here, because that sounds like complete horseshit to me. I have years of experience teaching children how to program, and the vast majority show up unaware that learning to program is something within their reach.
Kinda best way to put it is documentation was akin to what you would expect from a mature MCU today as comparable level and in some ways, more accesable and you felt you owned the computer more and had a more intermate understanding.
Though many things go that way, Cars another example and cars of that era, you could get documentation and fix yourself. Today, you under your hood might as well be a Borg cube.
I think it's easier in some ways, harder in others. I learned to program in 1981, while in high school.
"Ease" involves not only access, but also motivation.
At the time, programming seemed a lot more casual and exploratory. Because displays were so primitive, you could easily write a simple BASIC program that looked just like commercial software. That was really gratifying, and gave you a feeling of power. There were useful programs with no graphics. And programming was still kind of a counterculture. There were maybe 3 or 4 kids at my high school who were interested in it, and we were all nerds.
Today, everybody has been exposed to really slick graphical software or games before they're ever introduced to programming. Making something that looks like software is a daunting task. I don't even do it any more. There is also vastly more adult interference and attention -- programming is a desirable, lucrative career after all -- meaning pressure to do it "the right way" for the sake of your "career."
You can teach somebody to play the first few bars of Stairway to Heaven (or at least something that sounds recognisably like it) in an afternoon. On an Apple II, you can write a BASIC program that looks like Ultima IV or VisiCalc in maybe a week. But it would take years of study, let alone effort, to make something that looked recognisably like Elden Ring or Excel.
But nobody told me that music would be a good career. ;-)
Oh they're aware, alright. It's hard to get them interested in coding when they can play Minecraft or zone out in front of YouTube. Whatever they do on the device other than coding is going to be far more entertaining than coding and a lot easier.
Source: I have kids.
Minecraft has all levels of in-game programming from simple recipes to redstone circuits. outside the game there're procedural quests, time-based events, animated skins.. "look Daddy I spent 4 hours building this castle" - "that's great, let's find out how to make thousands of them in seconds!"
YouTube is full of programming tutorials for kids. there is a lot of crap to trim but the time is well invested
there is a balance between work and play, but often the benefits of coding bleed into the gameplay to a point where the two are happily married
the trick is finding a balance - halve screentime into educational and recreational, they still get 100% gaming/YouTube, just on a reward basis
in general, teachers at school cannot code and kids will need to be able to code in the future. it's not the teachers' fault, they weren't taught to code yet they have to teach coding. the next generations of teachers will not have this problem since they will be kids from now onwards who can code. introducing coding as a regular activity at home will benefit kids for life
Those C64's and Apple ]['s came with a ton of games as well.
In some ways, I disagree. In the early-mid 80s, you didn't have a chorus of people on social media abusing you for your choice of programming language, as is the norm now for anyone who dares to pick up PHP (for example). You didn't have to battle with absurdly over-complex development environments, deployment options, and every man and his dog shouting at you on social media about why you're wrong from chosing framework x instead of framework y, or telling you that you're a sub-moron for thinking that it would be nice to have a running program rather than spend time battling emacs to be a "real programmer".
The world was much more insular and there were fewer choices and it was actually a lot better for it.
On top of that, the distance from what I could put together with the built-in BASIC on a Spectrum or BBC and a lot of the programs that you could buy wasn't that vast. You didn't need a studio of artists and designers and musicians to come up with a game that approximates what you'd get on a cassette. You could come up with something interesting on your own.
Sort of. There were cheap computers like the Commodore 64. But, by the time you put together a floppy disk only PC clone in mid-80s, you were probably still looking at a few thousand dollars so maybe $6K in today's money. Not astronomical but still a pretty big purchase. Hard drives were just coming into the reach of consumers then but that would have added to the price.
[0] https://www.hl.co.uk/tools/calculators/inflation-calculator
Some people moved on from BASIC by poking machine code into memory.
Writing down the pokes and peeks"
A barrier to a young kid building the robot was the difficulty of obtaining critical parts, unless you had a parent helping a lot with sourcing and bankrolling.
(In the US, an accessible Radio Shack store had some of the parts, and you could improvise some of the hobby shop materials from cardboard boxes and wood scrap. But, e.g., a matching pair of gearboxed motors were unobtainium that a kid might only find in random mail-order catalogs they were just starting to discover, at unaffordable prices.)
Today, things are much more accessible, thanks to Adafruit, accessible online retailers, Arduino, Raspberry Pi, easier access to information (not serendipity of happening to discover whatever book/magazine a library/bookstore/friend happened to have), 3D printers... even being able to easily get your own PCB design fabricated one-off, without expensive materials followed by a hazmat incident.
Specifically, as a kid, there were projects I wanted to build, but I couldn't get the parts. Now, as a grownup doing EE work under current market conditions... same thing.
So many careers had their origin in these books.
One of the books that's sadly not been made available from the Usborne site had a representation of what a future portable computer might look like that was hilariously off the mark while being perfectly reasonable from the point of view of its era - I recall it having what was clearly supposed to be a tiny green CRT display for example!
Edit - looks like it's available online here: http://bbcmicro.co.uk/game.php?id=2135
In previous searches for the book, I found this site, and I realized the book had many similarities with the Usborne books, but I can't find it in any listing of them. I don't understand how, but the book "The Usborne Young Scientist: Computers" (1992) has some of the same content as the book I remember but it's missing a lot while also having some content I'm completely unfamiliar with. Maybe there was another lesser-known Usborne title that repackaged some of its content? If this sounds familiar at all to anyone, I have a few more notes on my memories and search for the book at https://tildes.net/~talk/is4/whats_one_thing_you_havent_been... and I'd appreciate any pointers.
I came across these books for the first time when I was around 12/13, and spent hours entering the BASIC into my ZX Spectrum. Later making changes and messing around.
My all-time favourite was the Mystery of Silver Mountain - which I recently bought from Ebay for far far too much money.
I just looked back and I think these are some of the best written books. Thinking on it there were probably dozens of programming books but these endured because they were so good.
The overview of the set of variables that you have to store and update for a fantasy game may be the best high level view I’ve seen (if you know of a better one, let me know!)
These books were exceptional.
No relation to Osbourne the computer company or the metal vocalist. :-D
Even if I explicitly go to the /us/ url, it still rewrites the URL and makes it impossible for me to read the content. I literally can't look at the same content as someone from a different country, and there is thus no way for me to compare.
Don't do that! IP sniffing is a terrible idea on a good day, but this is the worst. How is returning 404 ever the best choice here?
Then I could see the expected content. Maybe whether that dialog box is seen or not depends on the browser used and on its settings.