One more week to the Logic for Programmers Food Drive

Hillel Wayne — Computer Things Events

Summary

Hillel Wayne promotes a fundraiser for the Greater Chicago Food Depository with a discount on his book 'Logic for Programmers', and shares technical notes on structured concurrency and the history of goto statements.

<p>A couple of weeks ago I started a fundraiser for the <a href="https://www.chicagosfoodbank.org/" target="_blank">Greater Chicago Food Depository</a>: get <a href="https://leanpub.com/logic/c/feedchicago" target="_blank">Logic for Programmers 50% off</a> and all the royalties will go to charity.<sup id="fnref:royalties"><a class="footnote-ref" href="#fn:royalties">1</a></sup> Since then, we've raised a bit over $1600. Y'all are great! </p> <p>The fundraiser is going on until the end of November, so you still have one more week to get the book real cheap.</p> <p>I feel a bit weird about doing two newsletter adverts without raw content, so here's a teaser from a old project I really need to get back to. <a href="https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/#what-is-a-goto-statement-anyway" target="_blank">Notes on structured concurrency</a> argues that old languages had a "old-testament fire-and-brimstone <code>goto</code>" that could send control flow anywhere, like from the body of one function into the body of another function. This "wild goto", the article claims, what Dijkstra was railing against in <a href="https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf" target="_blank">Go To Statement Considered Harmful</a>, and that modern goto statements are much more limited, "tame" if you will, and wouldn't invoke Dijkstra's ire.</p> <p>I've shared this historical fact about Dijkstra many times, but recently two <a href="https://without.boats/blog/" target="_blank">separate</a> <a href="https://matklad.github.io/" target="_blank">people</a> have told me it doesn't makes sense: Dijkstra used ALGOL-60, which <em>already had</em> tame gotos. All of the problems he raises with <code>goto</code> hold even for tame ones, none are exclusive to wild gotos. So </p> <p>This got me looking to see which languages, if any, ever had the wild goto. I define this as any goto which lets you jump from outside to into a loop or function scope. Turns out, FORTRAN had tame gotos from the start, BASIC has wild gotos, and COBOL is a nonsense language intentionally designed to horrify me. I mean, look at this:</p> <p><img alt="The COBOL ALTER statement, which redefines a goto target" class="newsletter-image" src="https://assets.buttondown.email/images/e4dfa0fd-fdd5-4fef-b813-4053a183be2f.png?w=960&amp;fit=max"/></p> <p>The COBOL ALTER statement <em>changes a <code>goto</code>'s target at runtime</em>. </p> <p>(Early COBOL has tame gotos but only on a technicality: there are no nested scopes in COBOL so no jumping from outside and into a nested scope.)</p> <p>Anyway I need to write up the full story (and complain about COBOL more) but this is pretty neat! Reminder, <a href="https://leanpub.com/logic/c/feedchicago" target="_blank">fundraiser here</a>. Let's get it to 2k.</p> <div class="footnote"> <hr/> <ol> <li id="fn:royalties"> <p>Royalties are 80% so if you already have the book you get a bit more bang for your buck by donating to the GCFD directly <a class="footnote-backref" href="#fnref:royalties" title="Jump back to footnote 1 in the text">↩</a></p> </li> </ol> </div>
Original Article
View Cached Full Text

Cached at: 05/16/26, 03:41 AM

# One more week to the Logic for Programmers Food Drive Source: [https://buttondown.com/hillelwayne/archive/one-more-week-to-the-logic-for-programmers-food](https://buttondown.com/hillelwayne/archive/one-more-week-to-the-logic-for-programmers-food) A couple of weeks ago I started a fundraiser for the[Greater Chicago Food Depository](https://www.chicagosfoodbank.org/): get[Logic for Programmers 50% off](https://leanpub.com/logic/c/feedchicago)and all the royalties will go to charity\.[1](https://buttondown.com/hillelwayne/archive/one-more-week-to-the-logic-for-programmers-food#fn:royalties)Since then, we've raised a bit over $1600\. Y'all are great\! The fundraiser is going on until the end of November, so you still have one more week to get the book real cheap\. I feel a bit weird about doing two newsletter adverts without raw content, so here's a teaser from a old project I really need to get back to\.[Notes on structured concurrency](https://vorpus.org/blog/notes-on-structured-concurrency-or-go-statement-considered-harmful/#what-is-a-goto-statement-anyway)argues that old languages had a "old\-testament fire\-and\-brimstone`goto`" that could send control flow anywhere, like from the body of one function into the body of another function\. This "wild goto", the article claims, what Dijkstra was railing against in[Go To Statement Considered Harmful](https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf), and that modern goto statements are much more limited, "tame" if you will, and wouldn't invoke Dijkstra's ire\. I've shared this historical fact about Dijkstra many times, but recently two[separate](https://without.boats/blog/)[people](https://matklad.github.io/)have told me it doesn't makes sense: Dijkstra used ALGOL\-60, which*already had*tame gotos\. All of the problems he raises with`goto`hold even for tame ones, none are exclusive to wild gotos\. So This got me looking to see which languages, if any, ever had the wild goto\. I define this as any goto which lets you jump from outside to into a loop or function scope\. Turns out, FORTRAN had tame gotos from the start, BASIC has wild gotos, and COBOL is a nonsense language intentionally designed to horrify me\. I mean, look at this: ![The COBOL ALTER statement, which redefines a goto target](https://assets.buttondown.email/images/e4dfa0fd-fdd5-4fef-b813-4053a183be2f.png?w=960&fit=max) The COBOL ALTER statement*changes a`goto`'s target at runtime*\. \(Early COBOL has tame gotos but only on a technicality: there are no nested scopes in COBOL so no jumping from outside and into a nested scope\.\) Anyway I need to write up the full story \(and complain about COBOL more\) but this is pretty neat\! Reminder,[fundraiser here](https://leanpub.com/logic/c/feedchicago)\. Let's get it to 2k\.

Similar Articles

Logic for Programmers v0.15, Livecoding

Hillel Wayne — Computer Things

Hillel Wayne announces version 0.15 release candidate of his book 'Logic for Programmers', and highlights a livecoding meetup featuring Strudel and CLAVIER-36 for music programming.

Logic for Programmers extra credits

Hillel Wayne — Computer Things

Hillel Wayne announces supplementary chapters for his book 'Logic for Programmers', covering topics like concurrent processes, first-order logic, Liskov's history rule, and orders.

Logic for Programmers is Done

Hillel Wayne — Computer Things

Hillel Wayne announces the completion and 1.0 release of his book 'Logic for Programmers', a guide to using logic in software development, now available in print and as a free update for early ebook buyers.

New Logic for Programmers (and the future of this newsletter)

Hillel Wayne — Computer Things

Hillel Wayne announces version 0.14 of his book 'Logic for Programmers' and that he will join Antithesis as a developer educator, with plans to continue his newsletter but with a shifted focus and possibly lower frequency.

Logic for Programmers New Release and Next Steps

Hillel Wayne — Computer Things

Hillel Wayne announces the v0.13 release of his book 'Logic for Programmers', with significant rewrites and new content, and outlines next steps toward a print edition.