Hacker News new | ask | show | jobs
by mapontosevenths 21 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.

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.

1 comments

> I did that like 30 times today.

You did no such thing. You fed some text into a statistical machinery which was able to infer another text from it. The first text just so happens to be a natural language and the inferred text was a formalized programming language which the statistical model had had its weight tuned to produce.

Statistical inference is a completely different process then compilation. Inferring is a completely different verb from compiling. Two different verbs which mean different things.

If we take your logic and explore its implication, we can just as easily claim that a project manager writing JIRA ticket is programming, and that JIRA is a programming language. The project manager wrote a ticket in natural language which was picket up by a developer who translated it (by your defintion of translation) to a formal language which got compiled to machine instruction and executed by a computer. This is obviously silly. And as silly as you find my description, I find yours equally silly.