{"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=\"span-reading-time 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=\"span-reading-time 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_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[4,1],"tags":[],"class_list":["post-818","post","type-post","status-publish","format-standard","hentry","category-delphi","category-general"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p1TKYv-dc","jetpack_sharing_enabled":true,"jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.deltics.co.nz\/blog\/wp-json\/wp\/v2\/posts\/818","targetHints":{"allow":["GET"]}}],"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}]}}