proomt

Search

Search posts, papers, and topics

Hall of Fame

Hall of FameDonald E. Knuth1974130 min readpaperadvanced

Structured Programming with go to Statements

Summary

Knuth's 1974 paper examines the `goto` statement controversy in structured programming, arguing for a balanced view rather than outright abolition. It explores how improved language constructs can reduce `goto` usage, while also considering cases where `goto` or equivalent constructs might be necessary for efficiency or clarity in transformed code.

  • Outright abolition of `goto` can lead to less efficient code if compilers don't optimize structured constructs well.
  • Improved language features for iterations and error handling can naturally reduce the need for `goto` statements.
  • Program design can involve transforming readable, correct code into efficient, potentially less readable code.
  • The debate around `goto` is analogous to historical debates in mathematics regarding foundational principles.

This foundational paper offers a nuanced perspective on programming language design and optimization trade-offs that remains relevant for understanding control flow and code structure.

9/10

Related reading

  1. Go To Statement Considered Harmful

    Edsger Dijkstra argues that the `go to` statement should be abolished from higher-level programming languages due to its detrimental effect on program quality and readability. He posits that `go to` makes it difficult to reason about program state and progress, unlike structured control flow which provides clear, manageable execution coordinates.

    Hall of Fameutexas.edu7 min
  2. The Next 700 Programming Languages

    Landin proposes ISWIM as a family of programming languages, separating physical syntax, logical syntax, abstract structure, and applicative expressions. The paper argues that language design should focus on primitive abstractions and expressive ‘where‑clauses’ rather than surface syntax.

    Hall of Famecmu.edu55 minpaperHN6
  3. Growing a Language

    Guy Steele argues that programming languages should be designed to grow, starting from a small core and providing mechanisms for users to extend them. He illustrates this with historical examples and shows why a static, fully‑specified language is impractical.

    Hall of Famevirginia.edu43 minHN3
  4. Constraint Decay: The Fragility of LLM Agents in Backend Code Generation

    A systematic evaluation of LLM agents generating multi‑file backend code shows a sharp drop in correctness when structural constraints (framework conventions, ORM usage, API contracts) are added. Across 100 tasks in 8 Python web frameworks, assertion pass rates fall ~27 points, with data‑layer bugs (bad queries, ORM violations) driving most failures. Mid‑size models cope with minimal frameworks (…

    arXiv cs.SE (Software Engineering)arxiv.org1 minpaperHN287197
  5. Article: Your Next DSL Author Is a Language Model

    Typed Domain Grounding (TDG) embeds a DSL inside a mainstream language the LLM already knows (e.g., Kotlin) and uses the host compiler as an oracle. The author describes five building blocks—embedding, choosing a host language with high training‑data frequency, compiler‑driven type safety, a generate‑compile‑repair loop, and an on‑demand teaching tool—and shows measured results from kUML, a Kotli…

    InfoQinfoq.com18 min