Remix.run Logo
godelski a day ago

Let's just look at Dijkstra's On the Foolishness of "Natural Language Programming". It really does a good job at explaining why natural language programming (and thus, Vibe Coding) is a dead end. It serves as a good reminder that we developed the languages of Math and Programming for a reason. The pedantic nature is a feature, not a flaw. It is because in programming (and math) we are dealing with high levels of abstraction constantly and thus ambiguity compounds. Isn't this something we learn early on as programmers? That a computer does exactly what you tell it to, not what you intend to tell it to? Think about how that phrase extends when we incorporate LLM Coding Agents.

  | The virtue of formal texts is that their manipulations, in order to be legitimate, need to satisfy only a few simple rules; they are, when you come to think of it, an amazingly effective tool for ruling out all sorts of nonsense that, when we use our native tongues, are almost impossible to avoid.
  - Dijkstra
All of you have experienced the ambiguity and annoyances of natural language. Have you ever:

  - Had a boss give you confusing instructions?
  - Argued with someone only to find you agree?
  - Talked with someone and one of you doesn't actually understand the other?
    - Talked with someone and the other person seems batshit insane but they also seem to have avoided a mental asylum?
  - Use different words to describe the same thing?
    - When standing next to someone and looking at the same thing?
  - Adapted your message so you "talk to your audience"?
    - Ever read/wrote something on the internet? (where "everyone" is the audience)
Congrats, you have experienced the frustrations and limitations of natural language. Natural language is incredibly powerful and the ambiguity is a feature and a flaw, just like how in formal languages the precision is both a feature and a flaw. I mean it can take an incredible amount of work to say even very simple and obvious things with formal languages[1], but the ambiguity disappears[2].

Vibe Coding has its uses and I'm sure that'll expand, but the idea of it replacing domain experts is outright laughable. You can't get it to resolve ambiguity if you aren't aware of the ambiguity. If you've ever argued with the LLM take a step back and ask yourself, is there ambiguity? It'll help you resolve the problem and make you recognize the limits. I mean just look at the legal system, that is probably one of the most serious efforts to create formalization in natural language and we still need lawyers and judges to sit around and argue all day about all the ambiguity that remains.

I seriously can't comprehend how on a site who's primary users are programmers this is an argument. If we somehow missed this in our education (formal or self) then how do we not intuit it from our everyday interactions?

[0] https://www.cs.utexas.edu/~EWD/transcriptions/EWD06xx/EWD667...

[1] https://en.wikipedia.org/wiki/Principia_Mathematica

[2] Most programming languages are some hybrid variant. e.g. Python uses duck typing: if it looks like a float, operates like a float, and works as a float, then it is probably a float. Or another example even is C, what used to be called a "high level programming language" (so is Python a celestial language?). Give up some precision/lack of ambiguity for ease.

falcor84 a day ago | parent | next [-]

> Vibe Coding has its uses and I'm sure that'll expand, but the idea of it replacing domain experts is outright laughable.

I don't think that's the argument. The argument I'm seeing most is that most of us SWEs will become obsolete once the agentic tools become good enough to allow domain experts to fully iterate on solutions on their own.

shalmanese 19 hours ago | parent | next [-]

> The argument I'm seeing most is that most of us SWEs will become obsolete once the agentic tools become good enough to allow domain experts to fully iterate on solutions on their own.

That’s been the argument since the 5PL movement in the 80s. What we discover is that domain expertise an articulation of domain expertise into systems are two orthogonal skills that occasionally develop in the same person but, in general, requires distinct specialization.

rsrsrs86 15 hours ago | parent [-]

Yes, 4GL and 5GL failed, but authoring Access applications should be a breeze now.

godelski a day ago | parent | prev [-]

  > The argument I'm seeing most is that most of us SWEs will become obsolete
That is equivalent to "replacing domain experts", or at least was my intent. But language is ambiguous lol. I do think programmers are domain experts. There are also different kinds of domain experts but I very much doubt we'll get rid of SWEs.

Though my big concern right now is that we'll get rid of juniors and maybe even mid levels. There's definitely a push for that and incentives from an economic point of view. But it will be disastrous for the tech industry if this happens. It kills the pipeline. There can be no wizards without noobs. So we have a real life tragedy of the commons situation staring us in the face. I'm pretty sure we know what choices will be made, but I hope we can recognize that there's going to need to be cooperation to solve this least we all suffer.

selridge 21 hours ago | parent | prev [-]

Dijkstra also said no one should be debugging and yet here we are.

He's not wrong about the problems of natural language YET HERE ARE. That would, I think, cause a sensible engineer to start poking at the predicate instead of announcing that the foregone conclusion is near.

We should take seriously the possibility that this isn't going to be in a retrenchment which bestows a nice little atta boy sticker on all the folks who said I told you so.

godelski 18 hours ago | parent [-]

  > Dijkstra also said no one should be debugging
Given how you're implying things, you're grossly misrepresenting what he said. You've either been misled or misread. He was advocating for the adoption and development of provably correct programming.

Interestingly I think his "gospel" is only more meaningful today.

  | Apparently, many programmers derive the major part of their intellectual satisfaction and professional excitement from not quite understanding what they are doing. In this streamlined age, one of our most under-nourished psychological needs is the craving for Black Magic, and apparently the automatic computer can satisfy this need for the professional software engineers, who are secretly enthralled by the gigantic risks they take in their daring irresponsibility. They revel in the puzzles posed by the task of debugging. They defend —by appealing to all sorts of supposed Laws of Nature— the right of existence of their program bugs, because they are so attached to them: without the bugs, they feel, programming would no longer be what is used to be! (In the latter feeling I think —if I may say so— that they are quite correct.)

  | A program can be regarded as an (abstract) mechanism embodying as such the design of all computations that can possibly be evoked by it. How do we convince ourselves that this design is correct, i.e. that all these computations will display the desired properties? A naive answer to this question is "Well, try them all.", but this answer is too naive, because even for a simple program on the fastest machine such an experiment is apt to take millions of years. So, exhaustive testing is absolutely out of the question.

  | But as long as we regard the mechanism as a black box, testing is the only thing we can do. The unescapable conclusion is that we cannot afford to regard the mechanism as a black box
I think it's worth reading in full

https://www.cs.utexas.edu/~EWD/transcriptions/EWD02xx/EWD288...

selridge 18 hours ago | parent [-]

>no one should be debugging

He literally said those exact words out loud from the audience during a job talk.

And yeah, the total aim and the reason why he might just blurt that out is because a lot of the frustration and esprit de corps of programming is held up in writing software that's more a guess about behavior than something provably correct. Perhaps we all ought to be writing provably correct software and never debugging as a result. We don't. But perhaps we ought to. We don't.

Is control via natural language a doomed effort? Perhaps, but I'd be cautious rather than confident about predicting that.

godelski 5 hours ago | parent [-]

  > He literally said those exact words out loud from the audience during a job talk.
Yes, I even provided the source...

Unfortunately despite being able to provide a summary I'm unable to actually read it for you. You'll actually need to read the whole thing and interpret it. You have a big leg up with my summary but being literate or not is up to you. As for me, I'm not going to argue with someone who chooses not to read

selridge 2 hours ago | parent [-]

I sincerely doubt you produced the source where he asked that question in the middle of someone else’s job talk.

Which is what I was referring to. I read what you wrote, pal. Did you read what I wrote?

godelski an hour ago | parent [-]

  > I sincerely doubt you produced the source
Either I did or didn't. What is not in question is that I provided a source.

  > I read what you wrote, pal.
Forgive me for not believing you. I linked a source and you made speculations about what was in it. If you can't bother to read that then why should I believe you read anything else? Reading requires more than saying the words aloud in your head. At least if you want to read above a 3rd grade level. Yes, I'm being mean, but if you don't have the patience to actually read the comment you're responding to you then you shouldn't expect anyone to have the patience to respond to your rude behavior with kindness.