|
|
|
|
|
by runarberg
24 days ago
|
|
Natural language is full of ambiguities and redundancies which makes it a poor fit for a programming language, which is why it is never used as such. You don’t need a precise definition of a term to know what a thing is and isn’t (Wittgenstein has taught us that much at least). We just need to know that programming languages are used to express an executable computer programs (usually by translating to simple machine instructions) and that a natural language has never been used in this way in a significant manner. A case in point. I bet you can‘t find a definition for a fish which includes cods and sting-rays, but excludes dolphins and shrimp. And similarly the IAU were unable to come up with a definition of a planet which included Pluto and Mercury but excluded Ceres and Sedna. |
|
I mean, a quarter century ago Dijkstra argued your point compellingly, and he was right back then. If you read his "On the foolishness of “natural language programming”" (1978) you'll find that all of his most compelling arguments are gone now. Things have changed, and the machines can now largely cope with the ambiguity of language as well as the average human being can.
Since human language is the original source for the specifications we turn into formal code most of the time anyhow, we're really just asking if that original specification the programmers turn into formal symbolism is a form of code or not, and whether a good spec is equivalent to good code. I think it's difficult to argue that it's not, especially given that we now have these handy Natural Language to Formal Symbolism compilers.
> We just need to know that programming languages are used to express an executable computer programs (usually by translating to simple machine instructions) and that a natural language has never been used in this way in a significant manner.
I did that like 30 times today. Maybe it wasn't in the past, today it is. The path is now Specifications->LLM->Formal Symbolism->Machine Code, it used to be Specifications->Human->Formal Symbolism->Machine Code. The inputs and outputs are the same, and I would argue that the process is still "programming" regardless of syntactic games with semantics.
Eventually we'll find a more efficient version of that formal symbolism and stop using code designed to be human readable at all. Still nothing will really changed besides the input method.