{"id":818,"date":"2011-10-07T08:15:54","date_gmt":"2011-10-06T20:15:54","guid":{"rendered":"https:\/\/www.deltics.co.nz\/blog\/?p=818"},"modified":"2011-10-07T08:15:54","modified_gmt":"2011-10-06T20:15:54","slug":"the-relevance-of-basic","status":"publish","type":"post","link":"https:\/\/www.deltics.co.nz\/blog\/posts\/818\/","title":{"rendered":"The Relevance of BASIC"},"content":{"rendered":"<span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span><p><a href=\"https:\/\/plus.google.com\/u\/0\/101151078020673275690\/posts?hl=en\">Simon Stuart recently shared a comment on Google+<\/a> about the modern relevance of <strong>BASIC<\/strong>.  This prompted me to think about <strong>BASIC<\/strong>, it&#8217;s role in my career and how software development career&#8217;s get started today.  <\/p>\n<p>This post is what came from those thoughts.<br \/>\n<!--more--><br \/>\nWhilst it may be true that <strong>BASIC<\/strong> is irrelevant in professional\/commercial software development practice, I think back to when I first started in this game&#8230;<\/p>\n<p>I don&#8217;t mind admitting that <strong>BASIC<\/strong> was my first programming language, on a variety of machines.  Certainly I didn&#8217;t have access to sophisticated GUI&#8217;s or OS facilities, but no matter what computer I sat down at &#8211; <strong>ZX-81<\/strong>, <strong>TRS-80<\/strong>, <strong>Spectrum<\/strong>, <strong>C64<\/strong>, <strong>TI-99<\/strong> or even <strong>Amiga<\/strong> or <strong>IBM PC<\/strong> etc &#8211; with a <strong>BASIC<\/strong> interpreter (<em>and one was built in\/provided with just about every system\/OS!<\/em>) I could further practice and learn.<\/p>\n<p>Yes, I was limited to learning about the fundamentals of variables, conditional statements, flow of control.  <strong>IF<\/strong>, <strong>FOR<\/strong>, <strong>GOTO<\/strong> and <strong>GOSUB<\/strong> were the order of the day, without the luxury of objects or even &#8220;functions&#8221;.<\/p>\n<p>But as limited as it was, I could quickly and easily make a computer do what I wanted it to do (even if that was just <strong>10 PRINT &#8220;JOLYON WOZ HERE&#8221;<\/strong>).<\/p>\n<p>This inspired me to want to make it do more, but more importantly taught me the basics [<em>sic<\/em>] and as I progressed to more sophisticated programs (thanks to the lack of structure inherent in the language) the value of taking responsibilty for organising my code.<\/p>\n<p>I then progressed to more advanced forms of <strong>BASIC<\/strong> (on the <strong>Amiga<\/strong>) that had these more advanced constructs and error handling primitives, and so learned about the principles of error handling (in principle) and further refined my code organisation practices.<\/p>\n<p>When I then stepped up to the multi-module <strong>Pascal<\/strong> and the (seemingly) chaotic world of <strong>C\/C++<\/strong>, those early lessons stood me in good stead.  Well grounded in the fundamentals I was then able to tackle (and appreciate) the concepts of memory management and object orientation etc.<\/p>\n<p>These days, the first introduction to the craft of software development is for most people <strong>Java<\/strong> or <strong>C#<\/strong>.  The learning is accelerated, but the philosophy is that you don&#8217;t need to tackle those fundamentals, just jump straight in to the deep end.  Let the IDE take care of code organisation and let the frameworks take care of the attention to detail.<\/p>\n<p>This I think is all too often reflected in the quality of the code when the IDE and the framework finally stand back and leave the developer to actually create something.  No matter how rich your framework or how intelligent your IDE, there comes a point where you end up having to write some code, and the quality of that code will be informed and influenced by <em>all<\/em> that you know at the craft that underpins it.<\/p>\n<p>Someone in the UK (I forget who, or where) recently bemoaned that UK education\/IT is excellent at teaching people how to <em>use<\/em> software but woefully inadequate at teaching them how to <em>create<\/em> it.<\/p>\n<p>I agree, and I think <strong>BASIC<\/strong> had a place in that.<br \/>\nI believe there is still a place for it, or something like it.<\/p>\n<p>Not in the workplace but in the class room.<\/p>\n<p>Not the <em>Computer Science<\/em> lecture theatre, but in <em>high school<\/em>.<br \/>\nIn fact, <strong>primary<\/strong> school!!<\/p>\n<p>Before you throw inheritance, polymorphism, test driven development, mocking, agility, patterns, exceptions, generics, code completion, anonymous methods, anonymous CLASSES, interfaces, intents, contracts, aspects and lord know&#8217;s what else at someone, a gentle, hand-held introduction to identify, foster and nurture the initial instinct and desire to create software and inspire the willingness to learn all that other stuff and how to apply it properly &#8230;.<\/p>\n<p>How can such a thing <strong>not<\/strong> be relevant ?<\/p>\n<p>I think the problem is that we have all moved on from that learning time.  <strong>BASIC<\/strong> is no longer relevant to *us*.<\/p>\n<p>It&#8217;s the same process I think that resulted in phonetics being dropped from the teaching of (English) reading skills in schools.  More recently there has been a realisation that, whilst we may not use phonetics once we <em>have learned<\/em> how to read, the use of phonetics is absolutely <em>the best way to learn<\/em> (for <em>most<\/em> children).<\/p>\n<p>Maybe we should learn that lesson, and go back to <strong>BASIC<\/strong>s ?<\/p>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">[Estimated Reading Time: <\/span> <span class=\"rt-time\">3<\/span> <span class=\"rt-label rt-postfix\">minutes]<\/span><\/span> Simon Stuart recently shared a comment on Google+ about the modern relevance of BASIC. This prompted me to think about BASIC, it&#8217;s role in my career and how software development career&#8217;s get started today. This post is what came from those thoughts.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"jetpack_publicize_message":"","jetpack_is_tweetstorm":false,"jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":[]},"categories":[4,1],"tags":[],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1TKYv-dc","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":2362,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2362\/","url_meta":{"origin":818,"position":0},"title":"Break It or Improve It ?","date":"22 Sep 2015","format":false,"excerpt":"Seth Godin recently asserted that Don't touch it! You might break it is the opposite of Touch it! You can make it better I fully appreciate what he means by this (and we mustn't forget that Seth Godin does not blog on the subject of software development, although a lot\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1593,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1593\/","url_meta":{"origin":818,"position":1},"title":"Learning Valuable Lessons","date":"14 Sep 2013","format":false,"excerpt":"Iztok has been at it again, making comments that prompt another post. :) He expresses his view that there are only two viable options for mobile development. The first is essentially the web-based technology approach (HTML\/JS\/PhoneGap etc) and the other is the platform native tool chains, Eclipse\/AndroidStudio\/Xcode etc. He may\u2026","rel":"","context":"In &quot;Android&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2605,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/2605\/","url_meta":{"origin":818,"position":2},"title":"The Varying (and Variant) Value of True","date":"21 Mar 2017","format":false,"excerpt":"My most recent posts have prompted a bit of discussion, and it seems some concern, regarding the implementation of Boolean values in Delphi. The concern at least I think is unwarranted, as long as you avoid explicitly comparing a Boolean value to the True constant and allow the compiler to\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":1060,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/1060\/","url_meta":{"origin":818,"position":3},"title":"How Do You Feel Ahead of the &#8220;World Tour&#8221; ?","date":"21 Aug 2012","format":false,"excerpt":"Just for a bit of fun I started new poll today, asking how people feel ahead of the XE3 World Tour. I'll reset the poll once the World Tour has been under-way for a time and the information being released is \"in the wild\", to compare our reaction with our\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":924,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/924\/","url_meta":{"origin":818,"position":4},"title":"CFStringRef and TCFString(s)","date":"05 Jul 2012","format":false,"excerpt":"In the comments on yesterdays initial post in a series following the experiences of porting an Objective-C sample to XE2, a number of people have asked why I didn't use the TCFString record type in System.Mac.CFUtils to get the CFStringRef references that I required. The reason is embarrassingly simple. I\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":900,"url":"https:\/\/www.deltics.co.nz\/blog\/posts\/900\/","url_meta":{"origin":818,"position":5},"title":"Porting the Objective-C CFFTPSample to XE2: Part 1","date":"04 Jul 2012","format":false,"excerpt":"On the NZ DUG email list (yes, we still have those here) a question was recently posted asking for help with getting some FTP code working on OSX, using XE2. This coincided nicely with my reaching a point in my Objective-C learning where this sort of exercise was of interest\u2026","rel":"","context":"In &quot;Delphi&quot;","img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/818"}],"collection":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/comments?post=818"}],"version-history":[{"count":5,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/818\/revisions"}],"predecessor-version":[{"id":823,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/818\/revisions\/823"}],"wp:attachment":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/media?parent=818"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/categories?post=818"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/tags?post=818"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}