one of the reasons qbasic was so successful was because it came preinstalled on your OS and it came with everything. input, text, graphics, sound, even "music" through the PLAY command, even a built in help catalogue detailing how it all worked

the only way to get that same experience today is to use a fantasy console

the other reason qbasic was likely so popular was that it avoids the billion dollar mistake: it did not have null as a concept. everything was a value or treated like a value, and for non-value types the default was simply empty (a string of size 0, an array with 0 records)
treating everything as a value type had the additional happy benefit that garbage collection was absolutely trivial

@eniko Is it possible to have usable zero values in a language with generic types?

fn f<T>() {
// what would we need to do to know the zero value for <T>?
let x: T;
...
}

iiuc, in Go, people generally try to design their types so that the zero struct is meaningfully zero-ish, but that depends on mutual cat herding by the community.

@mvsamuel i think it's possible but a language would have to be designed around it, i think