Hacker News new | past | comments | ask | show | jobs | submit login
Updating the most influential book of the BASIC era (codinghorror.com)
152 points by idoco on Jan 1, 2022 | hide | past | favorite | 54 comments



As someone who spent a decent chunk of his youth typing BASIC commands from Books like these into a Mattel Aquarius, I’m pretty disenchanted by the choice of languages.

None of them embody the human-first optimism of early BASICs. BASIC was designed for normal humans to actually get work done, the same vision HyperCard would bring later. It’s reflected and it’s very English syntax. It was, in no uncertain terms, the actual User Interface to many if not most consumer level machines of the age.

I don’t have a strong proposition for a specific language. QB64 is maybe the closest syntactically, but nothing lives up to the spirit of the originals that I am aware of. I was kind of hopeful I was going to get to the end of this and it was going to be a call for developers to work on a new, modern, humane programming language.

People try to tell me that dream is dead. God I hope not, computers in the hands of most users are 99% untapped potential. It’s as if Prometheus give us fire, and we only ever used it to light cigarettes. Every time a user does a repetitive task that should have been a loop they created themself, that waste of life is a small death, and the blood is on our industry.


Actually there's a reason beyond stupidity and conspiracy for things going the way they did. It is very easy to make simple things simple, but by doing that you will likely turn complex things even more complex.

The first example shows a video-poker-like game implemented in 98 lines. You can get close to that with processing or lazarus-ide. Now try to do that so you can play on-line, using the browser, with multiple people at the same time, storing score, records, with login, a network of friends, authentication... You'll end up seeing that node developers and users are neither stupid nor conspiracists.


> Every time a user does a repetitive task that should have been a loop they created themself, that waste of life is a small death, and the blood is on our industry.

The majority of people have no interest in programming, no matter how humane a language were handed to them.


That is absolutely a myth; what we tell ourselves so we can sleep at night. At worst, they don’t know what they want; they asked for a faster horse, and we’re content to keep selling horses and feed.

Watch a normal user use a computer sometime to do work without interjecting. They all do stupid repetitive tasks that take hours and should be easily automated.

Look how far people get with Excel with no programming knowledge. I have seen absolutely incredible spreadsheets that do remarkable things. The will is there, but we’ve kneecap them with awful tools, and then keep repeating but lie that they liked it.

I have a friend with zero background in programming who completely automated his “job” with Autohotkey. His entire work for the day ran in minutes and he just messed around the rest of the day, that underutilization is emblematic of the problem.


I think we developers don't automate 90% of what we could. What can we expect from laypeople?


> Watch a normal user use a computer sometime to do work without interjecting. They all do stupid repetitive tasks that take hours and should be easily automated.

if you buy the hypothesis about autism in Baron Cohen's book, it is the noticing of and obsession with repetition that is the hallmark of autism, so it is your watches-and-does-not-interject individual who is the one who wants to program, and still not the subject of the study.


You give two examples (spreadsheets, Autohotkey) that actually contradict your central thesis of no good tools. Seems like those are examples of ordinary people successfully using no-code to make their lives easier?

There are so many free programming languages available to anyone interested, ranging in human comprehensibility from (the incomprehensible) brainfuck [0] to natural language interpreters for writers of interactive fiction [1], and everything in between. Visual programming languages [2], languages for children [3], languages for visual artists, for musicians, for stock traders. There's even a language using power ballad lyrics [4]!

I love your sentiment that programming is for everyone, but with respect I utterly disagree that there are no good tools for ordinary people to use. If anything, there is an overwhelming, embarrassment of riches.

But, maybe you are right? Maybe you have an insight that could be helpful? Share it, man! The world needs you!

> ...we kneecap them with awful tools

Who is this "we", Kemosabe?

If you want to help make interactive narratives easier and less prone to bugs, I have a fallow side project I need help with [5]. These people seem cool [6] and could use your insights, I'm sure (seem to be defunct, but perhaps from lack of interest? Jump start it? Track them down, find out what happened?)

[0] https://en.wikipedia.org/wiki/Brainfuck [1] http://inform7.com/

[2] https://en.wikipedia.org/wiki/Visual_programming_language#Li...

[3] https://en.wikipedia.org/wiki/List_of_educational_programmin...

[4] https://codewithrockstar.com/

[5] https://github.com/rendall/quest-driven-development#readme

[6] http://blog.interfacevision.com/


> People try to tell me that dream is dead. God I hope not

I make no claims, but I think you might find this interesting...

https://asciinema.org/a/SM9tZ2ZiJofikPRxHCQyqDvRY

Just published this in Hackage (Haskell), it is a very early version,so probably contain a lot of rough edges..

https://hackage.haskell.org/package/spade


Give PureBasic a try

https://www.purebasic.com/

Commercial, but not that expensive. There is a demo you can try.

Free introduction book

http://purearea.net/pb/download/PureBasicBook.pdf


Why not QuickBASIC or (for modern systems) FreeBASIC[0]? It can be used both like old-school BASIC with line numbers and such, or as a modern style with named functions and subroutines, and FreeBASIC is FOSS.

[0] https://www.freebasic.net/


I really agree.

I see no reason to progress toward the non-BASIC implementations until the modern BASIC equivalents have been accomplished as meaningfully as the originals.

Using FreeBASIC would be closer to the way it was universally at the fingertips of every single Apple II, TRS-80, and PET owner. Soon to be followed by Atari and Commodore 64.


At least VB.NET is part of the list.

I guess the only modern environments where we could replicate the experience would be something like running MicroPython on an Raspberry Pi 400.

Or the Swift Playgrounds (assuming an external keyboard).


Raspberry Pi 400 can run the full Python3 language, so why MicroPython ? IMHO, MicroPython is more suitable for something like an ESP32 or Raspberry Pi Pico.


I was thinking of running it bare metal, ESP32 and Raspberry Pi Pico aren't a keyboard computer like the 8 bit ones from the 1980's.


Small Basic would be more appropriate than VB.NET https://smallbasic-publicwebsite.azurewebsites.net/


Have you read the article?


Yes. I still think Small Basic is a good solution.


As follow up to my sibbling comment, it appears that SmallBasic is pretty much done.

https://docs.microsoft.com/en-us/answers/questions/678792/wh...


Apparently not according to the authors experience, and looking at the Website doesn't look like Microsoft is bothering too much keeping alive.


With that in mind, it might be more effective to write a BASIC REPL in Javascript (I’m sure one already exists) and then run the original programs.


> I’m pretty disenchanted by the choice of languages. None of them embody the human-first optimism of early BASICs.

Nothing yet exists that has the same properties: simplicity and automatic availability. JS wins on availability as it is present on almost every general purpose device via a web browser, but the syntax is not as human friendly as

    10 PRINT "Hello"
    20 GOTO 10
or better, lets tweak the language a bit and get rid of the line numbers:

    This is the start
    Print "Hello"
    Goto the start
Though as much as we love to hate them, I'd say spreadsheets come closest to That What Was because the people who use them are automatically there for work or to do some basic calcs for themselves, and the “programming” side of it is just there for them to discover as they need more complexity, they don't need to decide “I want to program”, they have a problem, they look up a solution, find one online, and modify it for their own needs, much like me in the 80s typing in a 10-line graphics demo or basic game and learning more by tweaking it. To a lesser extent things like minecraft count too.

> I don’t have a strong proposition for a specific language.

> People try to tell me that dream is dead. God I hope not,

There is no such language for current times, so the dream of reproducing the feeling BBC BASIC¹ in the days of yore because not only has the tech mover on but so have people's expectations. No one is going to be satisfied with those simple introductions as we were back then, so the barrier for entry is higher - the language and wider environment need to provide much more and make all that feel like the heady days of drawing random coloured dots in graphics mode 2 while, hiding all the complexity long enough to not put people off, while not limiting itself by hiding that complexity (making the complex more so, or even impossible) so that people give up when they discover they need to move to something else to get beyond a certain point⁴. And it needs to somehow compete with the rest of the world, gone are the days that you are sat in front of a disconnected computer with not much else to do but experiment and learn - it can't wait to be discovered it needs to drag people away from consuming and actively attract them to creating⁴. And we aren't just dealing with a bunch of nerds/geeks who speak at least a little English, anything like this these days needs to be embarrassingly easy to perfectly internationalise⁵, without breaking anything⁴. And it then has to get commonly accepted to become popular and therefore survive³. If you create a language/environment that manages all that⁴, then why not finish off your morning with breakfast at MILLYWAYS?!

[1] The best 8-bit basic, bar non. No silly-short naming limits, proper procedures and functions² rather than just GOTO & GOSUB, a built-in multi-pass assembler for if you got really adventurous, ...

[2] Well, there were significant limits compared to what we have now, but understandably so in such small power & memory.

[3] Not unlike how gods and belief work in Pratchett's Discworld.

[4] This is, of course, impossible.

[5] ref: “reflected and it’s very English syntax”, and it isn't nearly as simple as just swapping keywords out for local ones either.

> BASIC was designed for normal humans to actually get work done,

I hate to break it to you but we were, at best, a subset of normal humans, in the eyes of the rest of the humans!

> Every time a user does a repetitive task that should have been a loop they created themself,

That is rather too dogmatic. I'm a dev-cum-DBA with decades of inexperience behind me, and I do many repetitive things that I've not yet automated. If you automate everything you do more than twice you end up automating things that you'll never use again after next week, and never actually do much beyond making and testing automations.

> that dream is dead

Going back to that: the general dream is dead IMO. We need to stop hoping to find the One True Path to lead people along. The dream can still exist in smaller parts though, if we accept multiple very different paths without disparaging any particular ones of them: people starting by automating Minecraft stuff, people starting by trying to make DayJob easier in Excel, people in learning settings using interative notebooks to explore in more detail, people who want to make Alexa tell a fart gag at an inappropriate time to embarrass gran, people adding interaction to a simple web page, ... No one language or environment can do all, or even a fraction of, the everythings that might work for some people.

I, like many others, unfortunately have no idea what to do about it, beyond pontificating as above and hoping that someone else comes up with some bright new ideas (or resurrects some forgotten old ones that were not fully realised/appreciated in their original frame).


> And it needs to somehow compete with the rest of the world, gone are the days that you are sat in front of a disconnected computer with not much else to do but experiment and learn - it can't wait to be discovered it needs to drag people away from consuming and actively attract them to creating.

This is a good point. Back in the 80s, learning on a BBC Micro for me was a lucky confluence of geek, machine, and time period.

Maybe the "geek" part is the most important part.

I loved the BBC Micro and am grateful to have had the opportunity then, but to be honest, I'd probably have discovered computers some other way anyway, and my life might not have been that different. It's probably similar for today's kids--- if they're programmer types, then they can use today's tools and get the same thing out of it. Maybe this particular dream is indeed accessible only to the geeks?


Oh man, I learned so much from these books and a few other similar ones.

I learned to program a few years after these were popular (around 1991 or so), but a friend of my dad’s gifted me a bunch of them after he found out I was into computers. I was 8, and it changed my life.

They were magical to me. I didn’t even have access to a BASIC interpreter yet (I didn’t even know what that meant), but I read the intro to BASIC programming book and the computer games books so many times. I remember running to my parents room to tell them I could use PRINT to output to the screen. I would write programs by hand onto paper.

I remember a few months later going to my dad’s friend and asking, “ok, where do I type these programs in?” He gave me a copy of QBasic, and away I went.

I remember having to learn so much to get the games to work. I learned about different versions of BASIC, and how to convert things to work in my version. Taking bits of one game and combining them with others. Making my own.

My life has never been the same since.


> bear in mind these are very primitive games from the 1970s. They aren't going to win any awards for gameplay, or programming sophistication

This is where I feel sad for today's kids.

The pressure to make a great game was lower back then.

Programming felt like an amazing accomplishment very quickly.

Now, kids feel like they've accomplished very little, even though they're doing more with less code than we did during our generation.

Miss those days.


> Now, kids feel like they've accomplished very little

Are you observing kids feeling like this frequently? Where/how are they developing? I think there's a lot of enthusiasm in for example Roblox.


> Now, kids feel like they've accomplished very little, even though they're doing more with less code than we did during our generation.

I haven’t observed that. My nephew has great fun building things in Scratch and is really happy with what he has made even though it’s not some triple A game. I had the exact same experience writing stuff in Basic and knowing it could never be like the Buck Rogers arcade machine I’d played.


I distinctly remember my first program as a five-year-old child:

10 PRINT "CHAZ WOZ ERE "

20 GOTO 10

In the UK one of the main retailers of 8bit computers was Boots the Chemist. This store is functionally equivalent to America's CVS or Walgreens (who know owns a big chunk of Boots). They would have all the computers on shelves hooked up to TVs. And of course, almost all computers of the day would boot into BASIC.

My Mum would leave me in Boots in front of the computers while she went around town for hours doing the shopping each week and I would happily learn programming, picking up new ideas from older teenagers who would be happy to show off their superior coding skills.

It would be three years until my parents could buy me a Spectrum of my own. In that time before I had my own, my Dad would pick up the occasional computer book from a second-hand store and I would read technical manuals and programming books cover-to-cover in my bedroom, having to imagine the output in my head.

Those were the days!


Personally, Compute! magazine was my goto for games... The fact it autocheck the checksum at the end of each line was a sanity saver!

Anyone else remember the hex code dumps they had for entering/checking machine language programs? I still remember going thru 84 screens of the stuff to get an awesome monitor program with assembly/disassembly functionality!


Personally I preferred the basic listings to the machine language ones, with the asm listings somewhere in the middle. With the basic listings you could understand what you were typing in as you did it. With ml you’re just a monkey typing in numbers. Sure you could disassemble it at that point (if you had a disassembler), but the barrier to reaching that understanding was so much higher than with basic listings.


I remember getting that book from the library and getting the games to work on my TI-99/4a. The BASIC dialect on that machine was not quite the same as used in the book so some translation was necessary. Can't copy/paste from a book (copy/paste wasn't a thing on that machine anyway) so you had to sit down and type it in, keystroke by keystroke. I think the slow pace of it helped me understand what the program was doing. If a line was "GOTO 500" I would always look down at line 500 and try to understand why that jump was there.


My abiding memory of typing in listings on my TI-99/4a is how often I intended to type shift-equals to get '+' but instead hit function-equals, which reset the machine and lost all my work since I last saved (and since it was saving to tape, I didn't save all that frequently...)


For a few years now I’ve been teching my son to code. This feels like a good project to do together. Grab one of these games understand it in basic and then reimplement it using my fav language.

Any other parents out there teaching their kids/teens/young adults to code?


I bought a programming magazine in the 1980s and copied a game to my Commodore 128. It didn't work, and I failed to debug it, so I set the magazine aside and starting writing my own games. In retrospect I think it was a great educational lesson. My first attempt to copy/paste code was a complete failure, so I was forced to think up stuff on my own. Man, youngsters nowadays can copy/paste in milliseconds, whereas back in the day it took us hours!


Most the haves I typed from magazines never worked. It was pretty discouraging to spend so much time typing and then the disappointment. Glad to hear I was not alone because most people in this thread seem to have been successful. Maybe it was because the size of the games in this book were small. The programs I typed from magazines were pages and pages.


I tried but quickly realized that teaching is a different skill than coding itself. i also got overwhelmed with the choices and did not know how to start. Scratch did not really grab his interest. And "dad, teach me how to make a minecraft mod" was not possible. I also did not see the patience necessary to learn it.


I think the key is not to go too fast. Simply writing simple statements and seeing it work and do stuff is enough. So I found it best to start simple and work your way up. These little games look like great examples to work from.


I remember typing up a paint/simple sprite animation program from a book in BASIC when I was 12 or so. I had no idea what anything meant, but I managed to add color support to it. Geez, this brings up memories of me sitting there on the computer debugging things. It was before the age of popular Internet connectivity as well, so no stupid social media (there wasn't even social media!) to distract me every 30 seconds.


I was introduced to programming by the book that came with The Apple IIGS, "A Touch of Applesoft Basic." http://www.apple2.pl/books/applesoft.pdf

I've always wondered if it was one of the most influential books, ever. It certainly influenced me!


To be influential, it would help if it were sold with one of the most popular systems. There were only around 1.7 million Apple IIgs systems sold.

The Commodore 64 sold the most systems but so many owners only played games on it that the manual probably wasn't the most influential book on BASIC.

Exempting system manuals, the BASIC Computer Games books were probably it.


These books (and their earlier versions) came with most Apple ][s, probably just about all that were sold in educational settings. Unlike BASIC Computer Games, they taught programming - something BASIC Computer Games (also a great and influential book) didn't.


It would be nice to do a few things with these classic and influential games (isn't the original BASIC version of The Oregon Trail in there?):

- Update them with the minimal changes required to run on a modern-ish Microsoft(style) BASIC.

- Rewrite them in a modern beginner-friendly(ish) language like Python. (This seems to be what the author wants to do.)

- Create (hopefully) easy-to-understand JavaScript versions that can be run in a web browser.

- Create an compatible BASIC interpreter that can run them as-is in a web browser.

- Create modern-ish versions of the games with pixel graphics where appropriate.

- Create some new, simple but interesting and fun, modern-style games in a modern language/environment, to serve a similar purpose for current generations of computing enthusiasts and people who haven't discovered the fun of simple programming.


1. Port them all to Unreal Engine 5 [0]

2. Something something Hacker News

3. Profit?

[0] https://www.youtube.com/watch?v=WU0gvPcc3jQ


I remember getting out all these C64/BASIC programming books from the library when I was a kid. They were filled with cartoon robots and such if I remember correctly.

I remember typing a "lot" (I was somewhere in the 5-7 range at that point) of code from those (and other) books into our C64. I don't recall understanding most/any of what I wrote, but I think it got me sufficiently interested to keep me going until I got to an age that I actually understood what I was doing.

[update: I think I found them, they were by usborne and inexplicably are now free :D : https://usborne.com/us/books/computer-and-coding-books]


They had some notes around the graphics examples saying that differences in syntax may prevent the code from being parsed successfully, and sure enough, none of those commands were available in the V2 BASIC dialect the C64 had.

Even the manual of the machine only included a single hi-res mode example in an appendix, and dedicated one chapter to sprite handling, but that was it. Yes, I am still angry.


I still have my copy, the original DEC edition. Dave Ahl was one of my heroes back then.


Same here, though my copy is in abysmal condition. Between this book and the 80s era enthusiast magazines that had delivered their code directly on the printed page I learned how to program and not be fearful of programming. I have to say that calling Ahl's book the most influential BASIC book sounds like a very feasible claim.


My origin story-book is Donald D. Spencer's "Game playing with BASIC": https://openlibrary.org/works/OL15199613W/Game_playing_with_...

It introduced me to programming as well as many casino games like craps, blackjack, slot machines, video poker...


A few years ago, David Ahl was kind enough to sell me copies of the first two years of Creative Computing magazine. Those are a treasure. I love the offbeat informality of them, the cartoons, the old wood engravings.


These books were great. What especially captured my imagination were not just the drawings, but the fact that every listing would be prefaced by a print-out of a run of the game. This made it really easy to see what the program was about (entertaining enough by itself) but it would also allow me to map whatever the game was doing with the BASIC listing next to it. This was kind of like using a debugger to step through the program and it was a really neat way to learn about control flow and program structure.


Wow. These books were, well, foundational to me. I had a blast typing those into my C64. Then at a summer camp (CTY at F&M) I thought I was so very clever for writing a version of Nim where the computer would silently pick to go first or second so that it always won. I don't know why I still remember that.

And then some summer jobs writing dBase III and FoxPro, some actual education, and here I am.

Those books absolutely set the tone and sparked that first interest.


Any MacOS users who might need a little help running the originals: I downloaded the GitHub sources for the book and then downloaded the MacOS version of Vintage BASIC.

To run Super Star Trek, this command line worked for me in Terminal:

~/Downloads/vintage-basic-1.0.3/bin/vintbas ~/Downloads/basic-computer-games-main/84_Super_Star_Trek/superstartrek.bas


Hm. I thought it was going to be about this book:

https://www.retro-kit.co.uk/page.cfm/content/Advanced-Progra...

Hands down the best book from that era, it taught so many useful concepts in a very accessible way.


This is exactly how I got into computers at age 4. I’d type-in game code on the family Atari 800, taking great satisfaction if/when the games finally ran without throwing errors.

I’ve been looking for a similar resource to introduce my daughters.


Most worthwhile thing Atwood has ever done. The rest of his portfolio pales in comparison.




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: