I dunno. I’ve been programming on and off since the 1980s and professionally since the early 2000s. It still always takes me forever to build anything worthwhile and even longer to maintain it. Most software these days is complicated enough that it requires many people to build and maintain. I’m not sure that “everyone should be equipped to program what they need” was realistic even back in the 1980s, let alone with today’s complexity.
Most users don’t want to be sucked down a bottomless time hole just getting their computer to do a thing it won’t do, and understandably prefer to have someone else suffer this for them, then use what was built.
So I don’t know about the goal of everyone being able to program. I still think it’s a worthwhile goal that people should have full control over their machines so that they can install and uninstall what they want, configure devices to work the best way for them, and turn off the features that don’t serve the user at all. And I think open source software is great for bringing technically inclined people together to collaborate on what’s actually useful to people.
I agree entirely, especially as modern systems massively ballooning the required knowledge and skill.
However, I do think there could’ve perhaps been a happy medium, where OS’s retained and continued to develop a simple, built in way to program easily and without setup to retain the spirit of what BASIC provided.
I guess I’m imagining a sort’ve evolved version of Hypercard, which seemed to be on the path of providing something like that.
The beauty of HyperCard is that it lets people program without having to learn how to write code — what I call “programming for the rest of us”. HyperCard has made it possible for people to do things they wouldn’t have ever thought of doing in the past without a lot of heavy-duty programming. It’s let a lot of non-programmers, like me, into that loop.
David Lingwood, APDA
There seems to be Decker as a spiritual successor, which is pretty neat.
I’ve felt for a long time that continuous gradients of complexity with sensible defaults all along the spectrum is a general architectural pattern necessary for wide spread empowerment. But I don’t see anyone thinking in those terms. Maybe it’s just me, but it feels obvious. As you say, but everyone is going to dive into the source code. So let them find the level at which they’re comfortable.
50 years after BASIC and nothing is written in BASIC.
To replicate its success from the 80s we would need a language that is simple enough for everyone to learn but actually performant and powerful enough to write an entire operating system and application stack in. Then perhaps non-programmers would feel more inclined to look under the hood, see how things work, and change their program’s behavior.
The problem though, is that for any reasonably complex system or application, you need to use structured programming. This is what enabled the levels of abstraction that we use to break down programs into layers that can be understood in pieces, and it is what makes large complex software possible without ending up with a mess of spaghetti.
However it is these abstractions that turn a software’s code into a Domain Specific Language, and endless APIs that need to be learnt and understood by the programmer.
For programmers it is normal to us that when we want to work on a new codebase we have to learn the idiosyncrasies of the codebase, and learn its DSL and the APIs that it uses, or exposes. But for a non-programmer, this would essentially feel like learning everything about programming from scratch. They would have to become a programmer and develop maintainer skills just to understand what they want to change. (This is why programmer is still a job).
Perhaps the real value of BASIC was that without structured programming, every program was just a pile of spaghetti that even a child could pull apart with a fork.
GOTO 0
BBC micro in a shop:
10 PRINT “Boobies”
20 GOTO 10
Vic 20 in a shop:
10 POKE 808,112 20 print “Boobies” 30 goto 20
And then you watch the sales assistant walk confidently up to the computer, press the stop button and nothing happens
Dijkstra wants to have a word with you
In my experience it doesn’t matter how accessible the language becomes, most people find the precision required to make machines behave in a desirable way is exhausting or alien to them.
This isn’t any kind of failing though. I’ve come to see how organising modern businesses (with processes, regulations, standard etc) is a kind of “programming”. And there are many who are good at that (designing human processes to automate goals) where I completely flounder, even with the help of the ‘right’ training, books, coaching etc
Today’s users have massive amounts of computer power at their disposal, thanks to sales of billions of desktop and laptop PCs, tablets and smartphones. They’re all programmable. Users should be able to do just enough programming to make them work the way they want. Is that too much to ask?
Smartphones – and to a lesser degree, tablets – kind of are not a phenomenal programming platform. Yeah, okay, they have the compute power, but most programming environments – and certainly the ones that I’d consider the best ones – are text-based, and in 2025, text entry on a touchscreen still just isn’t as good as with a physical keyboard. I’ll believe that there is room to considerably improve on existing text-entry mechanisms, though I’m skeptical that touchscreen-based text entry is ever going to be at par with keyboard-based text entry.
You can add a Bluetooth keyboard. And it’s not essential. But it is a real barrier. If I were going to author Android software, I do not believe that I’d do the authoring on an Android device.
When Dartmouth College launched the Basic language 50 years ago, it enabled ordinary users to write code. Millions did. But we’ve gone backwards since then, and most users now seem unable or unwilling to create so much as a simple macro
I don’t know about this “going backwards” stuff.
I can believe that a higher proportion of personal computer users in 1990 could program to at least some degree than could the proportion of, say, users of Web-browser-capable devices today.
But not everyone in 1990 had a personal computer, and I would venture to say that the group that did probably was not a representative sample of the population. I’d give decent odds that a lower proportion of the population as a whole could program in 1990 than today.
I do think that you could make an argument that the accessibility of a programming environment somewhat-declined for a while, but I don’t know about it being monotonically.
It was pretty common, for personal computers around 1980, to ship with some kind of BASIC programming environment. Boot up an Apple II, hit…I forget the key combination, but it’ll drop you straight into a ROM-based BASIC programming environment.
After that generation, things got somewhat weaker for a time.
DOS had batch files. I don’t recall whether QBasic was standard with the OS. checks it did for a period with MS-DOS, but was a subset of QuickBasic. I don’t believe that it was still included by later in the Windows era.
The Mac did not ship with a (free) programming environment.
I think that that was probably about the low point.
GNU/Linux was a wild improvement over this situation.
And widespread Internet availability also helped, as it made it easier to distribute programming environments and tools.
Today, I think that both MacOS and Windows ship with somewhat-more sophisticated programming tools. I’m out of date on MacOS, but last I looked, it had access to the Unix stuff via
brew
, and probably has a set of MacOS-specific stuff out there that’s downloadable. Windows ships with Powershell, and the most-basic edition of Visual Studio can be downloaded gratis.Working with some proprietary no code tools at the moment, and, yea, not letting people just program in a decent language is a mistake.