Version 0.01. Created by Andrew Towers of the Dandenong Ranges, Australia

Back to BASIC

What is Johnny BASIC?

Johnny BASIC is a programming environment and interactive programming guide for learning about how computers work.

But why?!

In 2006 David Brin wrote an article called Why Johnny can't code about there being no easy way to get kids hooked on programming.

He lamented [although this is my interpretation] that our programming tools are too hard to install and get working, and once they are working, the distance between a new project and seeing something working is massive—for a new programmer, it takes days just learning about picky syntax rules. The languages themselves take a lot of code to really do anything. And you also need to install libraries to do anything fun.

He recalls BASIC on the home computers of his youth, where all you had to do was turn on the power, and you could immediately start typing in statements to execute, or a new program listing to run.

The closest modern analogue is Python, which typically needs to be downloaded and installed. But it doesn't come with any exciting built-in capabilities, like drawing graphics and making sounds! Where's the good stuff? New programmers also get tripped up by the indentation rules. And "how to run my program." (Often, the answer is "use the shell" - the what now?!)

Johnny BASIC

Which brings us to this project. David Brin actually created quite a stir at the time, with even Microsoft coming out with Small Basic in answer to the article.

However, I think many respondents missed David's more salient points:

Bret Victor touched on some of these points in his fantastic Learnable Programming article, with these relevant points:

The article points out that the answer to the question "how can we get people to understand programming?" may actually be "make programming more learnable" (we're focusing on the wrong side of the problem.) I highly recommended reading this article.

Project Goals

There is a tension between creating a learnable programming language and teaching people how computers work.

Computers work with numbers. Everything is made up of numbers in the computer's memory. Pictures are made of up numbers in memory. Sounds are made up of numbers in memory. Text is made up of numbers in memory! Numbers, as Bret Victor points out, are not a great user interface. They don't explain themselves. They need to be explained. But they're close to how computers work.

This project is about teaching people how computers work—and how computers follow simple instructions, but can do so very very quickly. The old 80s BASICS were simple and close to the machine by necessity, because the computers were slow and didn't have much memory. This makes them good for learning about how computers work.

Some versions of BASIC—such as Commodore 64 BASIC—made heavy use of PEEK and POKE instructions to access hardware registers directly! While I don't think this is a great way to program, and it leads to very obscure and unreadable programs, it does bring the programmer very close to the hardware.

I feel I can leave teaching people to think about problems like a programmer (decomposition, abstraction) to others. I don't think there's a great problem here in the modern world— some places teach programmers to think this way.

I do think there's a problem where programmers have no idea how the machine actually works, or what their instructions cost to execute, or why their battery keeps going flat, or even how the computer goes about executing their code at all! And that's not a good place to be.