30 years later, QBasic is still the best

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. 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. 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 ended up with a disappointing conclusion: nothing is close to what we had back then. 30 years later, QBasic is still the best when it comes to learning how to code.

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

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

Yes, Basic is not considered a great language. It introduces one to harmful concepts, uses awkward syntax, is not case sensitive, is non-zero-based, etc. Yet, it excels in one thing: the barrier between the code and the results is close to zero. The language is kept minimal and very accessible, something that most other languages have traded off for more flexibility and complexity.

I installed QBasic on my son’s 11” HP Stream today through DOSBox and after a split second, we were already in the IDE, greeted with the introduction screen:

I then told my son 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:

1
PRINT "HELLO WORLD"

He pressed F5 and looked amazed as he saw his code generating text 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, IF… Each of those only took a few seconds to understand for a 7 year old, and worked as expected. There was no complexity, no abstract concepts, no need to understand objects, classes or methods, no framework to install, no overwhelming content in the IDE. 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:

He then proceeded to explain to him how his code worked!

Within less than an 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 got a glimpse of why I fell in love with programming. My only regret was to realize that in more than 30 years, we have not been able to come up with something even simpler for our kids:

  • Qbasic has a limited set of simple keywords
  • Qbasic’s help fits entirely in one F1 screen and is packed with examples
  • Qbasic does not distract the coder with any visual artifacts
  • Qbasic has a very confined and cosy dev environment, showing errors as early as possible
  • Qbasic compiles and executes the code in a heartbeat with a single key.

We have built more robust and more complex languages/frameworks/IDEs that are necessary for any real-life applications, but it feels we have failed to make a simpler and more direct access to simple code.

Enough said, today is all about the celebration of yet another person who discovered the love of coding!

163 Comments

Francisco says (May 5, 2016 at 2:40 pm):

Nicolas,
this is a very nice post. Thanks.
Nostalgia is good, even the coding one : ) … for so many reasons.
Cheers.
Francisco.

Nick P says (May 5, 2016 at 3:10 pm):

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.

Nicolas Bize says (May 5, 2016 at 5:23 pm):

I’ll be sure to try it out, thanks for suggesting!

Chris Rosenau says (May 5, 2016 at 3:13 pm):

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.

Chris Howard says (May 6, 2016 at 1:43 am):

“Yet OOP was forced upon PHP and now it just isn’t as fun”
Thank you, Chris! I though it was just me.

Roope Kangas says (May 6, 2016 at 5:13 am):

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

Braunbär says (May 6, 2016 at 9:25 am):

take a look at go(lang) (- :

Rabo says (May 10, 2016 at 3:34 pm):

Sorry, bub. You don’t get to borrow QBasic nostalgia for your shitty language.

Shashi says (October 29, 2016 at 12:16 am):

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 ..

Max says (May 5, 2016 at 3:14 pm):

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.

Nicolas Bize says (May 5, 2016 at 5:23 pm):

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?

Chris says (May 5, 2016 at 5:56 pm):

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

1
2
3
4
5
6
7
8
9
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

Chris says (May 5, 2016 at 5:57 pm)

Looks like the code tag didn’t preserve my spacing. 🙁

Nick Schubach says (May 5, 2016 at 6:31 pm):

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.

ProgrammerDude says (May 5, 2016 at 7:32 pm):

“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.

ObviousPseudonym says (May 10, 2016 at 11:37 am):

@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.

Nicolas Bize says (May 5, 2016 at 6:00 pm):

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.

UNIX administrator says (May 5, 2016 at 9:33 pm):

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.

yaleman says (May 27, 2018 at 12:15 am):

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?

David says (May 27, 2018 at 6:31 am):

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.

Paul says (May 11, 2016 at 6:25 am):

Well, Python’s pretty basic after all!

Eric says (May 5, 2016 at 7:05 pm)

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? “)

Phil says (May 6, 2016 at 2:21 am):

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

Phil says (May 6, 2016 at 2:24 am):

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.

Renee Cousins says (May 10, 2016 at 4:12 pm):

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.

David says (May 6, 2016 at 3:33 am):

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.

Peter A. says (May 8, 2016 at 12:28 am):

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).

Nicolas Bize says (May 8, 2016 at 3:08 am):

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.

Richard Girou says (May 17, 2016 at 2:59 pm):

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.

Peter says (May 7, 2016 at 2:33 pm):

“gets” to get input, “puts” to print input.
Not complicated.

Nicolas Bize says (May 8, 2016 at 3:14 am):

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.

p says (May 27, 2018 at 3:57 pm):

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.

Dub Dublin says (May 5, 2016 at 9:01 pm):

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…)

Bradley says (May 5, 2016 at 3:32 pm):

That screenshot of the QBasic opening screen really brings me back.
Thanks.

Gaurub Pandey says (May 5, 2016 at 3:40 pm):

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

Kartik Agaram says (May 5, 2016 at 3:40 pm):

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.

Nicolas Bize says (May 5, 2016 at 5:21 pm):

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

Maxim Khailo says (May 5, 2016 at 7:34 pm):

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.

Kartik Agaram says (May 5, 2016 at 9:58 pm):

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.

Derek Sharp says (May 5, 2016 at 3:50 pm):

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?

Nicolas says (May 5, 2016 at 3:50 pm):

Functional is better for your kids 🙂
http://herdingcode.com/herding-code-213-sean-trelford-on-composing-3d-objects-with-f-and-opengl/

Jeremy says (May 5, 2016 at 4:06 pm):

You should check out Sonic Pi http://sonic-pi.net/ for a simple ruby environment which is aimed at kids and can even integrate with minecraft.

Nicolas Bize says (May 5, 2016 at 5:19 pm):

This looks promising, I’ll check it out!
Thanks!

Ben says (May 5, 2016 at 4:17 pm):

Have you tried this https://code.org/mc?
It’s Minecraft and code.

Nicolas Bize says (May 5, 2016 at 5:18 pm):

I haven’t! I’ll check it out thanks!

David Schaffer says (May 5, 2016 at 4:18 pm):

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.

Jeremy says (May 5, 2016 at 4:21 pm):

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!

Michelle F. says (May 5, 2016 at 4:35 pm):

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.

Jamie Dalgetty says (May 5, 2016 at 4:58 pm):

I really want to take another stab at learning basic.

Pierre says (May 5, 2016 at 4:58 pm):

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

Anjan says (May 5, 2016 at 5:01 pm):

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 ?

Nicolas Bize says (May 5, 2016 at 5:03 pm):

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.

Anjan says (May 6, 2016 at 6:25 am):

Hi Nicolas,
Could you kindly share the QuickBasic 4.5 link on the net ? thank you.

Odd. S. says (September 21, 2016 at 5:50 pm):

Just ‘google’ qbasic, and you’ll find it. It’s not ‘hidden’! 😉

Maxim Khailo says (May 5, 2016 at 5:02 pm):

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.

Nicolas Bize says (May 5, 2016 at 5:17 pm):

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

QBasic Fan says (May 5, 2016 at 5:25 pm):

For anyone who’s interested, QBasic can still be downloaded from Microsoft at ftp://ftp.microsoft.com/softlib/mslfiles/olddos.exe
The Microsoft ftp server does not support passive mode, so this may not work in all web browsers. You may need to use a command line ftp client.

Mehdi Hasan says (May 5, 2016 at 5:37 pm):

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/

Chuck Mire says (May 13, 2016 at 3:00 am):

QBasic, Quick Basic 4.5, and QBX (Quick Basic eXtemded) 7.1 can be downloaded here:
http://www.qbasic.net/en/qbasic-downloads/compiler/qbasic-compiler.htm
If you install DOSBox and then run any of these programs, you will find that they have syntax correction as an aid – and the source code is almost identical to QB64. so one can then write install QB64 and compile Windows executables. Look here to see several examples:
http://www.qb64.net/forum/index.php?board=5.0

Marcus Olsson says (May 5, 2016 at 5:41 pm):

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!

Dusan says (May 5, 2016 at 5:45 pm):

Did you look at Racket? I’d say, when he’s done with QBasic, it could be a nice next step http://www.itworld.com/article/2978142/development/why-john-carmack-thinks-racket-is-aces-for-beginning-programmers.html

Isaac says (May 5, 2016 at 6:00 pm):

Might I suggest http://www.hackety.com/ which was inspired by the original creators experience with qbasic.

David says (June 2, 2018 at 8:37 pm):

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

winder says (May 5, 2016 at 6:11 pm):

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!

DavidBechtel says (May 5, 2016 at 7:00 pm):

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.

Benjamin says (May 5, 2016 at 7:11 pm):

I wrote a 3d cube engine in QBASIC when I was a teen, so many memories.

S. Parker says (May 5, 2016 at 7:23 pm):

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

Stu says (May 5, 2016 at 7:36 pm):

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.

Jay Vaughan says (May 5, 2016 at 8:01 pm):

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.

anonymous coward says (May 5, 2016 at 8:43 pm):

check out tynker – an ipad app (and more besides) – its so bright and cheery and kids just ‘get it’…

Keith says (May 5, 2016 at 9:19 pm):

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!

Nicolas Bize says (May 5, 2016 at 9:25 pm):

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.

Keith says (May 5, 2016 at 9:38 pm):

I guess TextWindow seems a bit more complicated
I started out with doing doing a one line program :-
Turtle.Move(100)
then

1
2
3
Turtle.Move(100)
Turtle.TurnRight()
Turtle.Move(100)

then

1
2
3
4
5
6
7
8
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.

RRR says (May 10, 2016 at 8:15 am):

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-)

RRR says (May 10, 2016 at 8:16 am):

*Could have given
Wtf is wrong with me?!

Brendon Rapp says (May 5, 2016 at 9:19 pm):

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.

Leon says (May 5, 2016 at 9:41 pm):

Lua is a pretty neat language, and if you want to have some “fun” with it, check out https://love2d.org/

Derek says (May 5, 2016 at 9:51 pm):

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/

Adam says (June 6, 2018 at 6:51 pm):

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

James Tayler says (May 5, 2016 at 10:10 pm):

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!

Ken Arkfan says (May 5, 2016 at 10:23 pm):

Some of the nostalgia is captured at codebymath.com. Easy graphics, sound, and printing things to the screen.

Tim says (May 5, 2016 at 11:01 pm):

“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!

ignorantguy says (May 5, 2016 at 11:07 pm):

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

David Cornelson says (May 5, 2016 at 11:25 pm):

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:

1
2
3
4
5
6
7
8
9
$ 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.

Nick says (May 6, 2016 at 1:27 am):

You must try Rebol:
http://re-bol.com/short_rebol_examples.r

Pierre says (May 6, 2016 at 2:31 am):

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!

redwall_hp says (May 6, 2016 at 5:54 am):

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

Peter says (May 6, 2016 at 6:30 am):

\o/

Raine says (May 6, 2016 at 8:00 am):

I started with QBasic as well back in ’92.
Oh the memories :’)

Greg says (May 6, 2016 at 8:52 am):

QBasic is still alive and you don’t need DosBox: http://www.qb64.net/

Overburn says (May 6, 2016 at 9:00 am):

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.

Sawan says (May 6, 2016 at 9:44 am):

Man. I miss GWBasic a alot…

Patrice says (May 6, 2016 at 11:53 am):
Ah ah, I love your child first program! I think the first I wrote myself was doing basically the same thing!:)

amwales says (May 6, 2016 at 12:34 pm):

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.

Dan says (May 6, 2016 at 2:39 pm):

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.

OBloodyHell says (May 6, 2016 at 4:03 pm):

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…

Jzna says (May 8, 2016 at 8:02 am):

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. 🙂

Andrea Garbagnoli says (May 9, 2016 at 12:48 pm):

You could also try https://github.com/ToonTalk/ToonTalk

Francis Kim says (May 9, 2016 at 12:31 am):

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)

Yan Coutinho says (May 9, 2016 at 10:10 pm):

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

Miguel says (May 10, 2016 at 6:00 am):

“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.

Pablo says (May 10, 2016 at 7:31 am):

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!

1
2
10 PRINT “HELLO NOAH!”
f5

Rui Marques says (May 10, 2016 at 7:44 am):

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.

LyndonL says (May 10, 2016 at 8:54 am):

Did you consider starting him off with Alice??
http://www.alice.org

Paul Clift says (May 10, 2016 at 9:15 am):

Have you tried Barclays Code Playground?
http://barclayscodeplayground.co.uk/
It’s aimed at kids and created by Barclays Bank in the UK.

Jack C Shofner says (May 10, 2016 at 10:53 am):

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

Peter Monks says (May 10, 2016 at 11:35 am):

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.

Jimmy Olano says (May 10, 2016 at 11:44 am):

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

Ted Weissgerber says (May 10, 2016 at 12:00 pm):

QB64 uses most of the Qbasic keywords and runs your programs on newer OS’s without DOS or DOSBox. Also has new keywords for modern systems to use Open GL and 3-D images with millions of colors! Plus it is FREE!
GOTO http://www.QB64.net

Tim says (May 10, 2016 at 12:09 pm):

Have you tried Logo as a kids first language?

C R Oberholster says (May 10, 2016 at 12:59 pm):

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!)

Alan says (May 10, 2016 at 1:02 pm):

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!!

normeus says (May 10, 2016 at 1:59 pm):

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

Chris Boss says (May 10, 2016 at 2:24 pm):

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.

JH says (May 10, 2016 at 2:46 pm):

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.

Rocky says (May 10, 2016 at 3:08 pm):

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

Cyrus says (May 10, 2016 at 3:32 pm):

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

Jorge says (May 10, 2016 at 6:33 pm):

Good memories… I think my programming skills got stuck since QBasic.
Thanks for the writeup!

Mike says (May 11, 2016 at 3:18 pm):

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.

James Tayler says (May 11, 2016 at 8:09 pm):

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!

Nikhil Rodrigues says (May 12, 2016 at 8:56 am):

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?

Riccardo Tacconi says (May 14, 2016 at 8:02 am):

“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

Joseph says (May 17, 2016 at 6:54 pm):

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 🙂
++

Nicolas Bize says (May 17, 2016 at 7:01 pm):

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 🙂

Joseph says (May 18, 2016 at 8:10 am):

Haha 🙂 Good one!

Pansophical says (May 18, 2016 at 4:04 pm):

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.

André Willik Valenti says (May 30, 2016 at 3:23 pm):

Loved this post! I learned how to program with QBasic, too, and agree that no tool has ever been as simple, direct and fast. Lots of fun in the 80’s and 90’s!

Greg Mayer says (May 30, 2016 at 5:23 pm):

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.

Gary P says (June 3, 2016 at 7:57 pm):

Guys,
Some of you BASIC fans might be interested in
ZX Spectrum Games Code Club: Twenty Fun Games to Code and Learn
Available on Amazon.co.uk and Amazon.com etc.
https://www.amazon.co.uk/ZX-Spectrum-Games-Code-Club/dp/0993474403/

Stephane Gallès says (July 20, 2016 at 4:52 am):

Your post was very inspiring to me as I was at the exact same step in my quest for the perfect IDE/language for kids, and it convinced me that QBasic was an excellent choice. In case someone is interested, I wrote a short tutorial to the install of QBasic+DOSBox on a Raspberry Pi :
https://sgalles.github.io/2016/06/02/Install-Q-Basic-on-a-Raspberry-Pi.html

BillyBob JoeBob says (July 29, 2016 at 12:50 am):

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.

Big D says (August 9, 2016 at 12:03 pm):

Hi there
Try BlitzBasic3d or BlitzBasic Max. It’s open source now.

Paul says (August 13, 2016 at 11:40 pm):

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.

Tony C says (September 2, 2016 at 4:40 am):

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.

Mike says (October 14, 2016 at 6:34 pm):

I have also started with Basic (gwbasic I think), but today JavaScript is just more fun to play with. I use http://www.scriptacademy.net/ and here are some game examples: http://www.scriptacademy.net/project/2 and http://www.scriptacademy.net/project/1

Erik says (February 17, 2017 at 8:49 am):

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

Jeff Bowman says (April 12, 2017 at 8:39 pm):

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

Juanjo says (July 2, 2017 at 2:54 pm):

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!!

Andrew says (August 2, 2017 at 4:37 pm):

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.

Kris says (August 15, 2017 at 8:35 pm):

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.

Katie says (September 4, 2017 at 2:34 pm):

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/

Allen Jones says (December 15, 2017 at 6:08 pm):

Hi, Katie. The homepage is actually http://www.qb64.net… not .org.
AND THANKS FOR THE HEADS UP !!!

Allen Jones says (December 15, 2017 at 5:36 pm):

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.

Nicolas Bize says (December 15, 2017 at 9:29 pm):

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.

Allen Jones says (December 18, 2017 at 8:06 pm):

I’m out on a limb here… but I’m guessing… one?
)
aj

Pierre Bonjour says (December 20, 2017 at 1:03 pm):

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 !!

Nicolas Bize says (December 20, 2017 at 7:45 pm):

That’s awesome, can’t wait to see what you come up with 🙂

George says (January 6, 2018 at 4:00 pm):

“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!!

Pierre Bonjour says (January 16, 2018 at 1:05 pm):

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 !!

Bill Trail says (February 14, 2018 at 8:47 pm):

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.

SamW says (May 27, 2018 at 1:19 am):

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!

Chris S says (May 27, 2018 at 2:25 am):

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

David Cornelson says (May 27, 2018 at 4:41 am):

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!

Sake says (May 27, 2018 at 6:20 am):

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.

Anjan Bacchu says (May 27, 2018 at 6:21 am):

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

Chris says (May 27, 2018 at 6:56 am):

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 😉

Mauro Meloni says (May 27, 2018 at 10:21 pm):

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.

Mark says (May 28, 2018 at 8:01 pm):

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.

Alessandro Nazzani says (May 29, 2018 at 10:15 am):

I also started with some flavour of Basic (can’t remember which): ah, the memories!
Your son might enjoy this: https://studio.code.org/s/starwars/stage/1/puzzle/1

Darin says (May 29, 2018 at 1:16 pm):

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.

JQB45 says (May 29, 2018 at 4:31 pm):

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

Doug McFarlane says (June 1, 2018 at 5:16 pm):

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.

Alexa Tilbrook says (June 4, 2018 at 6:29 am):

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 now closed

dark
sans