The End Of Basic?

Many people, one way or another, got started programming computers using some kind of Basic. The language was developed at Dartmouth specifically so people could write simple programs without much training. However, Basic found roots in small computers and grew to where it is today, virtually unrecognizable. Writing things in something like Visual Basic may be easier than some programming tasks, but it requires a lot of tools and some reading or training. We aren’t sure where the name EndBasic came from, but this program — written in Rust — aims to bring Basic back to a simpler time. Sort of.

You can run the program in a browser, locally, or connected to a cloud service. It looks like old-fashioned Basic at first. But the more you dig in, the odder it gets. The command line is more akin to a Python REPL. You type things, and they happen. It took a while to figure out that you need to enter EDIT to write a program. Then, what you type gets saved until you press escape. The syntax is Basic-like but has oddities. There are no line numbers, but you can use labels that start with an at sign.

If you want to see the program in action, try a game of Snake. Press Q to quit, and you can see the program by typing LIST. You’ll see something like this:

Although it looks text-based, you can do graphics. There’s even a way to connect to a Raspberry Pi and do physical I/O. For learning this looks interesting. There’s nothing to deploy in a classroom setting and there’s collaboration and help tools. On the other hand, it probably isn’t that practical for real-world things or, at least, not what you would want to use.

Maybe we are old-fashioned, but we like real old-school Basic better. You can load Basic on a Raspberry Pi Pico, for example, and have a machine that would have been practically a supercomputer when most people were getting started with Basic.

101 thoughts on “The End Of Basic?

    1. Switch case? Switch ruddy case?? When I was a lad my poor old dad dragged home an 8085 with broken toggle switches, and we had to load our own BASIC in by hand first. In a hole in the road, no less. We’d have given our left arm for switch-case! We had ON x GOTO, and it were good enough for us!

        1. Luxury.
          When we wa kids dad would hammer frozen bugs off wall with his floody fists, and at 2 am after a feast of said bugs in pitch black, we’d develop a quantum cloud computer operating system for 9 years straight wi na sleep.

      1. You can even have a switch-case with ON GOTO, consider this gem:

        10 ON (I=1)*-1+(I=5)*-2+(I=100)*-3 GOTO 50,60,70
        20 REM CASE DEFAULT
        30 …
        40 GOTO 100
        50 … : GOTO 100
        60 … : GOTO 100
        70 …
        100 REM CONTINUE WITH THE REST

  1. Reading the tittle the answer is no. Reason being: QB64pe gets better and better with time. Last time it was discussed here. Debugging with step, break and variable watch was external to the IDE was just getting started. Now it’s integrated with so many other improvements. And all the improvements just make it better.

    It’s not your typical (trash-80) basic. Start in the forums https://qb64phoenix.com/forum/index.php To view all the support you can get. And best of all it’s all FREE!!

      1. What’s your problem with line numbers? They are still there in all modern languages even though you don’t see them.

        And regarding BASIC, the programming language is still very viable today as Visual Basic and it’s still used in a lot of projects today. Modern BASIC is compiled just like modern C is compiled. Today’s Visual BASIC is far removed from the BASIC that was first used as a teaching language in 1963.

      2. That’s why BASIC dialects like Turbo Basic and Quick Basic were so popular in the late 80s, the 90s and, even, early 2000s.

        They could use line numbers, if needed. Say, for porting from/to other platforms, but also supported sub routines and names (you could goto a section named LetsBeginHere:).

        In short, they had many elements borrowed from highly advanced languages like Turbo Pascal.

        Visual Basic was similar advanced at its time. It even was partially QBasic/Quick Basic compatible.

        Looking back, I’m really depressed how BASIC is always being seen as a simple language for kids. We Basic lovers aren’t all easily being satisfied.

        In general, looking at it over and over as a poor man’s language (C64, ZX81 etc) is disgraceful. The VB6 fellows even demanded for 64-Bit support, but MS stubborn and ignored them.

        And those lukewarm creations by Linux fanatics are really upsetting, really. They have no idea what BASIC was all about. *nix guys, please take your C++, Python and Rust and leave us alone, please. If you want to come back, please learn ASM and machine language first, so you can appreciate BASIC.

        Seriously, someone who ever wrote meaningful applications in QB surely can relate here, I think.
        Along with VB, it was a fine prototyping tool, a far cry from BASICA.

        And even before Quick Basic/Turbo Basic became popular, there were advanced BASIC dialects like Amiga Basic or Mallard Basic and Locomotive Basic v2. These were real BASICs, not a C64 Basic. sigh 🙄

      3. Don’t know about you, but doing for example tooling for gamedev in a modern FOSS BASIC like the mentioned QB64pe or the venerable FreeBasic is a blessing. It doesn’t need to be fancy or the fastest, you just want to write it down and be done with it.

        And yes, it is perfectly fine to write your game in one, the only reason i don’t use it for that is because i need interoperability with obscure platforms as i target 8 bit machines. And for that i need C.

        If i would make a nice little indie game that only needs to work on the three major ones, being Linux, Windows and Mac, i would most certainly check out QB64 and FB if they are good enough for what i want to achieve. FB even has the benefit that it can use any library that GCC can use, you just need to convert the C header .h to a FB header .bi and the rest will simply work.

        You might not write the latest Quakendoomenportalstein 6D in them, you certainly could tough, but something along the lines of Stardew Valley, Starbound, Kynseed, Hearts of Iron or Undertale is perfectly doable with the built-in fbgfx library.

      4. Remember the horsepower that a computer from 1985 has. You were lucky if you could edit a line of code. Usually you just had to write if over again after listing it. Plus, how are line numbers any more petty than counting invisible white-space characters?

      5. At one point in my life I would have agreed with you. However the “coding education crisis” isn’t something that has always been with us. Back in the 80s and 90s, elementary and middle schools taught programming. The disappearance of those programs coincides with the demise of BASIC. In the rush to move to “better” languages, we have steepened the learning curve and driven away a lot of would be casual programmers in search of purity.

        If you don’t believe me, ask a random Milennial or GenZ programmer how they got their start and there’s a good chance they will say “TI Calculator BASIC”. That’s not very far from the BASICs us GenXers learned on.

        1. Yep, i am not fond of Microsoft, not in the slightest, but the death of VB6 was a tragedy.

          At least we still have QB64pe and FreeBASIC as something we can point the aspiring bedroom coder at if we want and i will always point that way if someone asks.

          […] driven away a lot of would be casual programmers in search of purity.
          Yep, elitism killed that off, and it saddens me to see too many kids with their tablets just consuming and not creating. But yeah, nothing we can change unless we get companies like Microsoft to pack something as easy to use as QBasic with their OSes again.
          Python is nice, but teaching a kid that indentation matters? Not that easy if at the same time you want to teach the basics of program flow.
          One of the things that BASIC was good at, easy to understand with instant gratification.

          10 PRINT “Some vulgarity”
          20 GOTO 10
          RUN

          Who hadn’t giggled at that when they where kids?

          10 INPUT “Whats your name”,A$
          20 PRINT “Hello “;A$
          RUN

          Aaaand we understood variables, that you can ask for the user to enter data into one and getting the result on to the screen.
          Crude but it worked to get the point across without too much syntactic sugar.

          The world got poorer without a proper mainstream BASIC.

          1. “get companies like Microsoft to pack something as easy to use as QBasic with their OSes”
            Doesn’t 11 still include VBScript? I know it’s not as minimal as QB, but with a n appropriate tutorial, it should be a pretty good starter language.
            Also, every OS comes with a browser, so a quick start guide to simple JS programs would also get interested kids started with no download or installation.

    1. I would say that Simmons Basic for the C-64 might give it competition. Commodore should have bought it and put it on the C-64 as standard. Plus the kid that wrote it really was a kid. I think he was like 13 or some crazy age like that.

      1. They couldn’t, it was too fat, I’m adraid. The C64 datasette routines would have had to be sacrificed to make room for the extension in ROM.

        Unfortunately, us European living in poverty were somewhat dependent on the cassette format. No seriously.

        The business sector was different, real PCs used floppy for storage through and through, like in other places around the globe.

        But the private market, the home computer market, was very backwards in general, with Amiga/Atari ST being the exception (used 3,5″ DD diskettes).

        But they weren’t really home computers anymore, since they featured all the important functionality of a Personal Computer (~1MB RAM and up, 16-Bit or higher CPU, a real operating system with a GUI etc).

        To give an idea, in Eastern Germany of the 80s, that third-world country, a single floppy disk (C64 etc) costed something equivalent to a $100 USD, while a music cassette was affordable.

        So it wasn’t feasible to drop datasette support to make room for new Basic routines in ROM. And an external module wouldn’t have helped, either, due to the C64’s lousy 64KB address space. 😔

      2. “Plus the kid that wrote it really was a kid. I think he was like 13 or some crazy age like that.”

        Not hat strange, I think. I started tinkering with Basic at age 6-7, and that kid was *twice* my age when he finished the Basic extension. An “adult”, from my perspective of the time.

        Sure, today this looks amazing/weird, but back in the 70s-90s, we really grew up with that stuff, so we learned to master it naturally. Like learning our mother language, maybe.

        And in some eastern country, I was told by a foreign class mate, “kids” in his home would reach adult hood at age 14. They can/must marry, drive a car etc. So it’s all relative, I guess. 🤷‍♂️

        Btw, here’s a reverse situstion: A “friend” of our family, which originated from the eastern side of iron curtain, told us that he was still playing in a sandpit at age 12, eating sand. This was in the 60s/70s, maybe. By contrast, several years later, I was learning English as a foreign language in school at such an age. Unbelievable how long that generation’s childhood lasted! It’s shocking.

  2. Regarding Visual Basic, this does not require a lot of reading or other tools at all. In fact, I think that the fundamental modules of Visual Basic – a user interface designer and a set of event handlers – is more intuitive to anyone who grew up with Windows, Mac, and smartphones, than BASIC ever was. I’m not sure why anybody is even playing with non-GUI interpreters any more. Even more mystifying to me, is how Python, without any universally-implmented platform-independent GUI, is even a thing.

    1. Simply put: There’s a lot of stuff that you can do on a computer that doesn’t require a GUI – or even a user interface of any kind.

      Most of what I do at work doesn’t involve a user interface. The software I write sits in the background somewhere, transferring (and transforming) information between various systems. No user interaction is needed or desired.

      Many of my hobby projects don’t have (or need) a GUI – or require something very unlike a typical GUI.

      I find it astonishing that people could assume that a GUI is required.

      1. My take on this is that a GUI is fine, if you want it, but it shouldn’t be an inextricable part of the language like it is in Visual BASIC. The way BBC BASIC handles this is that the ‘core language’ is non-GUI but supplied with it are GUI IDEs, GUI libraries, GUI utilities etc. all themselves written in BBC BASIC. The best of all worlds, if you ask me. Click on this link and take a tour of what (modern) BBC BASIC can do: https://wasm.bbcbasic.net/bbcsdl.html

      2. I do understand that it is usually much simpler to write a non-GUI tool for yourself or other sophisticated users, but I’ve found that whenever I do that, I get pushback in the form of “how is anybody else supposed to use this?” Even providing configuration files for the users to use to customize the tools seems to be beyond what is considered appropriate. And they’re right: some users will inevitably try to edit those config files in Word. It’s like handing someone a toolbox when what they needed was a mechanic. Only, I don’t have time to be everybody’s mechanic, so the next-best thing is to give them a GUI.

    2. Agreed. I truly love Python, but try to build a GUI in it? Pbbbbbbbt.

      If only someone would build an IDE like VB but for python. Microsoft isn’t doing anything interesting, Hey, Satya!

    3. ” I’m not sure why anybody is even playing with non-GUI interpreters any more.”

      +1

      And let’s don’t forget IDEs with integrated compiler/interpreter, like Turbo Pascal or QBasic.

      Personally, it’s beyond me how the *nix community still lives without them.
      Using something like nano (edline’s bigger brother) is beyond me. So crude, so ugly. 🤢

      1. I find myself arguing both sides of this, at different times. I try to avoid IDEs, finding it much more effective to write Makefiles. That way I can use my editor of choice. It’s also much better when trying to develop something for multiple platforms, since each IDE, even those that are capable of building for multiple target architectures require working around a lot of their “features”. With make, I write a separate Makefile for each target, which I run on that target machine, with the source tree on a FAT32 drive that can be read and edited on all platforms.

    4. What I don’t understand is why we don’t have an open source VB clone in the browser, but using JS instead of VB and flexbox instead of specific positions.

      Most of the attempts to do this seem to move away from the Toolbox/Inspector/Code View model, they go with some “Connect this to our supported cloud API” kind of thing. GrapesJS seems closest, but it’s still pretty different from VB.

  3. I started 43 years ago with PET BASIC. Now I’m programming in Visual Basic for Applications (VBA). People say VBA is de ad or dying because Microsoft pushed VB.NET on the world, but I am very happy with VBA, and still haven’t hit a limit on what it can do. There are literally billions of lines of VBA code in the world so I don’t see it going away any time soon.

    1. I’ve coded in Forth, PASCAL, C, C+, Visual C, GW Basic, PET Basic, PC ROM Basic (let’s see who on this forum knows of that one!!), VBA and Visual Studio VB.NET.

      VB.NET is the best of all of them. It’s more free flowing than C and compiled.

      These days I do a lot in Transact SQL or T-SQL. It’s like a throwback into the 1980’s.

      1. “VB.NET is the best of all of them. It’s more free flowing than C and compiled.”

        And it has nothing to do with Basic anymore.
        It removed all the friendliness associated with VB Classic, that’s why it wasn’t accepted as a successor.

        To Microsoft, it’s the least important thing supported by Visual Studio .NET.

        Users migrating away from VB6 don’t use .NET, they’d rather quit altogether and let rest things in peace and dignity.

    2. Where I work, one of my tasks was getting ‘rid’ of all the VB code that was hanging around for our automated tasks. Python 3 took over most of the needs, while C# and C/C++ took care of the rest. Reliability went up and no longer have to touch those tasks any more. Plus everyone in the group can maintain all the tasks when necessary. Win Win.

      Basic on the VAX was my intro to programming in high school. Fun, but once I got to college, Pascal took over and Basic was in the rear view mirror so to speak. Pascal was soooo much better than Basic to work with. Then C for most of my career and dabbling with other languages too. Now Python 3 and C/C++ are the go to languages here and at home. No reason to touch Basic ever again.

      1. Code is code and there’s nothing inherently unstable about any language including VB (Visual Basic) but there is a lot of sketchy code out there because of the way it was written. I suspect that your reliability went up, not because you replaced VB with something else but because you solved some structure and workflow issues in the process.

  4. Clickbait header. Over the years, Among others I’ve used QB, PowerBasic, PicBASIC, most recently BASCOM. ALL are compiled. All work fine. BASCOM particularly is a joy to work with. I wouldn’t think of telling Steven King that he’s not a ‘Real’ author until he writes a story in Italian. BASIC is the closest language to English I’ve ever found. I’m not a professional programmer and don’t have the space in my head to learn a foreign language like C++, only to forget it all by the next time I need to program something.

    1. Well, truthfully, it was just a play on the name of the program… EndBasic. I assume the program’s author thinks it is the “Basic to End all Basics” which is, of course, highly debatable.

      1. ^Thanks for clarification.

        (English/American people and their lame puns. sigh 🙄)
        It’s beyond me why puns are always being seen as the greatest thing ever.
        And why they constantly must appear.
        And this one’s just flat. So flat it’s not funny.

        It rather hurts the brain, because someone’s looking for an explanation and won’t find it, because it’s too primitive to be a valid possibility

        Robot Marvin in the “Hitchhiker’s guide to the galaxy” suffers same, just way more intensive.

        1. ^No offense, though. It’s not your fault. I can imagine that puns are being expected by community or a certain type of readers these days, so there’s a pressure “to deliver”. And that Basic understandable doesn’t offer much in this respect.

  5. Friends dont let friends learn Basic.
    “It is practically impossible to teach good programming to students that have had a prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration.”

    1. People keep repeating this quote from Edsger W. Dijkstra who wrote in in 1975 (EWD489); as if BASIC did not change from that time to this day, for 20 years i’ve seen people repeating this comment every time there is a post about BASIC.

      1. I didn’t know this! Thank you for putting it in perspective. I did start with BASIC, but it wasn’t as limited a one as the Dartmouth BASIC of which Dijkstra was apparently complaining.

  6. After 15 minutes: One can get to run code in minutes, fast enough, can probaly make a screen and keyboard game, but for the time it seems you cannot interact with the outside world, like reading and writing files. But it maybe due to my limited time excursion. Should i suppose that a program i write is translated to Rust code that i could read at some point?

  7. Sometimes when you just want to belt out a table of numbers from formula, or just run a calculation that’s cumbersome/error-prone to do with a calculator (GUI or physical, doesn’t matter), or anything really, that doesn’t have complicated user interactions, something like BASIC would be a dang handy tool.

    Sure, a lot of people would reach for Python, and you can kind of make bash do these sorts of jobs, but when you still have muscle memory that could write it in BASIC, seems like it might still be useful.

    People love to hate on the line numbers, but they aren’t really central to BASIC. If you throw in a system to support labels, you could aim your GOTOs and GOSUBs at the labels and forget the line numbers. fwiw, the line-numbers were really only there in the old pre-1984 days as a cheasy hack to allow under-powered 8 bit CPUs to manage one single in-memory text file.

    But anyway, by the time GOTO or GOSUB appear, that’s beyond the fancy-calculator use case I have in mind. If a couple of FOR loops can’t handle it, it’s probably not that kind of job.

  8. Thank goodness Texas Instruments maintains a simple language on the graphing calculators of high schoolers worldwide. Quietly debugging TI-BASIC programs in calculus class has a special place in my heart.

  9. Non-multitasking OSs like embedded controller BASICs continue to have important role in secure apps such as air/wind speed, wind direction, altitude … reporting?

    These single task OSs remove any binaries not associated with the secure app as possible malware in compliance with NSA ~1982 requirements.

    Multitasking OSs security attempts doomed to failure?

  10. BASIC‘s biggest problem is its name.
    BASIC is a very good language, despite how Edsger Dijkstra’s comments about GOTO have been sensationalized.
    Dijkstra even had this to say about the kerfuffle he (inadvertently?) created–
    “…Please don’t fall into the trap of believing that I am terribly dogmatical about [the goto statement]. I have the uncomfortable feeling that others are making a religion out of it, as if the conceptual problems of programming could be solved by a single trick, by a simple form of coding discipline!”–Edsger Dijkstra

    1. Yep, because in the end it all boils down to a conditional jump/branch anyway.

      a=0
      foo:
      print a
      a=a+1
      if a < 10 then goto foo

      and

      for a=0 to 9
      print a
      next a

      will both compile to something like

      lda #0
      sta var_a
      – jsr Print
      inc var_a
      lda var_a
      cmp #9
      bne –

      1. For some strange reason, very many people do not realize that any and all “advanced” high-level-languages are built upon and run (when all is said and done) Assembly Language.
        ‘BASIC’s GOTO is nothing more than the high-level-language equivalent of the Assembly Language J(U)MP instruction–without which it would be impossible to write other than the very simplest of Assembly Language programs.
        Don’t want to use GOTO? Simple–don’t use it.
        Think you can only write Structured Programs by using a particular language? Wrong–you can write structured programs in any language simply by making use of structured control flow constructs, and data hiding.
        ————————————
        “The required techniques of effective reasoning are pretty formal, but as long as programming is done by people that don’t master them, the software crisis will remain with us and will be considered an incurable disease. And you know what incurable diseases do: they invite the quacks and charlatans in, who in this case take the form of Software Engineering gurus.”–Edsger W. Dijkstra

        “By understanding a machine-oriented language,‭ ‬the programmer will tend to use a much more efficient method‭; ‬it is much closer to reality.”–Donald Knuth

    1. What other noob friendly programming language would you have chosen at the end of the 70s when the home computer revolution did its first steps?

      Forth? Nope, not readable by the average person.
      Algol? Too strict.
      Fortran? Again too strict.

      BASIC was the right language at the right time to get Joe and Jane Average into the hobby, easy to understand, instant gratification and not too many arbitrary rules or usage of syntactic symbols.
      Everyone understands a line number and that the higher the number the later it happens in the program.
      Everyone with a bit of education can understand that A=2 is setting the variable A to 2.
      Also it is easy to understand that a string has to be in quotation marks and that a variable that holds a string needs a dollar sign at the end.
      And typing in your first real program is instant gratification.

      10 PRINT “HELLO!”
      20 INPUT “WHO ARE YOU?”,A$
      20 PRINT “HELLO “;A$

      What would such a little teaching program entail in Forth or one of the other popular ones from the 70s? Way more i presume. And no, modern versions that might have a shortcut or two weren’t there yet, you have to use their 70s incarnations.

      As said, you want to give the average person who hasn’t written a single line of code yet and might not even have a study in information technology a way to write a small program. And BASIC was that language that enabled that.

  11. Oh boy, it’s another “End of BASIC” post. I’ve been programming since probably 1980. That’s 44 years if you are counting and I’ve lost count of the number of times BASIC was supposedly ending.

    There was a time – a long time ago – when C was better than BASIC and I wrote a lot of code in C back then. But at that time we were all running 486 machines, C was compiled and BASIC was interpreted. And BASIC really could have gone away at that time. But now modern BASIC in Visual Studio is also compiled and what you code in today is really personal choice.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.