{"id":20,"date":"2014-09-21T09:00:37","date_gmt":"2014-09-21T09:00:37","guid":{"rendered":"http:\/\/www.voidbred.com\/blog\/?p=20"},"modified":"2014-09-21T01:56:40","modified_gmt":"2014-09-21T01:56:40","slug":"remembering-qbasic","status":"publish","type":"post","link":"http:\/\/www.voidbred.com\/blog\/2014\/09\/remembering-qbasic\/","title":{"rendered":"Remembering QBasic"},"content":{"rendered":"<p><a href=\"http:\/\/www.voidbred.com\/blog\/wp-content\/uploads\/2014\/09\/Screen-Shot-2014-09-20-at-2.03.48-PM.png\"><img loading=\"lazy\" class=\"alignnone  wp-image-32\" src=\"http:\/\/www.voidbred.com\/blog\/wp-content\/uploads\/2014\/09\/Screen-Shot-2014-09-20-at-2.03.48-PM.png\" alt=\"Screen Shot 2014-09-20 at 2.03.48 PM\" width=\"477\" height=\"298\" srcset=\"http:\/\/www.voidbred.com\/blog\/wp-content\/uploads\/2014\/09\/Screen-Shot-2014-09-20-at-2.03.48-PM.png 643w, http:\/\/www.voidbred.com\/blog\/wp-content\/uploads\/2014\/09\/Screen-Shot-2014-09-20-at-2.03.48-PM-300x187.png 300w\" sizes=\"(max-width: 477px) 100vw, 477px\" \/><\/a><\/p>\n<p>All programmers have a first language, me being a child of the early 90&#8217;s, my first programming language was Microsoft&#8217;s QBasic.\u00a0 Let me set the stage a bit, this was the early 90&#8217;s, before most people would have access to some sort of network with their computer.\u00a0 There were old books floating around in school libraries featuring games that could be typed into a <a href=\"https:\/\/en.wikipedia.org\/wiki\/BASIC\" target=\"_blank\">BASIC<\/a> interpreter.\u00a0 Their heyday being more focused around the Apple II or Commodore 64 era computers, when BASIC was almost unavoidable.\u00a0 You can find some of these books published online now, here is the series I remember: <a href=\"https:\/\/en.wikipedia.org\/wiki\/BASIC_Computer_Games\" target=\"_blank\">BASIC Computer Games by David H. Ahl<\/a>.<\/p>\n<p>By the time I found these books it was actually confusing how one would actually use them, since they focused on BASIC but by the early 90&#8217;s BASIC was hidden, or unavailable on computers.\u00a0 Lucky for me Microsoft shipped QBasic with versions of Windows, so for kids with more spare time to poke around on computers, they would find it eventually.<\/p>\n<p>QBasic was an environment that had many features that make it a nice environment for beginners:<\/p>\n<ul>\n<li>Instant feedback on syntax errors &#8211; at each newline QBasic would check the last expression for syntax errors so that the programmer wouldn&#8217;t get far with an obvious error<\/li>\n<li>Fast run-edit cycle &#8211; the BASIC was interpreted and was run by hitting the F5 button which would immediately jump into execution so a beginner could see quickly the results of his code.\u00a0 I&#8217;d beg for that level of feedback in iOS development today.<\/li>\n<li>Large body of published code &#8211; there were many dialects of BASIC so while it was unlikely that their basic worked without tweaking, the tweaking if students could persevere would reward with deeper understanding.<\/li>\n<li>Free games &#8211; related to the last point, much of the code available were games.\u00a0 Today kids have access to so many free games on mobile devices, it isn&#8217;t as much of a motivator.\u00a0 But then, kids would do anything for free games, even deal with the messy business of coding.<\/li>\n<li>Multiple graphics modes &#8211; there were graphic modes, some that allowed for easy graphics.\u00a0 We liked to make programs that just drew pretty things.\u00a0 They were easily accessible and integrated into the environment.\u00a0 This is a big drawback for popular learning languages of today like Python.<\/li>\n<li>Fullscreen &#8211; to avoid distractions<\/li>\n<li>Good language documentation inside the editor<\/li>\n<\/ul>\n<p>QBasic had some problems too.\u00a0 For example it was kind of a pain to use functions.\u00a0 To this day I&#8217;m not sure what the difference between a sub and a function is.\u00a0 I could easily look it up now, but it didn&#8217;t occur to me as a kid and alot of BASIC instruction seemed to avoid the topic.\u00a0 I remember there being some sort of dialog to add subroutines, I&#8217;m not sure if it was required or if you could do it alone with code.\u00a0 I&#8217;m sure I could come up with more problems but they are moot because what it did, it did well enough to set me on my way to become a good programmer.\u00a0 I&#8217;m not permanently damaged by QBasic&#8217;s shortcomings.\u00a0 Sometimes we get caught up in these details about what languages are best for learning programming.\u00a0 After considering it, the things that are most important are environments that are easy to explore and when I consider all the environments I know today, maybe no environment has done that better than QBasic.<\/p>\n<p>If you want to try out QBasic its easy to find with an internet search.\u00a0 Try looking for QBasic 1.1 by Microsoft that&#8217;s what I used.\u00a0 I just ran mine in <a href=\"http:\/\/www.dosbox.com\/\" target=\"_blank\">DOSBox<\/a> on Mac OS X with freedos, seems to run perfectly.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>All programmers have a first language, me being a child of the early 90&#8217;s, my first programming language was Microsoft&#8217;s QBasic.\u00a0 Let me set the stage a bit, this was the early 90&#8217;s, before most people would have access to some sort of network with their computer.\u00a0 There were old books floating around in school&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[1],"tags":[6],"_links":{"self":[{"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/posts\/20"}],"collection":[{"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/comments?post=20"}],"version-history":[{"count":5,"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":35,"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/posts\/20\/revisions\/35"}],"wp:attachment":[{"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.voidbred.com\/blog\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}