Comment by godelski
20 days ago
> it needs to be "build the right things right", vs "build things right and then discover if they are the right things"
I still think this is a bad comparison and I hoped my prior comment would handle this. Frankly, you're always going to end up in the second situation[0] simply because of 2 hard truths. 1) you're not omniscient and 2) even if you were, the environment isn't static.
> But considering that AI will more and more "build things right" by default
And this is something I don't believe. I say a lot more here[1] but you can skip my entire comment and just read what Dijkstra has to say himself. I dislike that we often pigeonhole this LLM coding conversation into one about a deterministic vs probabilistic language. Really the reason I'm not in favor of LLMs is because I'm not in favor of natural language programming[2]. The reason I'm not in favor of natural language programming has nothing to do with its probabilistic nature and everything to do with its lack of precision[3].
I'm with Dijkstra because, like him, I believe we invented symbolic formalism for a reason. Like him, I believe that abstraction is incredibly useful and powerful, but it is about the right abstraction for the job.
[0] https://www.mathsisfun.com/sets/injective-surjective-bijecti...
> The reason I'm not in favor of natural language programming has nothing to do with its probabilistic nature and everything to do with its lack of precision
Yeah, even if they're made to be 100% deterministic, you've now got a programming language whose rules are deterministic, but hard to understand. You've effectively pinned the meaning of the natural language in some way, but not a way that anyone can effectively learn, and one that doesn't necessarily match their understanding of the actual natural language.
And it's weird that this even needs to be argued given that our long explanations are needed to even convey fairly simple concepts. Not to mention that it still relies upon correct interpretation.
The result of natural language programming is either an extremely limited programming language or an extremely verbose one (again, look at law). Presumably it'll result in both.
It's a nice idea but ignores the reason we invented symbolic languages in the first place. They were invented after natural language. It's not like code is some vestigial language raiment. We're trying to replace it because it's hard and annoying. But I'm certain that's mainly due to the level of abstraction we're trying to work with more than due to the language we're using