logoalt Hacker News

Dijkstra On the foolishness of "natural language programming"

448 pointsby nimbleplum4004/03/2025275 commentsview on HN

Comments

alexvitkov04/03/2025

Computers do what you tell them to, not what you want them to. This is naturally infuriating, as when a computer doesn't do what you want, it means you've failed to express your vague idea in concrete terms.

LLMs in the most general case do neither what you tell them, nor what you want them to. This, surprisingly, can be less infuriating, as now it feels like you have another actor to blame - even though an LLM is still mostly deterministic, and you can get a pretty good idea of what quality of response you can expect for a given prompt.

nsonha04/03/2025

Is this necessarily a stance against LLM? LLMs can generate real code, ideally functional, strict code instead of the slop they do these days.

johnwatson1121804/03/2025

Why did mathematicians invent new symbols? Imagine if all of algebra, calculus, linear algebra looked like those word problems from antiquity? Natural language is not good for describing systems, symbolic forms are more compressed and be considered a kind of technology in its own right.

atomicnature04/03/2025

LLMs are usually used to describe goals or to provide feedback (correction or encouragement) towards its implementation.

Programming is about iteratively expressing a path towards satisfying said goals.

What LLMs are doing now is converting "requirements" into "formalizations".

I don't think Djikstra is wrong in saying - that performing programming in plain-language is a pretty weird idea.

We want to concretize ideas in formalisms. But that's not what any human (including Djikstra) starts with... you start with some sort of goal, some sort of need and requirements.

LLMs merely reduce the time/effort required to go from goals -> formalism.

TLDR: Requirements != Implementation

RazorDev04/03/2025

[flagged]

jumploops04/03/2025

> I suspect that machines to be programmed in our native tongues —be it Dutch, English, American, French, German, or Swahili— are as damned difficult to make as they would be to use.

Seeing as transformers are relatively simple to implement…

It stands to reason he was, in some sense, right. LLMs are damn easy to use.

show 1 reply
musesum04/03/2025

Personal context is tacit experience. Cultural context is aggregate.

Wittgenstein stated that the differences between personal and cultural language makes it impossible to agree on anything foundational to philosophy.

Godel did something similar to discrete structures by hacking self reference -- a kind of recursive self reference with no exit state.

I think pair programming with an LLM is interesting. You get to compare personal context with aggregate context. Plus, the external feedback helps me break out of excessive personal self reference.

show 1 reply