30 years later, QBasic is still the best

(5 minutes read)

My oldest son Noah turned 7 three months ago. If he could trade his family for a 2 hour session of playing minecraft, he would do it in a heartbeat. The other love of his life is Super Mario Maker, and it’s been a thrill to see him play the same game and levels that I played when I was his age. About 5 months ago, I left my family for my yearly pilgrimage of ludum dare: a game dev competition during which I lock myself away with friends, return to a state of primitive caveman, not sleep for 48h, and create a full game from scratch (play it at the end of this post!) As I proudly showed my revolutionary AAA title to my wife, Noah was naturally intrigued and I introduced him to the world of code, showing him how simple words (he had just learned how to read) produced an actual game. Since that very day, Noah has been asking me repeatedly to teach him how to make his own video games. And for the past 5 months, I have been looking for the holy grail of language/IDE for kids in the hope of turning that spark of interest into a memorable experience…

My quest has led me to endless forums, through which I have tried countless suggestions: SmallBasic, Pico-8, Smalltalk, Scratch, etc. I have even inquired of the Great Oracles of StackOverflow, to no avail. After 5 months, I ended up with a disappointing conclusion: nothing is even close to what I had back in another era. 30 years later, QBasic is still the best when it comes to discovering programming. 

“OMG please don’t teach him GOTOs!!”

10 PRINT “OH NO, WHAT ARE YOU DOING?!!!”
20 GOTO 10

Yes, QBasic is a terrible procedural language. It introduces one to concepts widely considered harmful, uses awkward syntax for implicit declarations, is not case sensitive, is non-zero-based, etc. the list goes on… When developing a skill, it is much better to acquire the right reflexes from the start rather than have to correct years of bad practice. Following this advice, I should have probably started off with the basics of the ruby language which I love. Yet, while most of those QBasic concepts are today generally considered as red flags by our peers, they each served a very specific purpose at the time: to keep the language simple and accessible, a notion that every other language has left behind in favor of flexibility, complexity and logic.

I installed QBasic on my son’s 11” HP Stream today, having to hack a DOSBox manual installation. He double clicked the icon on his desktop and in a split second, we were in the IDE, greeted with the introduction screen which brought back so many memories to my mind:

I then told Noah that there was a very sacred ritual, mandatory for anyone who enters the secret inner circle of programmers, to start off with a program that greets every other programmer out there. As I dictated the formula, he slowly searched for each key, carefully typing with his right finger the magic words: PRINT “hello world”

He pressed F5 and looked amazed as he saw his code being compiled into text rendered on his black screen. He smiled, gave me a high-five, and then scribbled down the code in his little notebook so that he could remember later.

We went on to a couple more commands: CLS, COLOR, PLAY, INPUT, and IF. There was nothing to explain: no complexity, no awkward operator, no abstract concepts, no documentation that needed to be read, no notion of objects/class/methods, no framework to install, no overwhelming menu/buttons in the IDE, no special keyword or parenthesis. It was code in its purest simplicity and form.

After less than an hour, he wrote his first program on his own – an interactive and incredibly subtle application which lets you know the computer’s feelings towards you as an individual and sensible human being:

…which he ran with utmost pride for his cousin and best friend Christian:

…after which he proceeded to easily explain him how it worked and what the code was doing!

And so it was that in a single hour, my 7 year old was able to not only write his first text game, but also to experience the fun and thrill that comes from creating, compiling and executing his own little program. Bonus points, it all fit on a single notebook page:

I was so glad that he was able to understand why I keep saying that I have the best job in the world. My only regret today was to realize that in more than 30 years, we have not been able to come up with something better for our kids: Qbasic has a limited set of simple keywords (the entire help fits on a single F1 screen and is packed with simple examples!), does not distract the coder with any visual artifacts, has a very confined and cosy dev environment, shows errors as early as possible, compiles and executes the code in a heartbeat with a single key, and is extremely straightforward.  We have built more robust and more complex languages/frameworks/IDEs (which are of course necessary for any real-life application), but we have never really made a simpler or more direct access to the thrill of programming than QBasic. Even running QBasic today has become dreadful to the novice that uses a modern Mac/PC/Linux machine, whereas it used to simply require inserting a 3,5” floppy in the A:\ disk drive…

Enough rant, today is all about the celebration of yet another person who discovered the excitement and beauty of programming!

Cheers!

(as promised, my AAA title for which I await EA’s call to purchase copyrights)

163 thoughts on “30 years later, QBasic is still the best

  1. Nicolas,

    this is a very nice post. Thanks.

    Nostalgia is good, even the coding one : ) … for so many reasons.

    Cheers.

    Francisco.

  2. Great write-up. Check out FreeBASIC. I recently wanted to quickly solve a problem with a BASIC with no learning. Also started with QBasic. FreeBASIC looked… from what vague memory recalls… just like it with me picking it up in usable way in 10-20 minutes. Wrote app in pseudo-code, mapped that one to one in BASIC in text editor, executed it with simple command in shell, and it ran correctly the first time. And fast!

    So, try it out. If I get similar feedback, I might start recommending it to educators just to get people started and hooked on the initial high.

  3. I agree with you that Qbasic is great. My feeling is that big business and arrogant programmers with big egos have ruined the beauty of programming. I started with basic on a commodore 64 and loved it. I now program PHP for the web and love it because it allows you to code how you want to code. Yet OOP was forced upon PHP and now it just isn’t as fun. I wish some would bring a new language that is fun and easy that goes beyond Basic and PHP.

    Great programs get built out of love and the fun of coding than out of code built by code Nazis.

    Anyway thank you for sharing the world of fun your son is having.

      • I dont think its OOP thats wrong its the Java way thats particularly horrible and is whats PHP seems to have adopted too.

    • 10/10 article – like many others I first learnt qb style coding, mixed with assembly for speed, and all manner of insane optimization (look up tables to avoid floating point math ahaha) oh how I miss thee. For me the only thing close in terms of time to implement is probably JavaScript which imo is also very easy to learn ..

  4. Wouldn’t using a subset of a scripting language like Python or Ruby provide a similar experience? Even though they have OO/functional designs, these aspects can be entirely ignored.

    Ruby in particular is designed to work well as an unstructured/procedural scripting language. And its keywords almost exactly match those of BASIC. if .. else, for .. in, while, until, begin .. end while, def, puts, gets. The only thing it’s missing is goto, but… ew.

    • I thought of that… But just printing and getting input from the user into a variable is really a lot more complex than what Basic offers, don’t you think?

      • It’s not so different in python, especially with the input function in python 3:


        name = input('what is your name? ')
        if name == 'noah':
        print('noah is the best')
        else:
        print('you are the worst')


        > python3 name.py
        what is your name? noah
        noah is the best

          • Much like your grudge against the comment engine pointed out, it would be harder to teach a young kid that spacing is significant… let alone that the type of spacing is also important.

          • “it would be harder to teach a young kid that spacing is significant… let alone that the type of spacing is also important.”

            ^ Not any harder than teaching a young kid that every line must have a line number at the beginning. I think you give young kids too little credit.

          • @ProgrammerDude
            Did you see a line number in the code? Didn’t think so. Also, QBasic supports (though doesn’t require) subroutines and functions, complex type declaration, etc… So, you can actually grow a pretty long way with it.

        • you’re right! somehow I was stuck with raw_input in my mind but it’s really cool to see the new input function in python 3.

        • Yeah install umpteen bazillion files and libraries, just in order to be able to get a Python prompt… that’s the ticket!

          Brilliant idea. No wonder our industry has turned into living hell.

          • He had to install a whole virtual machine to get this to work, Python’s a single command install on any given OS… and is typically built in to any not-stripped-down UNIX-like environment?

          • If you’re the unfortunate sort who chooses to use Windows as their primary development platform, then perhaps that’s true. Normal operating systems (as in, almost every other OS used in any significant capacity), all come with Python pre-installed, simply because it’s one of the most heavily used languages in existence… Windows is an island. More than that, it’s an island on which resides islanders who don’t play well with others. Python was not invented at Microsoft, so Microsoft doesn’t include it.

            To Microsoft’s credit though, they have progressively become less like island-like in recent times. Perhaps they’ll even have Python by default some day.

      • I wouldn’t say it’s more complicated at all, in fact it seems simpler to me… no dollar signs.

        name = input(“What is your name? “)

      • Ruby and Python are a lot more complicated than QBasic, but Lua isn’t. You’ve got strings, numbers, functions, and tables; that’s it. And if you start with the Love2D game engine, you’ve got all the graphics capabilities of QBasic in a much better-designed language without sacrificing any of the immediacy and simplicity.

        I’ve had great luck helping my kids (6 and 8) write simple games in Lua, though granted I’m doing a fair bit of back-seat driving, and they’ve already been doing Snap for years. https://gitlab.com/technomancy/maze-bomb/blob/master/main.lua

        • And I’d just like to add that I fully agree with the sentiment of not worrying about code being the cleanest or doing things “the right way”–at this point enthusiasm is much more important. And kids will only really understand why the “right way” is better once they spend time trying to maintain something that’s messy; that way the lesson really means something to them.

        • You’re confusing simplicity and elegance of the inner workings of the language and virtual machine with the simplicity of programming in it. Something MOST programmers these days seem to have forgotten.

      • I grew up in the early 80s’s writing BASIC and lament that most computers do not come with a built-in, easily accessible development environment like BASIC.

        I teach middle school kids to code in an after-school robotics and computer science club. This year I switched to teaching the kids Python and it worked exceptionally well! Python is a modern, yet simple language. With add-ons such as pygame kids can easily write simple games with only a small amount of code.

        The whitespace issue with Python (which admittedly I don’t like either) turned out to not be that bad and with a some practice kids got used to it.

        • This times one hundred.

          Man, I wish I had something like BASIC in my early XP days, when I was just starting out with computers seriously (at the age of 8 or so (-: ). Anything. There was probably a few programs which were scriptable, but it probably wouldn’t occur to me I could be actually the one _creating_ these programs. The funny thing is, I never actually stopped to think about how all these programs I installed came to be, that somebody must have created them, right?
          I actually had a GUI drag-and-drop game designer tool The Games Factory (wow that name takes me back!), but in hindsight I see I probably didn’t have much understanding of what I was doing then, other of than simple animation and moving objects with keyboard and mouse.

          In a sense, the (European/US) Commodore/Atari/ZX era kids had it much easier to get into programming – it was a very prominent part of computing at the time from what I can tell, with their computers’ built-in BASIC interpreters. I know this mainly based on the Internet computing history pages and people’s recollections on comment threads, as I wasn’t there at the right time to witness it (that, and the fact that my country’s computer availability would’ve presumably been scarce as it was communist until a couple of years before my birth). But then, with today’s Internet’s ability to exploit such vast repositories of human knowledge as StackOverflow, Google and YouTube, it’s also kind-of easy to get started with programming.

          I wish the new generation all the best with their journey of learning programming (greetings if any one of you is reading this post).

          • Thanks for your comment. It’s true that there are a lot more resources today for those who want to start coding. However, I think that there was something about the confinement of the early days. With no internet and limited access to games (aka trading floppy-disks with friends), the only thing left to do was to create your own games with whatever tool was available. And it required persistence as there was nothing to switch your attention to. I think we were very fortunate to have tangible limits to what we had access to, as it forced us to rely on creativity to build new things to play with.

          • I started out with Q Basic on a Color 2 From Radio Shack. Back in the late 70’s or early 80′ writing programs for myself and tried games and loved it. Then I challenged my girlfriends son (13 yr. old) , who had a friend with a Mac 64 to write code to run on a Coco2 and Mac64 and I would do the same. We succeeded with our quest and went to more challenging tasks. Today both “kids” are still doing the same stuff with other languages and loving it.
            So I have to agree Q basic is a great way to introduce kids to programming. Great write up, Nicolas.

        • TBH it gets a lot more complicated as soon as we want to get a bit more. Play some music? Draw a shape? those are one-liners in native QBasic. I love pygame and I think it’ll make a fine choice a couple of years down the road if his interest grows into a hobby.

        • NAME
          gets – get a string from standard input (DEPRECATED)

          DESCRIPTION
          Never use this function.

          BUGS
          Never use gets(). Because it is impossible to tell without knowing the
          data in advance how many characters gets() will read, and because
          gets() will continue to store characters past the end of the buffer, it
          is extremely dangerous to use. It has been used to break computer
          security. Use fgets() instead.

    • QBASIC is actually great for this. The only other languages I know of that are comparable in terms of directness and simplicity are Tcl and Lua. Tcl is one of the great unappreciated languages, and is still the backbone in much software testing and automation and is great for quick and dirty code to stick a bunch of stuff together. Python has gotten better at that over the years, but I think Tcl is still better in many cases. Sadly, the Tk graphics haven’t kept up with the times.

      For game development, have a look at Corona and Lua. Lua is another beautifully lightweight and direct language, but it’s seriously fast (faster than Python and approaching C in some benchmarks!), is the backbone infrastructure of many commercial games, and the Corona environment makes it really easy to build games with just a few lines of code, and then target them to any of the major modern platforms. (For instance, creating a few shapes, and then attaching them to a physics model to let them move and bounce correctly really is only a few lines of code – check out the demos…) Not only that, you can also do really serious web infrastructure and server stuff using the Lua-based Tarantool (multi-master replication, anyone?), so it’s something you can learn and grow with from a first playing-around experience to truly web-scale application systems. (It is also 1-indexed, which I consider to be a feature, not a bug. No one but programmers starts counting by assigning zero to the first thing being counted…)

      Starting out, you can do more for less work with Lua than anything else I know of. It’s not mainstream yet, but it’s way too good (and getting better too quickly) for that not to change soon.

      P.S.: I wouldn’t worry about picking up bad habits, since the entire idea of procedural code is pretty much lost on today’s programmers who can’t do a thing without a bunch of heavyweight objects anyway. (Seriously, I no longer code, but I find I am able to fairly often make suggestions about another way to do things that would apparently never have occurred to someone who’s never written a FORTRAN or BASIC program, or hacked together bunches of shell scripts with the UNIX text processing tools. I don’t recommend awk as a language to learn on – it is certainly, um, different, but it sure does make a lot of otherwise hard things way easier than anything else I’ve ever encountered…)

  5. I wrote roughly that exact same program (the “you are the worst” one) about 23 years ago as a child learning how to program.

    Awesome post; brought back so many memories.

  6. I’d like to respectfully put my side project forward as an improvement that learns from the lessons of QBasic: http://akkartik.name/post/mu. You get line-by-line programming without having to worry about intricate syntax, but you also get real procedure calls. You get gotos, but you can mostly use a simple form of structured programming that is just as easy to learn.

    • This looks pretty cool, and it has a nice doc on your github repo. I’ll check it out, thanks!

    • Mu seems really cool. What I find fascinating about it is not the final result but the process you got there. You seem to be using your wart literate guy. Reading your blog you seem inspired by Christopher Alexander. Me too! I’m a former student of Cope and was introduced to Alexander’s work through him.

      I love that you decided to take it to heart and you can literally see the piecemeal growth of Mu via your literate system. One important part of Alexander’s method, especially after reading Theory of Centers, is backtracking. You add a little, see if the whole feels better and go on. Or you undo and try something else.

      The undo and try something else, how are you planning on showing that? Seems as simple as deleting the latest file.

      • Thanks for the kind words, Maxim. I’m actually not familiar with Theory of Centers, so you have the advantage on me there. My favorite work of Christopher Alexander’s is actually “Notes on the Synthesis of Form”. I wasn’t smart enough to understand “A Pattern Language”, and I’m skeptical that there’s much mileage to be had in trying to apply that idea to software. But Notes is awesome. Extremely concrete and directly applicable. Everyone should read it. (And yes, I know it’s less fashionable than his other books, particularly since Richard Gabriel called it ‘juvenalia’.)

        But I’d love to discuss this further offline. Perhaps I can benefit from the Theory of Centers.

  7. There is a website, codingames.com, that offers puzzles and AI challenges related to game type puzzles and problems. I stumbled on it the other day and have lots of fun clearing out all the easy puzzles and many of the medium ones. I programmed QBasic and GWBasic as a kid, but am not a programmer, and I found these exercises fun and they really made me think. I am sure for real programmers, these might be childs play, but I would definitely recommend showing this to any kids or young adults interested in coding. Some people even get hired by companies like Nintendo for solving their challenges. Where was this when I was a kid?

  8. Nice post.
    I just looked up to notice a still shrinkwrapped copy of GW Basic at the end of the bookshelf in the office! But plenty of opened and well used copies of Basic over the years.

  9. I love that you shared this story. I identify closely with it because this is exactly how I started programming – by learning and playing with QBasic, and writing things down in a notebook. My curiosity led me to read the code for the Gorilla and Snake games that are written in QBasic to see what *could be done*. I’m sure Noah will be an excellent video game designer!

  10. Oh wow. I’m 31 and QBasic was my first language — I spent entirely too much time making terrible text-based roleplaying games with it as a kid.

  11. Noah is adorable! I love his meticulous notes. He’s on the right track. I couldn’t get my kids interested in programming.

  12. hi nicolas,

    thank you.

    did you have a copy of qbasic or did you download from the net ? DosBox — did you have to do any particular configuration or was it plain loading qbasic ?

    • Hi Anjan!
      I used QuickBasic 4.5 and downloaded it online. I then placed a shortcut on the desktop which ran a standard DosBOX with the argument to launch QB.exe directly.

  13. I learned to program when I was a kid with QBasic. I agree, nothing is as simple today.

    I have a 6 year old and he is loving minecraft too. I fully expect him to get interested in programming.

    When he was 3 years old, I felt a sense of distress knowing nothing is as simple qbasic today for him to learn.

    His birth and various social events inspired me to create something interesting. I wrote Fire★ which allows you to write p2p applications in Lua, including little games.

    When I wrote my qbasic programs I would share them with my friend on floppy disks. With Fire★ you can be connected with your friend on their computer and just share the game seamlessly, including the code. Even pair program.

    It isn’t as simple as qbasic, and it isn’t designed just for children. However, it might be the simplest way to learn how to write networked software. I hope to have my child test it one day.

    • This looks really cool! I love Lua and I agree it is a great language to start with. I’ll give it a spin!

  14. Best wishes for Noah!

    I found this link on Hacker News, maybe it’ll be useful 🙂

    “QB64 is a modern version of the Basic programming language that allows programs created using Quick Basic 4.5 or Qbasic to run on Windows XP, Vista, 7, 8, 8.1, Linux and Mac OSX. It will work on 32 or 64 bit machines and has many new features such as stereo sound, improved graphics and TCP/IP internet capabilities. ”

    http://www.qb64.net/

  15. Fantastic read – and so happy that your kid has the opportunity to learn code as such a young age. Will definitely serve him well in life.

    I myself also learned programming via Qbasic – and this was “only” ~13 years ago. Qbasic is simple enough to be just fun to mess around with and see “I made this”, no need to care about best practices if you’re young and/or don’t even know if programming is something you want to persuade. Keep up the good work!

    • When I open the page I get “Application Error” and nothing else on the page. Is it me?

  16. thanks for sharing this – my dad bought a copy of turbo basic compiler for me 25 years ago. I asked for turbo pascal… at least he got the turbo right!

  17. I agree that QBasic is very easy to pick up. I would also like to direct your attention to the Kano implementation of the Raspberry Pi. This is very directed at that age group and allows kids to understand what makes up a computer and then what it does and even has a programming environment for that age with Minecraft and Python (the snake) games to play and modify.

  18. As another commenter noted, check out QB64! It maintains 99% compatibility with any QBasic program (really, the not supported stuff is super-obscure), and runs on modern operating systems without the hassle of DosBox or emulation. It also implements dozens of new commands allowing much more flexibility (such as full-color screen modes). It even keeps the old-school white-on-blue IDE

  19. Try QB64 … it’s a free version, with the same blue UI (and should be compatible), but all sorts extras have been added + it works on modern OS’s too.

  20. Nice article! Though I take issue with the fact you didn’t try out antirez’ excellent LOAD81 before you resorted to that abomination that is QBasic:

    http://github.com/antirez/load81

    All the color of QBasic, none of the GOTO’s. 🙂 Plus: Lua.

  21. Just curious, why didn’t you like smallbasic? My son did ok with this, and it seems just as simple as qbasic (if not simpler), except a lot more helpful. Also easy to get started on graphics!

    • Maybe we’ll look into this down the road… Just seemed that TextWindow.WriteLine (“Hello world”) was already too complex to simply print out some text.

      • I guess TextWindow seems a bit more complicated

        I started out with doing doing a one line program :-

        Turtle.Move(100)

        then

        Turtle.Move(100)
        Turtle.TurnRight()
        Turtle.Move(100)

        then

        Turtle.Move(100)
        Turtle.TurnRight()
        Turtle.Move(100)
        Turtle.TurnRight()
        Turtle.Move(100)
        Turtle.TurnRight()
        Turtle.Move(100)
        Turtle.TurnRight()

        Very quickly he got used to the ObjectSomething way of getting to the toys. Also the documentation on the side is pretty good to get started with most of the toys.

        Only thing I’d of liked ( and they consciously made the choice not to do it) is the concept of a function. Because once their programs get big enough ( and boy, my basic programs from when I was a kid were big convoluted messes) teaching the idea of a function is kind of a gateway to the bigger world of programming.

      • Sure, you need one extra word, but in the same hour you could have gave him, with very little extra effort, a brief introduction to object oriented programming.
        Kids can totally deal with an extra word and a comma.
        Also, the autocomplete feature in smallbasic is great for a slow typist, such as a kid, and is also the help system of the IDE.

        I totally recommend putting aside your selfish melancholy or whatever and show smallbasic to your kid!

        PS:
        My QBasic “bomber” and “fighter” games that I wrote as a kid were the best plane games in the history of games with planes, obviously. B-)

  22. The lesson here is that it’s less about the specific fitness of a particular language, and more about just getting your hands on something and rolling with it. Yeah, a language with line numbers will never be optimal, but that’s beside the point.

    The real value of QBASIC here is that Dad knows it and can immediately smooth over any roadblocks that get in the way of that initial fun and discovery.

  23. Have you tried LOGO? When I was a kid, I learned it without knowing it was programming. I just played it as a game.
    Years later when I was actually learning coding seriously, I realized why is it so similar to that turtle drawing game?!

    http://www.calormen.com/jslogo/

    • This. MSWLogo launched my programming career back when I was a kid and just thought it was cool I could make it draw lines

  24. Never thought I would see that blue QBasic screen again. Good times. I remember finding QBasic on my own as a kid and messing around with it making games. We had some computers in our library at high school and they had QBasic on them. They also had a ‘no games’ policy, so I got told off for playing a game by one of the librarians… except I didn’t care because I explained to her how I wasn’t playing a game I was testing a game that I was writing. Haha.

    I wish I had some guidance back in the day though. I distinctly remember arrays being too abstract for me to understand what they were, how to use them etc. Someone to guide me on the more technical aspects would have been wonderful.

    I think you made an excellent choice choosing QBasic for its simplicity. Glad to see your son taking such a keen interest in programming. We definitely do have the best job! Hope to teach my son someday too. And I’m inspired to introduce him to QBasic when it’s time!

  25. “Qbasic has a limited set of simple keywords (the entire help fits on a single F1 screen and is packed with simple examples!), does not distract the coder with any visual artifacts, has a very confined and cosy dev environment, shows errors as early as possible, compiles and executes the code in a heartbeat with a single key, and is extremely straightforward.”

    I’ve been a programmer for decades, and while I’ve never used QBasic myself, I still find these to be valuable qualities for anyone, not just for kids.

    Sadly, while there are some professional-grade programming environments that have most of these qualities today, they don’t seem to be very popular, and companies don’t tend to use them for serious projects. Professionals tend towards languages with big complex grammars, for some reason, even if they’re not any more powerful.

    But those of us who know where to find simple elegant programming languages do really love them!

  26. Nice article. I wrote my first program in QBasic too!! I added two numbers and I thought that was the greatest thing ever.

  27. I learned to program on old paper terminal. When I started on PDP-11’s, we had green bar or magnet paper that scrolled as you typed. To make a program:

    $ NEW
    $ 10 input “What is your name?”; A
    $ 20 IF A “dave” THEN 50
    $ 30 PRINT “You’re awesome!!!”
    $ 40 GOTO 60
    $ 50 PRINT “You’re okay.”
    $ 60 END
    $ SAVE myprog
    Saved.

    We didn’t have code blocks at all. You had to use GOTO and GOSUB to separate code.

  28. QBasic is not the best. “Noah is the best!” 😉

    I read your article in the bus and I was wondering if you had thought about Python. I just tried re-creating the little program Noah wrote and it’s quite simple using IDLE (which takes care of the indentation for you and can run the script with the F5 shortcut as well).

    In addition, Python has nice little libraries for teaching children, such as the turtle module that allows to get nice graphical output, which is quite stimulating for children I think 🙂

    Thanks for your article and all the best to Noah in his video game creation journey!

  29. You should have a look at the old 1980s Usborne books, which they have archived in PDF form online. They were written for old microcomputers like the Commodores, BBC Micro, Apple II and ZX Spectrum, but should be applicable to QBASIC. I particularly recommend Write Your Own Adventure Programs For Your Microcomputer. It has a good step-by-step walkthrough from concept to planning the structure of a text based adventure.

    http://www.usborne.com/catalogue/feature-page/computer-and-coding-books.aspx

  30. Aah, I still remember back in third grade – “what? you can put whatever you want after print?”. And then I found a BASIC book in the attic and discovered the “Sound” instruction. Needless to say , after a week or so I was forbidden to use it.

  31. Thankyou, this brought at tear to my eye.
    This is just how I started out, just enough to want more.
    Good luck, awesome game Noah.

  32. Cool! I am also for teaching kids BASIC. You could also try emulators for some of the 8bit computers which all have BASIC. I can recommend Amstrad CPC and MSX, very nice command set, its pretty easy to draw and make simple games!

    PD: FreeBasic is also very cool on modern PCs.

  33. As to the purists, as Monty Python would say, “Fornicate The Penguin!!!”

    This is a First Reader situation. You don’t complicate thecstorybwith advanced concerns like Predicate Adjective bs Predicate Nominative… This is
    See Jack run.
    See Spot run.
    See Jane run.
    Run, Spot, run!!

    QB is perfect for such…

  34. Try Processing, http://processing.org

    “Processing is a flexible software sketchbook and a language for learning how to code within the context of the visual arts.”

    It’s really Java, but in an environment that makes writing small visual programs very simple.

    Or, the logical move from QB would be Borland’s Turbo Pascal. 🙂

  35. My son is just shy of 6 months, I wouldn’t have read this the same way half a year ago. Thank you for this very inspiring read 🙂 (your game looks cool too, just about to play it)

  36. I’ve seen people using QBasic in coding live streams on Twitch and Livecoding.tv. It is, surely, a good way to learn coding.

  37. “is not case sensitive, is non-zero-based” are between the limitations of C presented as good programming.
    case sensitive is simpler for the compiler, but declaring 2 variables with the same name with different case is bad programming, especially if you want to allow converting code to another language.

  38. Nostalgia 🙂
    I also started with QBasic when I was 8 and also started with a text game!

    Noah has now a tool to create his ideas! Awesome, and welcome to the club!

    10 PRINT “HELLO NOAH!”
    f5

  39. Loved the post. I remember my first experiences with BASIC on sinclair 2048 and assembly after that. However I must disagree with you. We did create some languages good for young ones to start (I also had this as a must for any geek out there). Lego Mindstorms has a great system to introduce programming technics and really watching it doing something 🙂 It shows the concepts without going too deep on commands, wich I think is great.

  40. A group in England has children -elementary and secondary – learning Python using the Raspberry Pi.

  41. This post got to me on two levels…

    First, I remember when I learned QBasic back in the day of doing my A Level computing course in the late 90’s. Why I was being taught such an old language I don’t know, but I distinctly remember the obligatory “Hello World” program, quickly following my inputting your name and printing to screen, and then feeling amazed that I “got it”. It eventually lead to me building Tic Tac Toe in QBasic, then other languages, and today some 15 years later I am now building web systems connected via queues, services and databases, a far cry from the days of putting coloured text to screen!

    Secondly, as a father myself I’m hoping my kids will also one day ask about what I do and how everything works. Reading about Noah’s reactions and learning process was great and I hope he keeps it up.

  42. Thanks for this article, BASIC and after QBasic was my first language programming,
    I’m glad when I remember these days!

  43. I started at age 6 with a single ~gasp~ 360kb floppy disk! containing the entire operating system AND BasicA. (1981 was such a fun time!)

  44. Nice article. Back in the day I used to use QBasic programming as a ‘proof of concept’ before coding he final solutoin in assembly.

    I was going to give my young son a ZX-Spectrum for the same reasons you describe here. Simple instruction set, and simple to get up and running with some rewarding results that may just get him interested.

    After all, it’s the ultimate toy. It does whatever your imagination tells it to do!!

  45. I use PHP and all the other default languages for a web developer but for pure pleasure of coding I always go back to PureBasic. ( works on Linux, PC and MAC )

    Thanks for the Basic idea. I will teach my 9 year old daughter using PureBasic

  46. Don’t stop with just QBasic for your son. Move to the next level PowerBasic. I started programming in the early 1980’s using GWBasic, Commodore Basic, etc. Then started coding real business programs in GWBasic, then QBasic, then Microsoft Quick Basic and then PDS 7.1 (Professional Basic). In the Windows world I found the transition difficult at first and and tried a number of Basic’s finally falling back to Visual Basic 1.0.

    In time I moved beyond Visual Basic, to PowerBasic (in the DOS days was TurboBasic), learned the WIN32 API and now have gone far beyond anything I did in DOS Basic’s. PowerBasic has a console compiler which would be like QBasic on steriods, but with full access to the WIN32 API, is a true 32 bit compiler and is fast, fast, fast. One can move on to the PowerBasic Windows compiler and either use its simple Dynamic Dialogs command set or code using the WIN32 directly if prefered. PowerBasic has the raw power of C, with the ease of QBasic.

  47. First of all, I also started with QBasic, using my father old notebooks. But now that I’m more into this thing, I cannot understand why people don’t just teach JavaScript as first programming language. JavaScript is ubiquitous and can now be used to code apps, not only client side code of web pages, so It seems like a big win.

  48. That screen brings back many happy memories 🙂
    I would love to GOTO 10 again.
    Well done Noah.

  49. Qbasic is a structured language and no line numbers are necessary – that’s just for backward compatibility with gwbasic and older variants which had line editors

  50. Good memories… I think my programming skills got stuck since QBasic.

    Thanks for the writeup!

  51. In the early 90s Prodigy had the best QBasic community, where we even invented compression techniques to share code to each other and fulfill single-post length requirements on the message boards. It was glorious. Thanks for taking me back.

    view-source:http://files.mhulme.com/files/qbasic/prodraw2.bas

    I don’t know if that program there will run, but when I was 12(?) it did, and it was better than Paint. 🙂 I hope Noah can eventually use something in it, which would be the ultimate reward.

  52. Never thought I would see that blue QBasic screen again. Good times. I remember finding QBasic on my own as a kid and messing around with it making games. We had some computers in our library at high school and they had QBasic on them. They also had a ‘no games’ policy, so I got told off for playing a game by one of the librarians… except I didn’t care because I explained to her how I wasn’t playing a game I was testing a game that I was writing. Haha.

    I wish I had some guidance back in the day though. I distinctly remember arrays being too abstract for me to understand what they were, how to use them etc. Someone to guide me on the more technical aspects would have been wonderful.

    I think you made an excellent choice choosing QBasic for its simplicity. Glad to see your son taking such a keen interest in programming. We definitely do have the best job! Hope to teach my son someday too. And I’m inspired to introduce him to QBasic when it’s time!

  53. Hi Nicolas, I thank you very much for refreshing my early sweet memories during my school days when the very first programming language I ever learnt was QBASIC. I also very clearly remember what the acronym sttod for – Quick Beginners’ All Purpose Symbolic Instruction Code (my then computer teacher had made the full class memorize it, hehe). Those days were really awesome and I used to marvel how the computer could solve the arithmetic and print stuff so fast and play some tunes and the most important part was drawing lines and circles. Wow, man! I really missed those days. I was, I think, in class 7 in school back then. Later for I learnt C, C++ and finally Java but did not find the same amount of fun I had that time.

    I am a software engineer now working in an MNC. I use Java, PL/SQL (for programming and maintenance)and Selenium automation (in testing) alongwith UNIX for shell scripting. But really man, I really cherish those days and you have literally brought tears into my eyes. It is a very great decision to have your son recognize QBASIC first. I shall do it the same to my son or daughter if they consent. Are you on Facebook dear friend?

  54. “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.” Dijktra

  55. Nice post Nico. Some many memories from QBasic…

    However, regarding Noah, children from his age or anybody starting to code, I think that what they need to acquire first is the concept of computational thinking. Once one gets that, he can pick up any coding language because he understands that differences between languages are mainly syntactic.

    I’ve seen so many adults starting to code at uni. They did their best to pick up the language in itself but because they didn’t have a ‘computational thinking mind’ they were completely lost when they were asked to code something.

    That’s why I find apps such as Scratch very good for children because it’s a nice interface between cartoons/playing and hard coding. It introduces nicely conditionals and loops.

    And then, we all have our favorite coding language, mine being FORTRAN 77 :D, so he’ll find out his when the time comes 🙂

    ++

    • Haha hey Joseph good to hear from you man! 🙂
      We tried Scratch but he didn’t like it so much… I’m wondering if maybe it’s because the IDE is so visual that the actual visual compiled result does not pop out and has that fast wow feedback? Not sure… He’s still super young and I don’t want to push him any direction so we’re rolling with the wind as we speak, trying out different things… QBasic seems to be the language that has sparked the most interest for now so he’s using that… Haven’t showed him Fortran yet, waiting for him to do something wrong, I’ll have a punition ready 🙂

  56. If you can get your hands on the older Dark Basic program, then your son might enjoy that. It has similar experience as the Qbasic, but it adds some pretty easy to use built in stuff aimed toward making games. It’s been a long time since I used it, and they don’t see the offer the legacy Darkbasic for sale anymore (just the pro version and then some other stuff)

    It might be worth tracking down and checking out.

  57. I loved this post 🙂
    My son just turned 7 and I can’t wait for him to start writing code. Currently he helps QA my in-development iOS game, and he builds amazing stuff in Disney Infinity.

  58. Tell, me when your game gets released on xbox 1.
    JK
    Seriously though, it was fun, good job. I tried GGJ once, we never finished our game, but the experience was amazing.

  59. Great post, thanks very much. Brought back memories of a friend of mine showing me how to code in qbasic when we were kids. I am coming to programming relatively late again now and really enjoying it. Coming from a sysadmin background in a Windows shop, powershell got me into it and now I am learning C#. Definitely want to teach my kids programming too even just to get them into logical thinking.

  60. Wow, Awesome stuff, I loved QBasic back in the day.

    For anyone who loved coding in Basic there is a modern day platform that ties in nicely with the Maker and STEM movement around these days called the Micromite. The platform uses a rewrite of GWBasic (Precursor to QBasic) called MMBasic, and you also get to build the “PC” itself. Quite a bit of fun. (New version out too now).

    Allows reading of external sensors and control of external devices like the Arduino or PI but all done with fairly simple BASIC code.

  61. This reminds me of how I started with QB back in the day. Back then there were so many sites devoted to teaching the language and unfortunately most have disappeared. It’s truly a perfect learning language for people interesting in getting into programming. My old Qbasic (and other languages) site is still online after all these years: http://eriks.servehttp.com

  62. Actually, case sensitivity in a programming language is a fault.

    There is absolutely no need for it, and its existence frequently leads to problems.

    Thanks,
    Jeff Bowman
    Fairbanks, Alaska

  63. Hi! Nowadays i use Quick Basic. It´s a pleasure!! It has many libraries that you can use in your applications, written in other languages like C or Assembler.
    I made programs with buttons and mouse, like Windows!!
    You only need to have a good imagination and time!
    It´s fantantic to make module programming. I usually use a 386SX with only 4 megas of ram with DOS 6.22 to run my programs.
    Good to meet crazy people like me!!

  64. You know, I’ve probably read this blog posting three or four times since it was first posted, and I have to say that the author is spot on.

    Yeah, I too know that the language isn’t perfect, and it does teach a few “bad habits”. I know this because my first language was BASIC, too – specifically a version of Microsoft BASIC installed in the ROM of the TRS-80 Color Computer.

    I started with that machine when I was 11 years old, back in 1984. I was in the 5th grade, and it opened up a new world for me. I still have memories of my dad and I typing in the first bit of code in the tutorial manual that came with the computer, and instead of hitting the “enter” key (aka return) to move to the next line, we “spaced” over to the end and down to the next line! We ran it – and got back “SN ERROR?” – the infamous “Syntax Error”. My first error (well, that’s not exactly true – my first “computer” was arguably the simple controller of the Milton Bradley Big Trak – and I know I had errors in those programs!).

    Ultimately, that all led to where I am today, employed as a software engineer for the last 25 years, and having gone thru a ton of different languages in that time. From Pick BASIC (a “business BASIC” still in use!), to assembler, to C/C++, Java, Python, Perl, PHP, dabbling in Lisp, Javascript…and QB.

    Today, I still have a soft spot in my heart for BASIC; my favorite form of it – and what I think is probably the best implementation – is QB64. I have two other compiler/interpreters on my phone. Yesterday I coded up a simple Truchet tile maze generator for the Color Computer, using an online javascript-based emulator for the development! BASIC will always be close and dear to me; part of my career involved the development and maintenance of a largish Visual Basic system for an employer – that they still use to this day (almost 15 years have passed since I left them, but they have yet to find a suitable replacement).

    I often wonder why – in this era of talk about “teaching everyone how to code” – why we don’t teach BASIC to people. It’s almost the perfect language for this. If we really wanted to round things out, we’d teach LOGO as well.

    There are a lot of people out there who could be excellent programmers, people who would love to program, and don’t know it. Simply because for a beginner, they don’t even know much of where or how to start. As the author of this blog post noted, even getting QBASIC running again is an exercise for the beginner – nevermind the “experts”! You have to basically know how to install and set up an emulator of an operating system, or you have to set up a virtual machine, or dig out an old computer and make that run something, or…

    No longer (well – there are a few examples) can one just buy a computer, turn it on, and be greeted with a prompt begging you to input some code to run. I do tend to wonder though if such a computer wouldn’t find some audience. I know of a few examples like this (one which is arguably as close as possible to that retro style using current components is the Nuts and Volts Amigo computer – http://www.nutsvolts.com/magazine/article/december2015_Weston).

    I’ve long thought there is something being missed in trying to educate people about computer programming, and we continue to try “new ideas” when the solution to the problem was solved a long time ago back in the 1960s. Instead, we try to teach systems to beginners that are much more abstract than what is needed to learn the – ahem – basics of software programming, and this can cause confusion and disinterest in continuing. If we were smart, we’d realize that maybe our forebears knew something we didn’t, and work with their ideas and knowledge, instead of against them.

  65. I know this thread is old, but man …. QB4.5! That brings me back. I taught myself on TI-Basic starting in 1981 when I was 5, typing long strings of hex code directly in order to use any kind of graphics. Quickly transitioned to QBasic and with the rapidly advancing home computer technology and the super user-friendly IDE I was creating all kinds of programs over the next 10 years, including Fantasy AI game engines, full featured eBBS platforms, graphics processors, side scrolling video games, etc. etc. I even used QBasic professionally in 1999 to automate machines in a factory, building a GUI on a 386 that plugged into a 6 axis USB stepper motor controller. Unfortunately, I have a contrarian streak and when a VC told me in 2000 that they would give any kid who knew how to code $1M if they had a business, I left programming behind to go to business school since I didn’t feel like learning C++. Now I’m slowly realizing that I should have never stopped coding, so I’m re-teaching myself, and see that modern languages are definitely more efficient, but sorely lacking in an intuitive IDE like QB4.5 and have a lot of syntax requirements which likely have negligible performance gain.

    I actually found this while looking for a Python IDE that is better than Canopy, but I’m glad I found it, as I have also been debating teaching my kids (7&9) QBasic or letting them learn Python with me. They play around in Scratch, but I find it hides the functioning of the program behind layers of the GUI and all that visual drag and drop makes it harder to get to the core of what programming is about. I have seen some others, like Glitch, that I was going to try out, but now I’m psyched to install QB4.5.

  66. I don’t know how old this is, or if the author still reads the comments, but a modern version is called QB64 (there even is a Twitter @QBZ64team for it as well) which does not need an ugly DOSBox setup, but does run on all three major desktop OSes.

    Psst. The homepage is here: https://www.qb64.org/

  67. I would not doubt ANY of you disbelieving what I’m about to say. It sounds totally improbable.

    I discovered Basic in 197… 7 or 8. We had a Wang 2200 computer at work that was used to compute monthly payments and to print bank contracts. The program was written in Wang’s version of Basic. The fellow who’s job it was at the bank to use it had a heart attack and passed away and my boss jammed me into that empty office and said I’d better learn quickly how to use the thing because my continued employment depended on it.

    The program was super easy to use and learn and within a couple days I became comfortable with it. THEN it happened… the thing went nuts. It began printing out all of it’s many thousands of lines of uncompiled plain Basic code on its 14″ wide big metal Wang daisy-wheel printer. I killed the power but it started over every time I turned it back on. We called the software company who sold us the hardware and software but they said it’d be several days before they could get there from another state.

    Curious… I decided to see what it was printing! I mounted a big box of 14″-wide pin-fed paper in the printer… turned it on again, and the thing printed for nearly 12 HOURS. Had to pause printing to change to a new RIBBON fire or six times !!

    I carried that huge stack of fan-folded paper around for months and studied it… IF, THEN, ELSE… uncompiled NOT COPYRIGHTED plain Basic… Eventually I realized – hey – not only can I understand this stuff… I could do 80 or 90% of the the same stuff with about one forth as much code!! How cool was that.

    So yeah, “I went to school” on what that bizarre ton of code taught me. Over the years some said I “stole” that code. Nope. Never used a single line of it. However it was a great teacher (professor!) because it TAUGHT me how to write code – just like a French book teaches French. You wouldn’t say you STOLE the French language – just because you learned French from reading the instructional French guide. I even phoned the software company and told them the program was printed and they offered to answer software questions! Gotta remember, folks, this happened in 1978… almost 40 years ago – before most of you were even BORN. Copyright law for software didn’t even EXIST 40 years ago because it’d just been INVENTED.

    Months passed while I figured out how to build my own program and shortly I actually wrote my own finance program from scratch which ran way faster because it was tiny compared to the company who supplied the original bank software. Wang computers only had 4k of ram so files had to be chained together… and the smaller the package – the faster the execution.

    Another bank heard about me and offered to PAY ME (woo hoo) to set up their Wang machine… and then another bank… and then another. Then car dealers and motorcycle and boat dealerships called. They were purchasing the Wang computer JUST BECAUSE it was the one I knew how to write code for… all of this happening just before IBM introduced the PC and the AT. It occurred to me that I seemed to be looking at the word, “POOR”, from the other side for once in my life (banks still to this day don’t pay much!).

    I incorporated my little company in December 1984 and today, in December 2017, it’s our 33rd year in business. And I still use that same 16-bit GW Basic (compiled, thank you) software in all our customer’s businesses.

    As the years rolled by I learned how to design Adobe PDF’s and how to populate them with customer data from my little program using “shell” and daughter operations to call FDF’s… such that NOW virtually all the many legal documents (sometimes as many as 15 or 16 individual documents) that have to be printed and signed by customers at the time a loan is closed are all true originals that print out back-to-back usually by a super fast high-end laser up to 80 pages a minute.

    I agree with all of you who say I should have changed to VB and DOT NET etc., etc., and I gotta tell ya… I did try. Heck – I’m STILL trying. But I hit the magic number on my last birthday – 70 – and I’m just not up for it. I’m maintaining a dwindling book of business thanks to natural attrition… down from over 80 monthly paying customers back in 2000 to just 10 or 11 now… but that’s okay. I’ll let you kids figure out to fly every new iteration and machination of Basic that continues to come down the pike.

    But who EVER – in their wildest DREAM – would have thought that good old GW Basic… compiled using QB3 (not 4, mind you)… would have a true shelf life of THIRTY THREE YEARS.

    Doubt me if you will. I get it. It’s human nature. But every word true. All I can tell you guys is dream on. Sometimes it works.

    • Wow that was such an awesome read Allen, thanks!! 🙂 I know that there’s still a lot of Cobol code currently being used in a lot of areas we don’t expect. I wonder how many other Basic gems like yours are still up and running after all those years.

  68. Hello Nicolas,
    I have been adicted to coding since I am 10 because of QBasic, I had almost tears in my eyes when I read your article since I thought that for once someone was sharing my exact thoughts ! I couldn’t agree more with you !!
    Reading your article made me decide to do something about it and I am currently re-writing QBasic, it is a difficult task but I will try to make something as simple as I can, and you can trust me for keeping the spirit, I’ll keep you posted as soon as I completed the first version, y’ou’ll be the first to know, it should be in a week.
    Thank you so much for sharing this thought with us !!

  69. “QBasic By Example, Special Edition Special Edition“ Greg Perry

    I dont program much.. but in HD i studied from this book and cross trained into C++ using projects from here. This book hasnt changed but has a universal quality.. it sums up the basic of qbasic and can be learned in a semester if not two. For rudimentary concepts its so nice and easy. If there was any hint of any programming knowledge i owe it to qbasic and learned sorting programs. i did my calculus on qbasic as a challenge. Qbasic gets so much flak.. I was happy to stumble on your article with opinion I strongly agree with. I wish everyone would agree qbasic is the best to start kids off. Any knowledge learned will NOT stop anyone from further education (ie C++ or puthon). We all have to master one language anyways. I am getting back to programming as a hobbyist but getting into python. But i will be sure to parallel my education with qbasic and reinforce the concepts. Thanks for this article!!

  70. Hello Nicolas,
    Still not finished, I’ll need more time, making QBasic is much more complex that what I expected… But I won’t stop until I’m done and I’ll keep you posted.
    I also found this : http://www.qb64.net which I had been looking for years, but mine will be a little bit different, can’t wait to finish it !!

    • So… let me get this straight, Pierre. You’re, um… you’re designing / creating an entirely new version of Basic? Holy (insert favorite body function or most sacred animal here) !!

      Why? Maybe I got this wrong… but YOU guys are not writing software like I did for the banking industry. Oh no. You’re just writing a new version of an existing language. Oh I get it. You don’t need money. You aren’t poor like I was back in the day – grasping at straws to put the next meal on the table. You’ve got so much spare time and TALENT that you’re just gonna sit down and redesign the design.

      This is when I’m pretty sure I’ve lived too long – when you kids are so freekin smart that you can just whip out an entirely new computer language like it’s sausage on a 4th of July freekin BUN ?

      Well. Okay den. I raise my beer glass to you guys. More power to ya. May the need for a bigger paycheck never hit you in the HASS like it did me all those years ago.

      PLAY ON.

      p.s. Why not turn all that mental horsepower into building the first 5 mile pillarless bridge or a $20,000 500-mile-per-charge Tesla killer or something else, y’know, useful.

  71. Still have fond memories of QBasic -really learned matrix algebra writing a regression program in QBasic; no regression function in early … Enable, Lotus. Long ago and faraway.
    Your son will feel you through the language. Talk about shared experience with Dad! Lucky you, lucky son. BASIC!

  72. Hi Nicolas,
    Just discovered this post and it has lit a fire beneath me. My oldest son, who’s name is also Noah, is 5 and graduating from Kindergarten next Tuesday. While he’s still a bit young compared to your son at the time this was written, the thought of sharing a love for software development is thrilling. I’ve been patiently waiting since the day he was born, and am so excited that he’s begun developing the Basic (haha) skills needed to start in earnest.

    Thanks for sharing your story; looking forward to sharing my own soon!
    -Chris

  73. I just revisited True Basic and it seems good enough. The demo version won’t open or save files, but it’s procedural BASIC as opposed to line-number oriented.

    I started with BASIC on PDP-11’s and in the late 80’s did consulting work using Microsoft PDS (Professional Development System), which was an actual BASIC compiler (not P-code or interpreted). I got it running in a VM if you’re interested, but nothing is transferable in/out of the VM, so it’s not that usable. But PDS was a fairly sophisticated procedural syntax and the ability to create include files and such.

    I’d also recommend later on you might try Inform 6, which is an OO-ish static-y text adventure programming language. TADS is probably a more traditional OO implementation of a text adventure language. Writing games is always a fun way to learn.

    Cheers!

  74. I’ve seen my father wrote the first program in BASIC to introduce men computer when I’m 12. The program is called “You Stupid !”. The program random 2 numbers and ask the user to enter the total sum of those two numbers. When the answer is correct it will response with compliment. When the answer is wrong it will response with “You Stupid !”. And then the program start another math question with other random numbers.

    This simple program demonstrate quite a number of elementary concepts of programming — condition, variables, function call, loop, and blaming.

  75. Hi Nicolas,

    Can you share a brief writeup about how to get hold of a decent QBasic and the version of DOSBOX/Windows that you used that will make life easier for those who want to try your stuff out.

    I didn’t have access to a computer till I was in my 20s. My son is now 7 and I’d like to introduce him to QBasic.

    BR,
    ~A

  76. I was 8 when i learned Basic on my C64 without any drive or datasette but with a large Book that contained example code. I am now a successful Web Developer. Greetz to your son 😉

  77. Hi Nicolas,

    being captivated by the article and diving deep into nostalgia*, I just have to recommend you (actually, recommend to Noah) an enlighting book about Basic that my parents bought me when I was a child, and that I think it fits perfectly with the desire of your son of fullfilling his “game-building” abilities.

    Luca Novelli published in the 80s two books called “My first book about Basic” and “My first book about Computers” [1], which are specifically intended to introduce computers and programming to children. After an introduction to algorithms and flow diagrams, the book dedicates a full page to each (GW)Basic instruction, providing an easy-to-understand explanation and -even more important- a small code example (~10 to ~50 lines) in the form of a game.

    This means that the whole book is a compendium of interesting games (guess the animal, guess my age, pick a number) that slowly build up knowledge without being boring or pushy, and gives the child tools to build his own games. It may look outdated, but programming hasn’t changed that much since K&R C, so most of the concepts are still relevant today.

    Sadly, the few page scans I could find are in portuguese or spanish (my mother tongue), but they will serve as an example of the pedagogical approach. I hope you can find an English copy on Amazon, as it is IMHO an excellent way to teach & learn programming.

    [1] “Two children, a dog, and a personal computer explore the history, concepts, and uses of computers, identifying such aspects as binary systems, computer languages, programming, and memory.”
    https://www.amazon.com/My-First-Book-About-Computers/dp/0914845853

    Instructions, strings and numbers
    https://cloud10.todocoleccion.online/tc/2013/10/09/PA0900055.JPG

    FLOW DIAGRAMS — AND instruction
    https://pbs.twimg.com/media/DLhzcb3WkAEVrF3.jpg

    IF THEN GOTO instructions
    https://cdn.wallapop.com/images/10420/39/59/__/c10420p196760441/i440125291.jpg?pictureSize=W640

    LIST and LOAD instructions
    https://cloud10.todocoleccion.online/tc/2013/10/09/PA0900075.JPG

    Basic and Binary
    https://cloud10.todocoleccion.online/libros-segunda-mano-informatica/tc/2014/06/22/13/43931184_20627875.jpg

    More:
    https://twitter.com/eduo/status/782934202572472320
    http://www.lucanovelli.info/2015/10/07/amici-lettori/

    * I coded many interesting things in QBasic in my childhood, way before the Internet era: a point-and-click GUI like windows 3.x, a compression format that I thought was a marvelous. Later in my life I found I had “invented” Run-Length Encoding, haha.

  78. Your code has a bug in it, but your son’s looks great!

    When I was starting I learned Fortran77 and GWBasic and I had a conversation with a US government Computer Department (wasn’t called IT back then) about the two. It went like this…

    Me: We should use BASIC to get all these neat functions.
    GOV: Fortran is flexible and you can have libraries to do all that.
    Me: So, where are all those functions in your Fortran libraries?
    GOV: ……..crickets

    Basic had the quick response a programmer loves, but a few very bad qualities like line numbers or all CAPS and “$” characters allover. It didn’t help that the UI was always non-graphic and ugly with terrible mouse use.

  79. I can’t comment on how accessible it will be since it hasn’t been released yet, but if your son has a Nintendo Switch, you might consider looking into FUZE.

  80. Calling Quick BASIC, QBASIC is incorrect. Quick BASIC is much more powerful and sort of compiled where QBASIC is just interpreted.

  81. I say that about Commodore 64 BASIC. Same ‘problems’ as QBasic I suppose. Download a C64 emulator and you are ready to program. Graduate to Assembly when you are comfortable – I learned 6502 Assembly when I was 15 or so, just out of curiosity (the C128 had a built in assembler). Don’t fear the GOTO! It’s a great step before learning about functions.

  82. I found this on a DuckDuckGo search about “arrogant programmers”, and trust me, being a Linux user, I ran into my fair share of them.

    Ah… QBasic. I remember writing a lot in that, after my TRS-80 Color Computer (26-3002, 16K with Extended Color BASIC–I got a replacement one off eBay nearly 20 years later… But that’s another show, as Alton Brown, a Cooking Channel staple, would say) blown its 6809 processor.

    The documentation for the BASIC language with any Tandy computer of its time was concise and pretty much like the “Dummies” books of today (even the Model I Level I BASIC packed in every box had a well written manual). Even the QBASIC manual that came with my MS-DOS disks was of the same quality. (And written by David A. Lien, nonetheless!)

    I still program in Basic. On my Tandy Color Computer 2 (what I got as the replacement to relieve my childhood from eBay — I’m 41 now) and on Ubuntu with a similar language that’s almost similar to the Microsoft dialect of BASIC from the Canonical repos.

    Yeah, call me old school. But I’m not alone. There’s a small group online of Tandy Color Computer enthusiasts. I am one of them. We still program in BASIC. It might not be as powerful as C and its offshoots, or whatever, but one thing I liked was when I found a copy of “500 POKEs, PEEKs and EXECs for the TRS-80 Color Computer” in a thrift store a few months ago, it was like getting my hands on the holy Grail. I don’t know Motorola 6809 assembly, nor do I know i386/x86_64 assembly, or much C, Java, whatever, but Basic.. oh yeah. And a few well placed POKEs and EXECs in a couple of lines of BASIC code can make a difference.

    Thanks for this post. I’m glad I ain’t alone in saying:

    BASIC IS THE BEST!

Comments are closed.