{"id":7244,"date":"2016-09-27T01:28:36","date_gmt":"2016-09-27T05:28:36","guid":{"rendered":"http:\/\/esr.ibiblio.org\/?p=7244"},"modified":"2016-09-29T17:18:02","modified_gmt":"2016-09-29T21:18:02","slug":"twenty-years-after","status":"publish","type":"post","link":"http:\/\/esr.ibiblio.org\/?p=7244","title":{"rendered":"Twenty years after"},"content":{"rendered":"<p>I just shipped what was probably the silliest and most pointless software release of my career. But hey, it&#8217;s the reference implementation of a language and I&#8217;m funny that way.<\/p>\n<p>Because I write compilers for fun, I have a standing offer out to reimplement any weird old language for which I am sent a sufficiently detailed softcopy spec.  (I had to specify softcopy because scanning and typo-correcting hardcopy is too much work.)<\/p>\n<p>In the quarter-century this offer has been active, I have (re) implemented at least the following: INTERCAL, Michigan Algorithmic Decoder,  and a pair of obscure 1960s teaching languages called CORC and CUPL, and an obscure computer-aided-instruction language called <a href=\"https:\/\/en.wikipedia.org\/wiki\/PILOT\">Pilot<\/a>. <\/p>\n<p>Pilot&#8230;that one was special.  Not in a good way, alas.  I don&#8217;t know where I bumped into a friend of the language&#8217;s implementor, but it was in 1991 when he had just succeeded in getting IEEE to issue a standard for it &#8211; IEEE Std 1154-1991.  He gave me a copy of the standard.<\/p>\n<p>I should have been clued in by the fact that he also gave me an errata sheet not much <em>shorter<\/em> than the standard.  But the full horror did not come home to me until I sat down and had a good look at both documents &#8211; and, friends, PILOT&#8217;s design was exceeded in awfulness only by the sloppiness and vagueness of its standard. Even after the corrections.<\/p>\n<p><!--more--><\/p>\n<p>But I had promised to do a reference implementation, and I did.  Delivered it to the inventor&#8217;s friend.  He couldn&#8217;t get it to work &#8211; some problem with the version of YACC he was using, if I recall correctly.  It wasn&#8217;t something I could fix remotely, and I left it to him to figure out, being pretty disgusted with the project.  I don&#8217;t know if he ever did.<\/p>\n<p>I did fix a couple of minor bugs in my masters; I even shipped occasional releases until late 1996.  Then&#8230;I let the code molder in a corner for twenty years.<\/p>\n<p>But these things have a way of coming back on you.  I got a set of fixes recently from one Frank J. Lhota, forward-porting it to use modern Bison and Flex versions. Dear sweet fornicating Goddess, that meant I&#8217;d have to&#8230;issue another release.  Because it&#8217;s bad form to let fix patches drop on the floor <em>pour discourager les autres<\/em>.<\/p>\n<p>So <a href=\"http:\/\/www.catb.org\/esr\/ieee-pilot\/\">here it is<\/a>.  It does have one point of mild interest; the implementation is both an interpreter and a compiler (it&#8217;s a floor wax! It&#8217;s a dessert topping!) for the language &#8211; that is, it can either interpret the parsed syntax tree or generate and compile corresponding C code.<\/p>\n<p>I devoutly hope I never again implement a language design as botched as Pilot.  INTERCAL was <em>supposed<\/em> to be a joke&#8230;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I just shipped what was probably the silliest and most pointless software release of my career. But hey, it&#8217;s the reference implementation of a language and I&#8217;m funny that way. Because I write compilers for fun, I have a standing offer out to reimplement any weird old language for which I am sent a sufficiently&hellip; <a class=\"more-link\" href=\"http:\/\/esr.ibiblio.org\/?p=7244\">Continue reading <span class=\"screen-reader-text\">Twenty years after<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[13],"tags":[],"class_list":["post-7244","post","type-post","status-publish","format-standard","hentry","category-software","entry"],"_links":{"self":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/7244","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=7244"}],"version-history":[{"count":6,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/7244\/revisions"}],"predecessor-version":[{"id":7250,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=\/wp\/v2\/posts\/7244\/revisions\/7250"}],"wp:attachment":[{"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=7244"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=7244"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/esr.ibiblio.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=7244"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}