I worked as a hotel night auditor during college. It was great for me: I did actual work from around 11PM to midnight, then loafed around until around 6AM when it was time to set up the breakfast table.
A big chunk of my job was doing tedious manual edits in the guest management software that tracked who was in what room, what phone and pay-per-view charges they'd racked up, etc. It occurred to me to peek at its database file and see if I could pull any useful data out with automation. The DB turned out to be a flat file of fixed-length records. The DOS PC had a copy of QBasic on it and I used a bunch of trial and error to map those records to types, and then I could loop across the records to get interesting data out of them.
Long story short, I ended up with a system we'd run nightly to correct misspellings, build reports of which companies did the most business with us and how recently, identify regular guests who hadn't been around in a while, and a thousand other little things that made my job much more pleasant and my boss extremely happy.
It would be much easier to recreate that program today in a nicer language. I didn't have a nicer language available, though, and while it wasn't pretty, QBasic got the job done.
The AWK Programming Language was published in 1988, and indicates:
"Aside from these
limitations, however, awk should be useful in any environment; in particular, it
runs on MS-DOS. Further information is available from Addison-Wesley."
It likely was not easy to find, and I hadn't heard of it until 1990.
There's zero chance I personally would have been capable of building that same software in Awk, even if I knew of it, and even if I knew how to get it onto that non-networked computer that didn't have any removable media in common with what I had at home.
BASIC is a uniquely useful language on machines with extremely limited RAM. It was designed to take up as little program space as possible even when compared with machine language. On home computers, each BASIC keyword is tokenized into a single byte.
I have a computer with only 3kb of RAM but has a comparatively large amount of ROM to support a complete BASIC. With BASIC you can create useful programs that would otherwise be impossible to fit into RAM. This has given me a newfound respect for the language.
Which was an attempt to make a standard dialect that different computers could interpret, and/or convert into their own machine's BASIC.
A late-night radio program (NOS Hobbyscoop) would often end its transmission with some minutes of tape-loading sounds. Users would record this on tape, run it through some conversion program, and RUN. So the same program as transmitted over the air, could then be run by C64, ZX Spectrum, MSX, Amstrad CPC users etc.
Iirc it wasn't that popular compared to other ways of obtaining software. But computer users @ the time were eager to do & try anything they could get their hands on. Today's internet info-overload didn't exist then.
And of course radio had a wide audience. Interesting programs could thus be distributed among many users quickly.
It's hard to overstate how important BASIC was to the adoption of personal computing - it provided a straightforward way to program an entire generation of home computers and bootstrapped countless careers.
I don’t understand why it isn’t taught to kids instead of scratch.
Visual coding is my nemesis. I just disagree with it in principle. It makes even the simplest things complicated and virtually impossible to debug.
BASIC was the first computer language I learned. It’s so basic I just taught it to myself from the help section when I was 12, without any exceptional ability on my part.
You're giving me ideas-- My oldest is nine and that's probably around the age when I first got my own computer (a 286) and dove into QBasic. There's no way he'd choose to spend time in BASIC unless it was his only option. I have an ancient Thinkpad gathering dust, maybe I'll install DOS 6.22 on that sucker and have it boot straight into QBasic from autoexec.bat.
At bedtime we're a "you don't have to sleep, but you have to be quiet" household so if he had it in his room it might see some use.
Why not both? My Atari 800 came with a BASIC and a Logo cartridge. Logo was the thing that got my attention first because it could draw pictures on a TV screen right away, but writing BASIC programs and storing them on a cassette tape was the thing that got me hooked for life.
When I was in high school (around 2000) they had three CS courses that kids could take - the first was in QBasic, the second was in Turbo Pascal, and the third was in C++ for the AP CS exam.
Yep, BASIC bootstrapped my programming interest even as late as the late 2000s. School library was ancient, the only programming books were on BASIC and internet access was limited. So I got started trying to use those to learn this: https://justbasic.com/ (surprisingly, updated even up till 2018, and the paid version updated just a few months ago).
As a clueless, overly ambitious 12 year old I was a massive annoyance for the skilled users on their forums, I remember getting ranted at for wasting people's time with stupid questions, writing awful code, not understanding licenses etc, but it was a pretty good entry point until I managed to get my hands on books for more modern languages.
AFAIK, my highschool still is offering BASIC in their intro CS curriculum. It's just so accessible and many of us preferred it over Python for intro classes
QBASIC and the printouts I could get of fanzines or Pete's QB Site kept me engaged in programming throughout middle school. I moved ok to VB 5/6 in high school and began my career making all kinds of small apps and utilities for people and companies.
Certainly did mine. I credit my career in programming to an after-school class in programming BASIC on the TRS-80 when I was in middle school, and then the TI-99/4a I had at home when I was in high school.
I even used BASIC professionally for a while in the 1990s.
Most people think of one of the MS BASIC dialects when they think of BASIC (at least in the US). The original Dartmouth BASIC had matrix primatives, including MAT READ, MAT PRINT, MAT INPUT, and functions like MAT A=INV(B) (yes, matrix inversion), MAT A=BC, MAT A=B+C, MAT A=B-C, MAT A=B(2) (scalar mult), MAT A=TRN(B) (transpose), MAT A=IDN(5,5) (5x5 identity matrix), MAT A=ZER(5,5) (zero), MAT A=CON(5,5) (fill with 1.0).
I cut my teeth on Wang 2200 BASIC, which was an extended Dartmouth BASIC, so it had the above MAT statements, but also a bunch of wild ones that did searching and sorting on arrays, merging two sorted arrays into a sorted output, and more.
Here is a statement that searches a character array A$() in columns 1-5 for a string in Z$: MAT SEARCH A$()<1,5>,=STR(Z$,1,5) TO B$ STEP 5. Every match writes the location to a descriptor array (this case B$), where each pair of bytes was the offset in the A$ array where the match was found.
Despite all that power, it still was quite limited: all variable names had to be a single letter or a letter and a digit. All variables were global. GOTO and GOSUB were either the line number or a "label" where the label was one of '0 to '255. Strings were statically allocated, not dynamic, and the max length was 64 characters (BASIC-2 extended that to 126 bytes). On the other hand, before the program started running everything was allocated there was no possibility of memory overflow during runtime, and no garbage collection, and any references to missing line numbers was caught up front.
Having QBASIC right there and available to play with was my introduction to programming as a curious 11 year old.
I remember reading every topic in the help browser over and over looking for how to write to the screen, because I didn't want my first program to waste paper with the PRINT statement.
One section of the manual told me to use labels instead of old fashioned line numbers, but I could never figure out the syntax to GOTO them. So I kept a nice index card with line number ranges for all the functions in my program. It worked great until I had to spend a day debugging a line number that ended with O instead of 0.
It was always a big mystery why renaming my program from .BAS to .EXE didn't let me click to run it like other programs.
A big chunk of my job was doing tedious manual edits in the guest management software that tracked who was in what room, what phone and pay-per-view charges they'd racked up, etc. It occurred to me to peek at its database file and see if I could pull any useful data out with automation. The DB turned out to be a flat file of fixed-length records. The DOS PC had a copy of QBasic on it and I used a bunch of trial and error to map those records to types, and then I could loop across the records to get interesting data out of them.
Long story short, I ended up with a system we'd run nightly to correct misspellings, build reports of which companies did the most business with us and how recently, identify regular guests who hadn't been around in a while, and a thousand other little things that made my job much more pleasant and my boss extremely happy.
It would be much easier to recreate that program today in a nicer language. I didn't have a nicer language available, though, and while it wasn't pretty, QBasic got the job done.
"Aside from these limitations, however, awk should be useful in any environment; in particular, it runs on MS-DOS. Further information is available from Addison-Wesley."
It likely was not easy to find, and I hadn't heard of it until 1990.
Many alternatives existed, but non that were so approachable on DOS (and many other systems in their variant)
I have a computer with only 3kb of RAM but has a comparatively large amount of ROM to support a complete BASIC. With BASIC you can create useful programs that would otherwise be impossible to fit into RAM. This has given me a newfound respect for the language.
Common in magazines, you'd have pages with listings that users could type in, save, and then run (in that order!).
Well... usually including some corrections. The usual typo's, but even listings as published contained errors sometimes.
BASIC was very suited for this as many keywords are plain English or -like.
It's only later this got replaced by cover tapes etc.
And in the NL, there was a thing called BASICODE:
https://en.wikipedia.org/wiki/BASICODE
Which was an attempt to make a standard dialect that different computers could interpret, and/or convert into their own machine's BASIC.
A late-night radio program (NOS Hobbyscoop) would often end its transmission with some minutes of tape-loading sounds. Users would record this on tape, run it through some conversion program, and RUN. So the same program as transmitted over the air, could then be run by C64, ZX Spectrum, MSX, Amstrad CPC users etc.
Iirc it wasn't that popular compared to other ways of obtaining software. But computer users @ the time were eager to do & try anything they could get their hands on. Today's internet info-overload didn't exist then.
And of course radio had a wide audience. Interesting programs could thus be distributed among many users quickly.
Visual coding is my nemesis. I just disagree with it in principle. It makes even the simplest things complicated and virtually impossible to debug.
BASIC was the first computer language I learned. It’s so basic I just taught it to myself from the help section when I was 12, without any exceptional ability on my part.
At bedtime we're a "you don't have to sleep, but you have to be quiet" household so if he had it in his room it might see some use.
You need some visual thing for the appeal.
Because there is no such thing as a syntax error in scratch. 10 year olds are not great at typing, spelling, or paying attention to the small details.
Scratch rules out a whole class of bugs and allows the kids to jump right into solving the interesting problems.
As a clueless, overly ambitious 12 year old I was a massive annoyance for the skilled users on their forums, I remember getting ranted at for wasting people's time with stupid questions, writing awful code, not understanding licenses etc, but it was a pretty good entry point until I managed to get my hands on books for more modern languages.
I even used BASIC professionally for a while in the 1990s.
I cut my teeth on Wang 2200 BASIC, which was an extended Dartmouth BASIC, so it had the above MAT statements, but also a bunch of wild ones that did searching and sorting on arrays, merging two sorted arrays into a sorted output, and more.
Here is a statement that searches a character array A$() in columns 1-5 for a string in Z$: MAT SEARCH A$()<1,5>,=STR(Z$,1,5) TO B$ STEP 5. Every match writes the location to a descriptor array (this case B$), where each pair of bytes was the offset in the A$ array where the match was found.
Despite all that power, it still was quite limited: all variable names had to be a single letter or a letter and a digit. All variables were global. GOTO and GOSUB were either the line number or a "label" where the label was one of '0 to '255. Strings were statically allocated, not dynamic, and the max length was 64 characters (BASIC-2 extended that to 126 bytes). On the other hand, before the program started running everything was allocated there was no possibility of memory overflow during runtime, and no garbage collection, and any references to missing line numbers was caught up front.
I remember reading every topic in the help browser over and over looking for how to write to the screen, because I didn't want my first program to waste paper with the PRINT statement.
One section of the manual told me to use labels instead of old fashioned line numbers, but I could never figure out the syntax to GOTO them. So I kept a nice index card with line number ranges for all the functions in my program. It worked great until I had to spend a day debugging a line number that ended with O instead of 0.
It was always a big mystery why renaming my program from .BAS to .EXE didn't let me click to run it like other programs.
Ah, memories...
Ha. Like other such newbie-isms.
One of my favorites:
Computer: Hit any key to continue.
User: Where's the any key?
A google search will turn many more amusing ones.
[1] Archive of "SEQUEL: A STRUCTURED ENGLISH QUERY LANGUAGE" https://web.archive.org/web/20070926212100/http://www.almade...
> SELECT NAME FROM EMP WHERE DEPT = 'TOY'
https://www.youtube.com/watch?v=WYPNjSoDrqw
If you don't want to watch the documentary, we did a shorter podcast episode about it:
https://pnc.st/s/kopec-explains-software/6d99d278/basic