All code *is* data. But **not all data is code**. For example, you can take a digital photo and the numbers represent light intensity across a 2D rectangle. Nobody would dispute that this is data but not code. Code is a special kind of data which _controls behaviour._ **... but it's not that simple.** Arguably the digital photo controls the behaviour of whatever compression/decompression software processes it, and of the motion of the printer parts if you print it out. So, wait, isn't controlling a printer _exactly the same_ as controlling a loom? Ha! Got you there! What is meant by "code" is context-dependent. It seems to have different meanings for different objects (a computer, a loom, a synthesiser). So here is my attempted definition. Code: * is data that expresses a series of steps* in a certain well-defined language * controls the behaviour of a (real or abstract) machine * has the capacity to dictate a nontrivial variety of behaviours, _relative to the capabilities of the machine._ So I would say **yes, a punched card contains code for a Jacquard loom**. A digital image is only data for a computer. For an old-fashioned dumb printer, a digital image might be called code, but for modern printers which have advanced configuration and job handling protocols and font loading and typesetting... an actual image to print would probably be considered "trivial" and thus data. <sub>*Code does not actually need to be sequential, but it has to express some kind of process. cf. [dataflow architectures][1], [lambda calculus][2]</sub> [1]: https://en.wikipedia.org/wiki/Dataflow_architecture [2]: https://en.wikipedia.org/wiki/Lambda_calculus