Advice is solicited for the benefit of the advised, so it's always relevant to consider what benefit beginners will get from your advice.
I was exposed to Basic early and I've used relatively modern dialects of Basic. I don't subscribe to the old Dijkstra "Basic causes brain damage" line. I can't personally recommend Basic to most people who have a goal of learning to program or learning about computers.
Basic is unquestionably useful for valid-but-obscure retrocomputing purposes like playing with a Commodore 64. It's also a way to learn about computers in a very general sense. I personally feel nostalgia for the Commodore 64. It had its virtues which I miss every time I touch Kubernetes. But computers don't work much like the C64 anymore, and that kind of "close to the metal" reasoning is less important for most beginners now than when we were watching Second Reality by Future Crew on our PCs. To the extent that it still is, you might as well start with C or assembly. There's little reason to use a relative of Commodore Basic instead of (say) Fortran or Cobol. In principle, any of these languages could be fun for the right person, all will teach something, and all can still be used to do certain things. That doesn't make them recommendable to beginners without caveats.
The Basic problem is that it's infrequently used for any "serious" purposes, which makes it harder to use for those purposes. I don't mean "enterprise Java" but even simpler things like generating a binary or creating modern looking graphics. Talented people can always push the limits of their tools, but the number of people using any dialect of Basic these days is so small that the tooling and available help are small. When you inevitably decide to do something else, you need to learn a completely different language. That's quite a speed bump. You could argue that it makes a stronger programmer to write in Basic (or Befunge or INTERCAL). But the value of spending years learning to debug GOTO spaghetti to a professional level doesn't really transfer, and that's time you could have spent mastering a working language with abstractions that make your code easier for you and everyone else to understand and debug. Getting more done, too.
It's not literally impossible to do things with Basic, it's Turing complete after all. Pace Dijkstra, it won't rot your brain. But it won't make you a stronger programmer than learning something else. And how often do beginners want to make things harder on themselves while also living in an interpreter?
1 comment
[ 2.6 ms ] story [ 16.0 ms ] threadI was exposed to Basic early and I've used relatively modern dialects of Basic. I don't subscribe to the old Dijkstra "Basic causes brain damage" line. I can't personally recommend Basic to most people who have a goal of learning to program or learning about computers.
Basic is unquestionably useful for valid-but-obscure retrocomputing purposes like playing with a Commodore 64. It's also a way to learn about computers in a very general sense. I personally feel nostalgia for the Commodore 64. It had its virtues which I miss every time I touch Kubernetes. But computers don't work much like the C64 anymore, and that kind of "close to the metal" reasoning is less important for most beginners now than when we were watching Second Reality by Future Crew on our PCs. To the extent that it still is, you might as well start with C or assembly. There's little reason to use a relative of Commodore Basic instead of (say) Fortran or Cobol. In principle, any of these languages could be fun for the right person, all will teach something, and all can still be used to do certain things. That doesn't make them recommendable to beginners without caveats.
The Basic problem is that it's infrequently used for any "serious" purposes, which makes it harder to use for those purposes. I don't mean "enterprise Java" but even simpler things like generating a binary or creating modern looking graphics. Talented people can always push the limits of their tools, but the number of people using any dialect of Basic these days is so small that the tooling and available help are small. When you inevitably decide to do something else, you need to learn a completely different language. That's quite a speed bump. You could argue that it makes a stronger programmer to write in Basic (or Befunge or INTERCAL). But the value of spending years learning to debug GOTO spaghetti to a professional level doesn't really transfer, and that's time you could have spent mastering a working language with abstractions that make your code easier for you and everyone else to understand and debug. Getting more done, too.
It's not literally impossible to do things with Basic, it's Turing complete after all. Pace Dijkstra, it won't rot your brain. But it won't make you a stronger programmer than learning something else. And how often do beginners want to make things harder on themselves while also living in an interpreter?