Hacker News new | ask | show | jobs
by runarberg 18 days ago
English is not a programming language though. I don’t understand how such an obviously false sentence can be so persistent.
2 comments

I'm not even sure what you mean. Of course it is.

A programming language is a formal intermediate language for turning human comprehensible instructions into machine instructions by means of an interpreter or compiler. We've now allowed that intermediate language to be English, because that's preferable to most people, and the "compiler" has become very complicated indeed as a result of that.

You still have to be able to express what it is you want in a way the machine can understand, it's just both simpler and less deterministic now.

This. Just because an llm can translate any language into a programming language doesn’t suddenly make all languages programming languages. Until I can ‘brew install englishc’ and so on, it’s not a f**ing programming language.
Can you define programing language in a way that includes all the current programming languages and excludes English? I kind of doubt it unless you just define it as "anything that isn't a human language", which would be silly.
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.

> 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.

> 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.