The core requirement for “programmability” is a machine whose behavior can be changed by altering symbolic instructions without rebuilding the machine.

The Banu Musa automatic flute player doesn’t meet this bar. The flute player was mechanically configured, not symbolically programmed. It had no conditional logic or flow control. No stored symbolic instructions.

To contrast, the Jacquard Loom used an externally stored instructions (punch cards). It allowed arbitrary-length instruction sequences, which is a primitive form of control flow.

Punchcards are also mechanically configured, not symbolically programmed. If you see huge semantical difference between a card with holes and a cylinder with pins or a cam with groves, please explain that difference. Or is the "arbitrary length" the main difference?

I'd imagine something that changes operation based purely on state (position of a dial, presence of a peg in a slot etc) conceptually being "symbolic". Punchcards are not it.

I used to have colleagues who literally learned to program on punched card machines. As in they wrote a program on paper in symbolic assembler, manually converted it to machine code, punched the machine code onto a card,and then carried the cards to the nearby university so that they could run their school homework program.

They would be amused by the idea that this wasn't computing.

Punched cards store bits. Bits can store symbols.

As a teen I first learned to program on a pdp-8 with a teletype terminal. Then moved on to mainframes - we wrote out the code on paper (lined in 80 columns), then punched the cards out and submitted the deck to be run. punch card machines were available all over the university campus. BTW, I had a colleague programmed by plugging wires in a plug board. So, yeah, punch cards are definitely computing.

> Punchcards are also mechanically configured, not symbolically programmed.

I don’t know that I said the punchcards are programmable.

It is the machine that is programmable via the punchcards.

By these criteria printing press was much more programmable than the loom. The Babbage's machine was not notable for being "symbolically programmable", it was a machine capable of universal computation. That is huge step beyond any complex programmable automata such as were made for clocks and music boxes.

The "It had no conditional logic or flow control. No stored symbolic instructions." you mention applies to the loom too. It copied what was poked into cards to different medium, not unlike Gutenberg's press did.

I'm obviously missing the big differentiator of Jacquard's loom, but so far I have not seen it clearly explained in the articles I've read.

The loom allowed for interchangeable weaving sequences to be saved on a cheap medium for later reuse. Movable type presses didn't make that practical with the cost of fonts.

Here is a 1746 machine loom that used perforated tape, half a century before Jacquard:

https://www.arts-et-metiers.net/musee/metier-tisser-les-etof...

Nor is it first such device. Here is the nice image of barrel with pins that controls the 14th century machine organ:

https://www.pianola.org/history/history_mechanical.cfm

Again, while impact of Jacquard's loom was indisputably huge, ascribing origin of computers to it seems like calling Ford model T the origin of personal transportation.

Wikipedia suggests that the Jacquard loom introduced Babbage to punched cards, which would be why it, rather than the others, is associated with the origin of computers.