Barstool punctuation

« previous post | next post »

The most recent SMBC:

The mouseover title: "Later he finds his true calling being forgotten about at the end of lines of code."

The aftercomic:

For some background, see Geoff Nunberg's discussion of Jane Austen's use of semicolons ("Jane Austen: Missing the points", 11/17/2010), or my notes on semicolons in Ursula K. LeGuin vs. Ernest Hemingway ("Death before syntax?", 10/20/2014).


  1. Philip Taylor said,

    April 4, 2020 @ 6:46 am

    "forgotten about" ? Not by this former programmer (retired, but still very much at it). "Deliberately omitted" would be much closer to the truth in my case, whenever the syntax so permits. In Algol-68 (which I continue to regard as the standard by which all programming languages should be judged), the semi-colon was a separator (formally a "go on" token) rather than a terminator, and that is the way I continue to use it to this day. I find it infuriating when a language (e.g., C#) requires me to (e.g.) put a semi-colon before a closing brace, and in those cases I almost invariably fail to include it when first coding, only spotting the error once the compiler or run-time system has alerted me to the existence of a problem.

  2. Robot Therapist said,

    April 4, 2020 @ 7:36 am

    Philip, I notice you include a full stop at the end of your comment.

  3. Tim Finin said,

    April 4, 2020 @ 7:50 am

    Don't get me started! One of my pet peeves is seeing a presentation with a bullet point list of short phrases where all or some have a period at the end. I'm especially annoyed when I find that I've done it. :-(

  4. AntC said,

    April 4, 2020 @ 4:37 pm

    @Philip, gosh Algol-68 is recherche these days.

    If we want to go to ancient computing history, R.T. is correct to bring up full stops, the bane of coding in COBOL. The number of bugs I fixed by sprinkling or unsprinkling dots in nested IF statements, you wouldn't believe.

    BCPL allows semicolons to be omitted where at a line end. Haskell is indentation-aware such that outdenting a line relative to the ones above puts curly braces around those lines.

  5. Anthony said,

    April 4, 2020 @ 7:43 pm

    There are people and algorithms that emit ill-formed CSV files, as if "comma separated" means "comma terminated." My rule is: precede every item except the first with a comma.

  6. Gregory Kusnick said,

    April 4, 2020 @ 11:13 pm

    The justification for semicolons as terminators is straightforward: if all statements require semicolons, then they remain well-formed when moved to any position within a block. This is a great convenience when reorganizing code.

    Semicolons as separators means there's a different standard of well-formedness for the last statement than for other statements. This makes it more difficult to move code around freely and introduces gratuitous booby traps for the unwary. That's just bad language design.

  7. Philip Taylor said,

    April 5, 2020 @ 3:47 am

    I think that we will have to agree to disagree on your last point, Gregory ("[t]his makes it more difficult to move code around freely and introduces gratuitous booby traps for the unwary. That's just bad language design"), mainly because Language Log is a singularly inappropriate forum in which to discuss such matters.

    All I would note is that Algol-68 is a product of an era when (computer) language design was a matter of international concern involving the world's leading computer scientists, and an era when coding was simply the final step of a very rigorous and formal design process. The idea of "moving code around freely" would have been complete anathema to the likes of van Wijngaarden, Hoare, and especially to Dijkstra, who would simply have said that if the code had been in the right place in the beginning there would never have been any need to move it … And of course Dijkstra would also have said that "the unwary" had no business programming in the first place !

  8. Gregory Kusnick said,

    April 5, 2020 @ 12:49 pm

    Unfortunately the software world is populated by fallible human engineers, not by Laplacean intellects with the ability to visualize an entire system in line-by-line detail before ever setting fingers to keyboard. So it behooves us not to make their job more difficult than it needs to be by putting arbitrary stumbling blocks in their way.

    As for the propriety of discussing language design on Language Log, I'll let our hosts be the judge of that.

  9. Philip Taylor said,

    April 5, 2020 @ 1:26 pm

    I think I might argue the opposite case, Gregory — by "putting arbitrary stumbling blocks in their way" (which is not really how I would class the simple rule "use a semi-colon only to separate statements that are to be elaborated sequentially, never to terminate them"), natural selection might usefully winnow out those whom you have previously referred to as "the unwary", leaving programming to those who might make a rather better fist of it …

    Certainly (and to be more serious), languages such as Algol 68 were never intended to be even comprehensible by hoi polloi — indeed, the original Report on the Algorithmic Language ALGOL 68 and its successor Revised Report on the Algorithmic Language ALGOL 68 (both of which are alongside my keyboard as I type) were criticised quite vehemently by some eminent computer scientists at the time for being almost completely incomprehensible, a criticism with which this humble hack has a certain sympathy. Although, to be fair, I did find when teaching Algol 68 as a part of the computer science undergraduate syllabus in the mid 70's that the average computer science undergraduate took to the language like a duck to water once its true power (e.g., REF REF REF) had been demonstrated.

  10. Michele Sharik Pituley said,

    April 9, 2020 @ 1:55 pm

    I was trained as a "programmer" not a "coder", which means I was taught to think through the logic before ever setting hand to input device. Flowcharts are an incredible tool and I wish people used them more often!

    Disclaimer: My degree program was mostly COBOL, but I also studied C, RPG III, Pascal, Assembler, JCL, CICS, and various scripting languages. But the very first class in our program, a pre-requisite for any other language class, was "Programming Logic". Super valuable!

RSS feed for comments on this post