|
|
|
|
|
by PontifexMinimus
657 days ago
|
|
> the language isn't an abstraction of the hardware Programming languages were designed to do useful stuff. They can't do this without hardware. There are always concerns of practicality. > as if this were some kind of computational atomism NAND gates are computationally atomic, IMO, since to go a level below them you get to the level of physical processes (e.g. electronics) that implement them. |
|
Programming languages are formalisms, and formalisms predate machines that simulate them, even if programming languages only really took off with machinery able to simulate them. You can simulate a programming language entirely with pen and paper if you wanted (tedious, but possible; the lambda calculus was entirely theoretical when when conceived). Regardless, while the utility of programming languages is related to there being machines that can simulate them, the distinction remains.
> NAND gates are computationally atomic
They're an implementation detail of the hardware being used. There is no necessarily relation between a language and a NAND gate. It is not as if, by dissecting a language, you will discover a bunch of NAND gates bounding around underneath. A language doesn't reduce to NAND gate operations. It just so happens that NAND gates are incredibly useful for implementation and simulation. You can implement a fully mechanical computer, or a water computer, if you wanted, even if it isn't very practical.
Software is a mental construct that hardware can simulate.