{"id":78,"date":"2021-03-05T11:06:50","date_gmt":"2021-03-05T19:06:50","guid":{"rendered":"http:\/\/www.barrybriggs.com\/blog\/?p=78"},"modified":"2021-03-07T10:50:07","modified_gmt":"2021-03-07T18:50:07","slug":"i-learned-about-programming-from-that-first-in-a-series","status":"publish","type":"post","link":"http:\/\/www.barrybriggs.com\/blog\/programming\/i-learned-about-programming-from-that-first-in-a-series\/","title":{"rendered":"I Learned About Programming from That: First in a Series"},"content":{"rendered":"\n<p>Barry Briggs<\/p>\n\n\n\n<p>I recently experienced the completely horrifying realization\nthat I\u2019ve been writing code for half a century. It occurred to me that over the\nyears I\u2019ve actually learned some stuff possibly worth passing on, so this\narticle is first in an occasional series.<\/p>\n\n\n\n<p>I\u2019ve had the privilege (and it has been a true privilege!)\nto meet and work with many of the amazing individuals who shaped this\nremarkable industry, and to work on some of the software applications that have\ntransformed our world. <\/p>\n\n\n\n<p>It\u2019s been quite a journey, and over the years I\u2019ve come to realize that I started it in a way that can only be described as unique; indeed, I doubt that anyone began a career in the software industry in the same way I did. <\/p>\n\n\n\n<p>So the first edition of \u201cI Learned About Computing from That\u201d\nis about how I actually first learned about computers. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Early Days<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/ASR33.png\" alt=\"\" class=\"wp-image-79\" width=\"125\" height=\"212\" srcset=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/ASR33.png 482w, http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/ASR33-177x300.png 177w\" sizes=\"auto, (max-width: 125px) 100vw, 125px\" \/><\/figure><\/div>\n\n\n\n<p>I wrote my first program in BASIC in high school on a teletype (an ASR-33, for old-timers) connected via a phone modem to a time-sharing CDC mainframe somewhere in Denver. As I recall it printed my name out on the attached line printer in big block letters. <\/p>\n\n\n\n<p>I had no idea what I was doing.<\/p>\n\n\n\n<p>In college, I majored in English (really) but maintained a\nstrong interest in science, with several years of physics, astronomy, math and\nchemistry, even a course in the geology of the moon. Yes, it was a very strange\nBachelor of Arts I received.<\/p>\n\n\n\n<p>In short, I graduated with virtually no marketable skills. <\/p>\n\n\n\n<p>Luckily, I found a job with the federal government just outside Washington, D.C. where I was almost immediately Bored Out Of My Mind. <\/p>\n\n\n\n<p>However, I soon discovered a benefit of working for Uncle Sam: a ton of free educational opportunities. A catalog listed page after page of in-person and self-paced courses, and thank God, because I desperately needed something to stimulate my mind.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Digital Design<\/h2>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/DigitalDesign.jpg\" alt=\"\" class=\"wp-image-80\" width=\"185\" height=\"247\" srcset=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/DigitalDesign.jpg 312w, http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/DigitalDesign-225x300.jpg 225w\" sizes=\"auto, (max-width: 185px) 100vw, 185px\" \/><\/figure><\/div>\n\n\n\n<p>Having no idea what the subject actually\nwas, other than it sounded Really Cool, I chose a self-paced course called \u201cDesign\nof Digital Systems,\u201d by PC Pittman (original publish date: 1974). <\/p>\n\n\n\n<p>This utterly random decision changed the course of my life\nforever.<\/p>\n\n\n\n<p>These six paperback booklets (I still have a few of them)\nbegan with different number bases (binary, octal, digital) then introduced the\nconcept of Boolean logic \u2013 AND and OR gates, and so on. It was hard!<\/p>\n\n\n\n<p>After that it covered half-adders, more complicated gates\n(XOR) and eventually got to memory and \u2013 gasp! \u2013 the idea of registers. <\/p>\n\n\n\n<p>Finally, it described the notion of CPUs and instructions,\nhow you could actually have a number stored in memory when loaded by the CPU would\ncause another number to be fetched from memory and added to the contents of a\nregister, leaving the sum in the register: the essence of a program! (To this\nvery day!)<\/p>\n\n\n\n<p>O the light bulbs that flashed on for me! <\/p>\n\n\n\n<p>I suddenly <em>got it, <\/em>how \u2013 at a foundational level \u2013 computers work, and how they could be made to do useful things. For me at that point, everything else \u2013 assemblers, high-level languages (I took a FORTRAN programming class next), operating systems \u2013 fell out from this very profound <em>gestalt <\/em>of computing. <\/p>\n\n\n\n<p>And I realized I loved this stuff. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">They Teach Programming All Wrong Today<\/h2>\n\n\n\n<p>These days in high school students can take \u201ccomputer science\u201d\nclasses which, at least in my son\u2019s case, turned out to be nothing more than a\nJava programming class. Imagine being thrown into the morass of Java \u2013 classes,\nnamespaces, libraries, variables, debugging, IDEs \u2013 with no understanding of\nwhat the heck is actually going on in the guts of the computer itself! <\/p>\n\n\n\n<p>Completely the wrong approach!  Guaranteed to confuse the hell out of a young mind! <\/p>\n\n\n\n<p>As accidental as it\nwas, I highly recommend my approach to learning the art of programming. Teach\nkids the <em>logic <\/em>underpinning all of computing first. By developing a deep\nunderstanding of what\u2019s actually going on at the digital logic level you\ndevelop an intuition of what\u2019s going on, which makes <em>so <\/em>much easier to\nwrite code and to figure out what\u2019s going wrong when it breaks. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/Faucet.png\" alt=\"\" class=\"wp-image-81\" width=\"142\" height=\"121\" srcset=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/Faucet.png 349w, http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/Faucet-300x255.png 300w\" sizes=\"auto, (max-width: 142px) 100vw, 142px\" \/><\/figure><\/div>\n\n\n\n<p>When I talk about how\ncomputers work, I start with a faucet (transistor) and tell people if you get how\nit works, you understand how computers work. <\/p>\n\n\n\n<div class=\"wp-block-image\"><figure class=\"alignright is-resized\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/FaucetAnd.png\" alt=\"\" class=\"wp-image-82\" width=\"232\" height=\"176\" srcset=\"http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/FaucetAnd.png 469w, http:\/\/www.barrybriggs.com\/blog\/wp-content\/uploads\/2021\/03\/FaucetAnd-300x228.png 300w\" sizes=\"auto, (max-width: 232px) 100vw, 232px\" \/><\/figure><\/div>\n\n\n\n<p>String a couple of faucets together and you get an AND gate. You get the idea. And so on and so on. <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Anyway \u2026<\/h2>\n\n\n\n<p>That\u2019s how I got started. Shortly after my introduction to Digital Design I wound up taking (more formal) courses at George Washington University and Johns Hopkins (again courtesy of the US government) and not long thereafter this English major (!) found himself programming mainframe OS code for NASA (believe it or not). <\/p>\n\n\n\n<p>Where I learned some very important lessons about coding.\nThat\u2019s for next time. Stay tuned!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Barry Briggs I recently experienced the completely horrifying realization that I\u2019ve been writing code for half a century. It occurred to me that over the years I\u2019ve actually learned some stuff possibly worth passing on, so this article is first in an occasional series. I\u2019ve had the privilege (and it has been a true privilege!) &hellip; <\/p>\n<p class=\"link-more\"><a href=\"http:\/\/www.barrybriggs.com\/blog\/programming\/i-learned-about-programming-from-that-first-in-a-series\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;I Learned About Programming from That: First in a Series&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"episode_type":"","audio_file":"","cover_image":"","cover_image_id":"","duration":"","filesize":"","date_recorded":"","explicit":"","block":"","filesize_raw":"","footnotes":""},"categories":[9],"tags":[10],"class_list":["post-78","post","type-post","status-publish","format-standard","hentry","category-programming","tag-technical-computer-programming"],"_links":{"self":[{"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/posts\/78","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/comments?post=78"}],"version-history":[{"count":6,"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/posts\/78\/revisions"}],"predecessor-version":[{"id":88,"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/posts\/78\/revisions\/88"}],"wp:attachment":[{"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/media?parent=78"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/categories?post=78"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.barrybriggs.com\/blog\/wp-json\/wp\/v2\/tags?post=78"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}