- Dartmouth's BASIC at Fifty site from 2014: May 1st, 1964
- In particular this video
- Why Johnny Can't Code, by David Brin: Terribly overwrought, almost completely ignored available solutions (even in the dark ages of 2006), but there's a point down there somewhere. Certainly Brin's solution of just buying an old computer is a popular one nowadays.
We had a lingua franca, including the first 15 years of personal computing, that could be taught in a few hours and immediately used practically, and then it vanished almost utterly in the late '90s. Two generations are completely illiterate in the language of their ancestors.
Now, there's a couple of heirs to BASIC.
Python mostly took that role. For a while it looked like every computer would have a good version, but then between the Python 2/3 fiasco and hardening systems, you mostly get an old Python shipped on platform, and have to manually install from Python.org. IDLE (with my IdleStart shortcut ) is still a pretty great REPL, editor, and runner. import turtle as T; T.reset()
and you can start doing turtle graphics in 10 seconds. The Raspberry Pi Beginner's Guide has a lot of Python as starting language (and Scratch, which is more a cruel joke than a language), which isn't great at graphics on a low-power computer but it is possible. The problem is it's considerably slower than a good BASIC, can't make use of multi-core, and relies on Tkinter for most graphics, which is even slower. Python's an evolutionary dead-end.
JavaScript is everywhere, and trivial to get started with… except you immediately run into a security wall, so you have to run a web server (easiest is, ironically, python3 -m http.server -b 0.0.0.0 8000
which serves all files in current directory). Edit file, reload browser page. And then doing anything in JS is a big hike up the mountain of JS, HTML, CSS. But it does run. Teaching everything you need to do interactive programs in it is hard bordering on a semester's coursework.
Scheme and LISP can be used this way, as seen in the Land of Lisp book, and Racket, but SBCL is a complex and terrible runtime for an ugly dialect of LISP (IMO, don't throw bombs at me), Racket has a broken REPL and their focus is on language experiments, not so much being useful. The other Schemes vary from hard engineering to even launch, to easy enough but poorly supported like my favorite Chez Scheme. I've been working on a "Beginner's Scheme" book for a while, and it's hard to compress what you need to know to get anything done, into small, fun parts.
It's actually easier to do Programming on Your Phone.
But there's still nice enough BASICs, in particular Chipmunk BASIC, and the old BASIC books & magazines work fine in it:
- Stimulating Simulations, by C. William Engel: One of the first computer books I read.
- Creative Computing archive: The best magazine of games and theory of using computers for education and art.
- BASIC Computer Games
- More BASIC Computer Games
- Big Computer Games
- Usborne BASIC books
- computer magazines archive: Just about everyone wrote BASIC.
- Writing BASIC Adventure Programs for the TRS-80: One of my first exposures to data structures, thinking about program structure and design at large scale.
- BASIC programming archive: There were thousands of BASIC books published in the '70s-80s. Many are just repetition and shovelware, some are very specific to a machine's graphics & sound or lack thereof, while others are fantastical works of art, like:
- Dr. C. Wacko's Miracle Guide to Designing and Programming Your Own Atari Computer Arcade Games
- Dr. C. Wacko Presents Atari Basic and the Whiz-Bang Miracle Machine: Both of these are very specific to Atari but you must look at them.
- ANTIC podcast interview with David Heller (Dr. C. Wacko)
Just make a BASIC folder, download all those PDFs into it, and read them to see how quickly they go from "here's the BASIC commands" to "write a real program". And how you can make computing fun, not a chore.
I've been spending a little "non-productive" time hacking on my BASIC CRPG that'll run on the SpecNext when it arrives later this year… I do my work for now in Chipmunk; because NextBASIC has some strict limitations, I keep those limitations in my program, like single-letter array names. Graphics will have to be totally rewritten (but most of the UI is text-mode and portable), some data storage, too. Happily NextBASIC does have named functions (PROC, or SUB in Chipmunk), local variables, and loops (REPEAT:WHILE x:...:REPEAT UNTIL x, verbose but usable), so there's less GOTO and no GOSUB in my code.
I thought the line numbers and other limitations would kill me when I started doing it again, but in practice it hasn't bothered me much. I start each logical section at multiples of 10 or 100, add 1 per line, indent function and loop bodies, rarely have to renumber them. Since I don't GOTO/GOSUB much, finding them is less of a problem, only time I need specific line numbers is RESTORE xxx
for DATA.
I'm starting to see BASIC as an interesting language again: Low-level enough to do something on simple machines, and reveal exactly how your algorithms work, high-level enough that you can get something done (much easier than ASM). You wouldn't want to build a large system in it, but focused problems, "tunnels through rock" as Chris Crawford wrote in De Re Atari, are well suited to it.
The original home computers having "turn on, maybe hit one key, you're in BASIC" interaction was amazing, unparalleled in any other system since, and we need to get back to as close to that as possible.