Wed Jan 25, 2012 7:02 am
DavidS said:
Also the limitations that you seem to have run into with BASIC seem to be the limits of DOS not the limits of BASIC.
Partially, but only partially. The thing is, I am almost exclusively interested in languages that lend themselves to being taught. That doesn't mean they have to be "teaching languages" per se, it means I have to be able to teach them to beginners.
The only versions of BASIC I'm interested in teaching happen to be 16-bit. I've tried a slew of 32-bit and even 64-bit BASIC interpreters and compilers, I used BASIC for a quarter of a century and spent years looking for something (anything) newer, that felt (in all ways, if possible) like that fun, carefree, friendly experience.
Not that BASIC was always fun and carefree. When I was 9, I had some real stumpers "Why won't it work? I'll just have to keep trying to find it until it does…" with simple loops and juggled values in variables. (I don't recall if we can blame this on GOTO… I was doing pretty standard looping, not hellish My-First-RPG pseudo-branching.) Python could have helped, but some things still can't be matched for simplicity in BASIC. These "My language is higher than yours" types know nothing about what it's capable of.
Only modern BASIC retains almost none of the feel of classic BASIC. Even in this century, it was worth trying to push QBASIC (accept NO imitations, they're all cheap and forever half-complete, call them Zeno's BASIC) to its limits, but the fly-by-night we-can-do-anything-but-we-choose-to-make-the-wheels-square-because-C-is versions of BASIC all get it wrong because the authors (like many in this thread) don't quite grasp what made BASIC great for most people. They implement BASIC the way Sarah Palin implements the modern, professional woman: with minor, borrowed technical experience but not half a lick of sense.
You think they have sense? Imagine supporting inline assembly, JMP commands and all, and then seriously debating the merits of dropping GOTO. The mind reels. It's all about paying homage to once-great ideas, without ever knowing the meaning or purpose behind them. Dijkstra started a cult, and they come out in droves to save the unwashed coders from GOTO, even when everyone's given it up for DO… LOOP and WHILE… WEND, actual branching subroutines (Not good enough! Global variables are impure!) and even given up BASIC for other languages. It's not intellectual, it's idolatry. When Dijkstra comes back soon in the dark last days of the internet, I think he'll be smiting his followers before he turns his wrath on us. I've got my OO stake ready, we'll see who Breaks in 100 first.
It's possible to use QBASIC in an emulator, but it's not really possible to add to or share it. What's left of the QBASIC community doesn't even grasp the importance of a license that allows a future. In a the SOPA like world we already live in, they believe that they'll be able to share QB 1.1 forever, even though "abandonware" is an "I believe in fairies" kind of concept, especially when dealing with Microsoft, and worse, when they finally start to create a real alternative, they spend a year promising it will be in the Public Domain or GPL/BSD, then bait-and-switch to the same terms that prevent QB 1.1 from being run outside an emulator!
FreeBASIC is not the BASIC of the 21st century because it bait-and-switches friendliness. You can do HALF of what QB did, but if you want more you can always start doing BASIC the Dijkstra way: no such thing! That was the point of his Structured Inquisition, to DO AWAY with BASIC, not reform it, right? FreeBASIC reforms BASIC by doing away with it, and what you get is basi-C (or "Basically C.")
QB64 is not the BASIC of the 21st century because when they author wants to pull the plug, he can or will. Preserving decades of history: You're doing it wrong. I don't trust people who lie to their fans about licensing for a year anyway. "Hey, kid, you like BASIC? The first one's freeware."
So what is the BASIC of the 21st century? Python. I know, I basically dedicated years to finding it. What qualifies it? Compromise, and a LOT of details:
* Ubiquitous (already on more systems than QB64 or FB ever can/will be found on.)
* Interactive environment (base)
* Interactive environment (several 3rd party IDE's, some aimed at schoolchildren.)
* Easy handling of super-flexible data types (Duck Type is Typed, also)
* OO features that are neither mandatory nor bolted on as an afterthought (from C.)
* Easier (Beginner Friendly!) handling of libraries than BASIC offers (the only way you can achieve "all-purpose" in this century)
* Not just a teaching language, people actually use it to get things done
* Not just a BASIC syntax with a lot of planning ahead, great for prototyping
I don't know any modern BASIC that does this. It's not that it can't be done in 32 bit code, but no one has, and no one will.
I loved SCREEN 12 and SCREEN 0 in particular. Pygame doesn't make it easy without some boilerplate for "SCREEN 12." As said, a wrapper could fix that.
But I spent years white-knuckled with grit teeth over the remaining BASIC options. I wrote a cool text-mode wiki that no one gave a crap about. And then I finally found a modern BASIC. But it was named before anyone could think to put "BASIC" in the name. It's as close as another modern dialect, to get closer you have to go back to Microsoft or trust the new QB64 monopoly. Sorry, I don't have that kind of faith. After watching QB die for 10 years, it will take a lot more to see the same games clone it, just for it to die again.
But BASIC is not harmful. Hoping too hard for its revival is bad for your health, but using it and sharing it is not. And if loving BASIC is a crime, I'm happy to defile Dijkstra's footstool with it. I won't make you use Python but I will tell you it's my favorite BASIC dialect these days.
Try not to hold GNU/Linux up to the same "do as I say, not as I do" criteria the zealots hold BASIC to. BASIC wasn't perfect, neither is free software, but at least the handcuffs are optional. (Hey, that's what I liked about BASIC, too…)