Hacker News

Top stories

Live mirror
30 storiesupdated just nowView source snapshot
  1. Jemalloc 5.4.0(github.com/jemalloc ↗)
    36comments
  2. The scourge of x86 emulation(fex-emu.com ↗)
    20comments
  3. Astra for Law(openai.com ↗)
    521comments
  4. Bonsai 2 27B: Near-Lossless Compression in a 9x Smaller Footprint(prismml.com ↗)
    127comments
  5. Bend – A language that blocks AI mistakes via proof, on CPU and GPU(bend-lang.com ↗)
    215comments
  6. Qwen 3.8 Omni Flash(qwen.ai ↗)
    78comments
  7. When the fractional part of a float fixes your shader(crocidb.com ↗)
    1comments
  8. Hister: A private search engine for the pages you visit and the files you keep(github.com/asciimoo ↗)
    163comments
  9. Pre-Greek: The lost language hidden within Ancient Greek(linguisticdiscovery.com ↗)
    33comments
  10. Wax motor(wikipedia.org ↗)
    69comments
  11. Fujitsu launches made-in-Japan next-generation CPU FUJITSU-MONAKA(global.fujitsu ↗)
    227comments
  12. A heap overflow and SSO misconfiguration to compromise OpenAI internal repos(hacktron.ai ↗)
    145comments
  13. Shapelearn Qwen 3.8 27B (13.1 GB VRAM)(byteshape.com ↗)
    7comments
  14. How to Write with an LLM(sockpuppet.org ↗)
    92comments
  15. Ask A Monk – A digital wilderness for thoughts with no immediate answer(askamonk.online ↗)
    23comments
  16. Why Does the Universe Expand?(cosmicave.org ↗)
    50comments
  17. Flet 1.0 – Build cross-platform apps in Python(flet.dev ↗)
    56comments
  18. Telstra outage: The night a network decided the year was 2006(netnod.se ↗)
    23comments
  19. Diplodocus, Long Thought Exclusively American, Turns Up in Spain(sci.news ↗)
    37comments
  20. Speeding up gearhash on ARM64(sam.dev ↗)
    discuss
  21. Why I didn’t sign the Fields medallists’ letter(gowers.wordpress.com ↗)
    366comments
  22. Apple detectives solved mystery of ancient tree and rewrote the history of fruit(scientificamerican.com ↗)
    9comments
  23. Fixing an NZXT Signal 4K30 part 2: the green/pink video bug(downtowndougbrown.com ↗)
    10comments
  24. CrowdSec Source Code Leak(crowdsec.net ↗)
    48comments
  25. The most important product decision is what you don't build(liamnugent.me ↗)
    36comments
  26. How do we prevent mathemathics from devolving into the Medieval Era of secrecy?(mathoverflow.net ↗)
    105comments
  27. Show HN: Snapdrop: Instantly share files between devices. No setup, no signup(snapdrop.me ↗)
    34comments
  28. Infinite-Parameter LLMs: Generating and Adapting Weights from Live Data(arxiv.org ↗)
    39comments
  29. How Uber Protects Against Retry Storms(uber.com ↗)
    41comments
  30. Khipu (Quipu) Field Guide(khipufieldguide.com ↗)
    discuss

Programming as Theory Building (1985) [pdf]

117 pointsby 7y agopages.cs.wisc.edu
11 comments
7y agoHN ↗

The last paragraph:

    Documentation cannot--and so need
    not--say everything. Its purpose is
    to help the next programmer build an
    accurate theory about the system.
7y agoHN ↗

I keep sending copies of this paper to numerous colleagues. AFAIK almost none of them finished (or even started) reading it. I’m at a loss to explain why, since it is such a deeply insightful paper.

7y agoHN ↗

Yes, but this paper is so important, yet not as well known as it should be, that I feel it is right it resurfaces every few years here.

Everyone involved in software development should read and understand it!

7y agoHN ↗

Often times on HN, people provide links to previous postings merely so others can reference the previous discussions. It's generally not meant to be a call out of bad behavior.

7y agoHN ↗

Strange article - essentially comes down to "If you need to know, ask, because no one understands - or probably even reads - documentation anyway."

It's not obvious how thinking about programming as theory building will help with any part of this. The real problem seems to be poor communication between projects and developer groups, with the implication that any self-guided learning approach can't possibly work because it's impossible to communicate the "why" of code without having someone who does understand it explain it to you.

It's an interesting point, and in some ways explains a lot. But I see no reason to think that "theory building" - which really means teaching domain expertise external to the code - is a practical solution in most projects.

7y agoHN ↗

I really liked the article. I think the idea is fundamental. It sheds light on the value of things like trying to retain staff and allowing them to become experts on a piece of code. It explains why Brook's Law ("adding human resources to a late software project makes it later") is true.

7y agoHN ↗

That seems like a strange summary. A better one:

Everyone builds models about the world around them (Naur used "Theory" instead of "Model" but they're the same here). Not all models are as accurate as others, though they may be sufficient for many situations. The developers of a system (most likely) have the best model of how the system operates and is constructed. Operators have a separate model. Maintainers have a third model. By separating the initial developers, operators, and maintainers, and reducing communication to, primarily, the exchange of programming notation and documentation, three different models (at least) will be produced. Incorrect models lead to incorrect usage and incorrect maintenance activities.

If your programs are short-lived or very simple, this paper is of little utility to you. But if your programs are expected to live for a decade or more, or are very complex, the ideas here are more useful, probably critical to the longterm success of your enterprise.

I work (or have worked) on systems that were developed over 30 years ago. A lot of knowledge has been lost, and a lot of wheels get reinvented. Or components of the system go underutilized, or misused because of misunderstandings of how the system functions and was designed. The more successful projects have had people working on or with them for 10+ years. Without them, program modifications have usually been small (large changes were seen as untenable), complete rewrites (because no one understood it), or failures (long delays, maybe a working product at the end, often with one or more rewrites along the way).

7y agoHN ↗

Thank you for sharing this!

In my opinion, this is spot on and an important insight into programming.

The validity of this view of programming is particularly evident when using a logic programming language like Prolog or Mercury: In this case, the programmers' task is to describe what holds, and the clauses that constitute the program and their semantic consequences are literally the theory of interest.