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 | 10 PRINT “OH NO, WHAT ARE YOU DOING?!!!” |
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!
Francisco says (May 5, 2016 at 2:40 pm):
Nick P says (May 5, 2016 at 3:10 pm):
Chris Rosenau says (May 5, 2016 at 3:13 pm):
Max says (May 5, 2016 at 3:14 pm):
Bradley says (May 5, 2016 at 3:32 pm):
Gaurub Pandey says (May 5, 2016 at 3:40 pm):
Kartik Agaram says (May 5, 2016 at 3:40 pm):
Derek Sharp says (May 5, 2016 at 3:50 pm):
Nicolas says (May 5, 2016 at 3:50 pm):
Jeremy says (May 5, 2016 at 4:06 pm):
Ben says (May 5, 2016 at 4:17 pm):
David Schaffer says (May 5, 2016 at 4:18 pm):
Jeremy says (May 5, 2016 at 4:21 pm):
Michelle F. says (May 5, 2016 at 4:35 pm):
Jamie Dalgetty says (May 5, 2016 at 4:58 pm):
Pierre says (May 5, 2016 at 4:58 pm):
Anjan says (May 5, 2016 at 5:01 pm):
Maxim Khailo says (May 5, 2016 at 5:02 pm):
QBasic Fan says (May 5, 2016 at 5:25 pm):
Mehdi Hasan says (May 5, 2016 at 5:37 pm):
Marcus Olsson says (May 5, 2016 at 5:41 pm):
Dusan says (May 5, 2016 at 5:45 pm):
Isaac says (May 5, 2016 at 6:00 pm):
winder says (May 5, 2016 at 6:11 pm):
DavidBechtel says (May 5, 2016 at 7:00 pm):
Benjamin says (May 5, 2016 at 7:11 pm):
S. Parker says (May 5, 2016 at 7:23 pm):
Stu says (May 5, 2016 at 7:36 pm):
Jay Vaughan says (May 5, 2016 at 8:01 pm):
anonymous coward says (May 5, 2016 at 8:43 pm):
Keith says (May 5, 2016 at 9:19 pm):
Brendon Rapp says (May 5, 2016 at 9:19 pm):
Leon says (May 5, 2016 at 9:41 pm):
Derek says (May 5, 2016 at 9:51 pm):
James Tayler says (May 5, 2016 at 10:10 pm):
Ken Arkfan says (May 5, 2016 at 10:23 pm):
Tim says (May 5, 2016 at 11:01 pm):
ignorantguy says (May 5, 2016 at 11:07 pm):
David Cornelson says (May 5, 2016 at 11:25 pm):
Nick says (May 6, 2016 at 1:27 am):
Pierre says (May 6, 2016 at 2:31 am):
redwall_hp says (May 6, 2016 at 5:54 am):
Peter says (May 6, 2016 at 6:30 am):
Raine says (May 6, 2016 at 8:00 am):
Greg says (May 6, 2016 at 8:52 am):
Overburn says (May 6, 2016 at 9:00 am):
Sawan says (May 6, 2016 at 9:44 am):
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):
Dan says (May 6, 2016 at 2:39 pm):
OBloodyHell says (May 6, 2016 at 4:03 pm):
Jzna says (May 8, 2016 at 8:02 am):
Francis Kim says (May 9, 2016 at 12:31 am):
Yan Coutinho says (May 9, 2016 at 10:10 pm):
Miguel says (May 10, 2016 at 6:00 am):
Pablo says (May 10, 2016 at 7:31 am):
Rui Marques says (May 10, 2016 at 7:44 am):
LyndonL says (May 10, 2016 at 8:54 am):
Paul Clift says (May 10, 2016 at 9:15 am):
Jack C Shofner says (May 10, 2016 at 10:53 am):
Peter Monks says (May 10, 2016 at 11:35 am):
Jimmy Olano says (May 10, 2016 at 11:44 am):
Ted Weissgerber says (May 10, 2016 at 12:00 pm):
Tim says (May 10, 2016 at 12:09 pm):
C R Oberholster says (May 10, 2016 at 12:59 pm):
Alan says (May 10, 2016 at 1:02 pm):
normeus says (May 10, 2016 at 1:59 pm):
Chris Boss says (May 10, 2016 at 2:24 pm):
JH says (May 10, 2016 at 2:46 pm):
Rocky says (May 10, 2016 at 3:08 pm):
Cyrus says (May 10, 2016 at 3:32 pm):
Jorge says (May 10, 2016 at 6:33 pm):
Mike says (May 11, 2016 at 3:18 pm):
James Tayler says (May 11, 2016 at 8:09 pm):
Nikhil Rodrigues says (May 12, 2016 at 8:56 am):
Riccardo Tacconi says (May 14, 2016 at 8:02 am):
Joseph says (May 17, 2016 at 6:54 pm):
Pansophical says (May 18, 2016 at 4:04 pm):
André Willik Valenti says (May 30, 2016 at 3:23 pm):
Greg Mayer says (May 30, 2016 at 5:23 pm):
Gary P says (June 3, 2016 at 7:57 pm):
Stephane Gallès says (July 20, 2016 at 4:52 am):
BillyBob JoeBob says (July 29, 2016 at 12:50 am):
Big D says (August 9, 2016 at 12:03 pm):
Paul says (August 13, 2016 at 11:40 pm):
Tony C says (September 2, 2016 at 4:40 am):
Mike says (October 14, 2016 at 6:34 pm):
Erik says (February 17, 2017 at 8:49 am):
Jeff Bowman says (April 12, 2017 at 8:39 pm):
Juanjo says (July 2, 2017 at 2:54 pm):
Andrew says (August 2, 2017 at 4:37 pm):
Kris says (August 15, 2017 at 8:35 pm):
Katie says (September 4, 2017 at 2:34 pm):
Allen Jones says (December 15, 2017 at 5:36 pm):
Pierre Bonjour says (December 20, 2017 at 1:03 pm):
George says (January 6, 2018 at 4:00 pm):
Pierre Bonjour says (January 16, 2018 at 1:05 pm):
SamW says (May 27, 2018 at 1:19 am):
Chris S says (May 27, 2018 at 2:25 am):
David Cornelson says (May 27, 2018 at 4:41 am):
Sake says (May 27, 2018 at 6:20 am):
Anjan Bacchu says (May 27, 2018 at 6:21 am):
Chris says (May 27, 2018 at 6:56 am):
Mauro Meloni says (May 27, 2018 at 10:21 pm):
Mark says (May 28, 2018 at 8:01 pm):
Alessandro Nazzani says (May 29, 2018 at 10:15 am):
Darin says (May 29, 2018 at 1:16 pm):
JQB45 says (May 29, 2018 at 4:31 pm):
Doug McFarlane says (June 1, 2018 at 5:16 pm):
Alexa Tilbrook says (June 4, 2018 at 6:29 am):
Comments are now closed