Evolution of Programmability: Encode, Automate, Transform

11–17 minutes

🎧 Companion podcast (coming soon)

💬 Comic (coming soon)

This is a story of an idea that survived every technology used to express it: a machine can be changed by altering its instructions, rather than rebuilding it. That’s what defines programmability. Rather than being limited to a single, unchanging function, a programmable machine can be reconfigured repeatedly by changing the instructions it executes.

Encoding Information

The industrialization of weaving may not, at first, seem like an important step in the evolution of programmability. The Jacquard loom used stiff, rectangular paper cards to encode information. Holes punched into each card operated as a mechanical program to control fabric patterns. Simplified, a hole allowed a pin to pass through and raise a thread, while areas without a hole blocked the pin. These cards were laced together into a long chain, letting the loom run through an entire pattern automatically, one card at a time.

This use of punched cards was innovative in that it separated the pattern from the machine that executed it. Different designs could be created on a loom just by switching out a set of reusable cards that could be recombined to form new designs. These ideas are similar to a core concept in modern computing: programmability. The same hardware can do different tasks when given different instructions.

Later in the 1800s, punched holes appeared in two other key inventions: Charles Babbage’s Analytical Engine (an influential design, but not actually built during his lifetime) and Herman Hollerith’s tabulating machines. The same physical idea (holes in cards) served different purposes in each of these three examples. Jacquard’s cards represented weaving patterns, Babbage’s proposed cards would control mathematical operations and supply data, and Hollerith’s cards represented information about people. What connected all three was not what the holes meant, but the larger idea that information could be encoded in a form a machine could act upon.

Together, Jacquard, Babbage, and Hollerith illustrate an important progression in what machines could do with encoded information. The Jacquard loom encoded patterns that a machine followed. Babbage’s proposed Analytical Engine encoded operations that a machine could compute. Hollerith’s tabulating machines encoded data that a machine processed. These ideas helped lead toward the modern computer, a general-purpose machine that can encode and process both programs and data.

The Jacquard loom encoded patterns that a machine followed. Babbage’s proposed Analytical Engine encoded operations that a machine could compute. Hollerith’s tabulating machines encoded data that a machine processed. These ideas helped lead toward the modern computer, a general-purpose machine that can encode and process both programs and data.

Jacquard: Encode a Pattern That a Machine Follows

The Jacquard loom advanced the textile industry; manufacturing complex patterns was now possible at a larger scale.

Key Moments in Punched Card Evolution

1725: Bouchon
One of the earliest uses of perforated paper tape (punched paper) for looms.
1728: Falcon
Used rigid punched cards for controlling looms.
1740s: Vaucanson
Introduced automated mechanisms that controlled movement with punched cards.
1800s: Jacquard
Combines and improves earlier ideas.

Jacquard’s innovation wasn’t the punched card. It was combining and perfecting these ideas into one automated system.

Invented by Joseph Marie Charles dit Jacquard in the early 1800’s, the machine used punched cards to represent instructions for a design. A repeating pattern was produced by a set of cards, one per row. More complex designs, such as woven portraits, could require thousands of unique cards.

One of the Jacquard loom’s key features was the ability to combine cards to create different patterns. Using this modular method, machines could mass-produce textiles with far more intricate designs than manual weaving allowed, without redesigning the loom itself for each new pattern.

Jacquard’s loom grew out of earlier inventions and ideas. He had at least two earlier patents for machines that didn’t quite work that the Jacquard loom eventually replaced. He also built on nearly a century of prior experimentation. As outlined by D. Anderson and J. Delve in the IEEE Annals of the History of Computing, Jacquard combined and refined these earlier ideas into the machine that bears his name.

The Jacquard loom is a reminder that innovation isn’t necessarily inventing something entirely new. Instead, it can be combining existing ideas in new ways; innovation is often recombination.

1804 Jacquard Loom: A punched card encoded a textile pattern.

When Machines Enter the Creative Process

A question from the 1800s is still relevant today. What happens to human creative work when machines become capable of acting on increasingly sophisticated instructions?

The anxiety over machines displacing skilled workers isn’t new, and the Jacquard loom is an early example. When Jacquard introduced his automated loom in the early 1800s, many silk weavers in Lyon initially saw it as a direct threat to their livelihoods. People whose skill and years of training had defined their value were suddenly competing with a machine that could weave complex patterns without them. Historical accounts differ in some of the details of this resistance, but the larger conflict is well documented. Over time, though, technology won out, and by some estimates the expanded industry eventually employed more people than the old hand-weaving trade had.

It’s tempting to draw a straight line from this story to the anxiety many artists and writers feel about generative AI today. In some ways the comparison holds. Both involve a new technology threatening the economic value of a skilled craft, and provoked genuine fear rather than abstract concern. But the parallel isn’t perfect. Jacquard’s loom automated execution. A human still had to design the pattern that the machine then wove. Generative AI is different in that it’s often applied to conception itself: the creative choices, not just the manual labor of carrying them out. That distinction matters, because it’s part of what makes today’s debate feel different in kind, not just in degree. The Jacquard story doesn’t settle the question of what happens with AI, but it does offer a useful historical anchor for thinking about how societies have grappled with this tension before.

Punch Cards

The Medium Changed, but the Idea Survived

Punched cards eventually gave way to magnetic tape, disks, semiconductor memory, and other forms of storage. But the underlying idea remained: encode information in a physical form that a machine can read and process.

The cards used to create a design sequence in textile weaving represented important ideas that computing would later reuse:

  • Data can be encoded onto a physical medium. Information (the design) could be encoded onto a physical medium separate from the machine.
  • Cards can be reused and interchanged. A sequence of cards represented a sequence of operations. The same physical mechanism could execute entirely different “programs” just by swapping the deck.
  • Two-state encoding. Each position on a card had one of two possible states: hole or no hole. Although Jacquard wasn’t encoding binary numbers, this is analogous to a fundamental idea in digital computing: information can be represented using two discrete states, which we now commonly represent as 1 and 0.

Modern computers no longer need holes punched into cardboard, but programs and data are still encoded into something physical that a machine knows how to interpret.

Babbage: Encode Operations That a Machine Computes

These ideas weren’t confined to textiles. In the 1830s and 1840s, English mathematician Charles Babbage adapted a punch card system for his proposed Analytical Engine, which took the idea much further; cards could control the machine’s operations as well as provide information for calculations. This meant that the same machine could perform different tasks depending on the instructions it was given, an important step toward the modern idea of a programmable, general-purpose computer. Although the Analytical Engine was never completed, its design included many ideas associated with modern general-purpose computers, including memory, arithmetic operations, conditional branching, and repeated operations.

Ada Lovelace, who worked closely with Babbage (and wrote what’s often considered the first published algorithm intended to run on a machine), observed in 1843: “The Analytical Engine weaves algebraic patterns just as the Jacquard loom weaves flowers and leaves.” Her comparison wasn’t poetic embellishment. The Analytical Engine’s design used card-based logic just like the Jacquard loom did, but it used it to process abstract, symbolic information instead of designs made with thread.

Lovelace recognized that once something can be encoded symbolically, computation isn’t limited to arithmetic. Computers can manipulate numbers, text, images, music, video, and software because we devised systems for representing them as data.

1830s Babbage's Engine: A punched card encoded operations and numerical information.

Hollerith: Encode Data That a Machine Processes

The next major leap came in data processing rather than computation.

In the U.S., a census is taken every ten years. The data collected for the 1880 census took over seven years to process. Preparing for the 1890 census, there was a reasonable concern that, with the growth in population, it would take more than a decade to process the data using the same methods, and that it would be time for the next census before the 1890 one was completed.

In a competition for a more efficient solution, engineer Herman Hollerith built an electromechanical tabulating machine. He used the existing idea of information encoded in punched paper (he had seen this technique used with the Jacquard loom and also with railroad tickets) and applied it to an entirely different problem: processing millions of census records.

Each punched card represented one person’s census data. The cards were then placed in a reader that used an ingenious mechanism to trigger an electrical signal; spring-loaded pins passed through punched holes into mercury, completing electrical circuits. The resulting electrical signals advanced counting dials corresponding to the characteristics recorded on the card.

The U.S. Census Bureau’s site notes that Hollerith’s machine was an impressive improvement over other proposed solutions; his machine captured data in about half the time of his closest competitor, and prepared data approximately 10x faster. Hollerith’s machine went on to process data for a population of nearly 63 million people during the 1890 census. His success demonstrated that a card-based system could handle data processing on a national scale.

1890s Hollerith Tabulator: A punched card encoded data about people.

1890 Census vs. Modern Digital Data

In 1890, a Hollerith card was a physical data record representing an individual. Millions of these records were processed and stored in cabinets for the census. To find data about a population in 1890 (such as how many citizens were between the ages of 18 and 25) involved searching through physical cabinets and a human operator manually feeding cards into a tabulating machine one by one. According to an article published in the Journal of American History, clerks processed an average of 7,000 to 8,000 cards a day.  

Today, billions of records can be stored electronically. Queries can be run without physically moving individual records through a machine. The fundamental core concept of encoding human attributes into a machine-readable format is the same, but the method has shifted from physical logistics to electronic manipulation.

In the 1890 census each Hollerith punch card represented one person's census data. Today, a person's data can be stored as a row in a digital record.

Shift in Solving Large-Scale Problems

1890 Census
to IBM

1896: Hollerith founds the Tabulating Machine Company
1911: TMC merges with other companies to become Computing Tabulating Recording Company
1924: Computing Tabulating Recording Company becomes International Business Machines (IBM)

The 1890 census was an important moment in the evolution of computing history because it demonstrated that this type of automated technology could solve real-world, large-scale problems. The 1880 census, completed entirely by hand, had taken nearly seven years to process. The 1890 census covered a larger population of nearly 63 million people. Hollerith’s machines processed the data in about two years and saved the government millions of dollars. It marked a shift in how governments, organizations, and companies began to think about handling data at scale.

This proved a successful business opportunity for Hollerith. His company later merged with others to form a new company that was eventually renamed International Business Machines (IBM) in 1924. IBM has had a substantial impact on the evolution of computers. For example, the IBM Personal Computer, released in 1981, established an architecture that was widely copied by manufacturers of ‘IBM-compatible’ machines and became enormously influential in the personal-computer market. It helped establish the hardware lineage that continues in many Windows PCs today.

The punched card was improved over time, including at IBM; the “IBM Computer Card” became standardized at 80 columns, dramatically increasing how much information a card could hold. With enhancements to the paper medium and the systems that supported them, punched cards became central to business data processing and programming for decades. Although we no longer rely on card-based computing, the Computer History Museum describes punched cards as a primary data-storage system for roughly 80 years. That durability is important. Once technology becomes part of a larger system, it can be difficult to displace. Technologies often survive because entire systems grow around them.

80-Column Computer Culture

Technological constraints can outlive the technology that created them. The 80-column physical punched card’s influence can still be seen today. Languages like FORTRAN and COBOL, for example, were designed around the 80-column format of the IBM punched card. A single card held one line of code; when punched cards gave way to computer terminals, this 80-character width remained as the default screen size. Many code editors adopted this limit as well.

Even modern coding conventions sometimes echo this history. Python’s PEP 8 style guide, for example, recommends limiting lines to 79 characters. That limit has more immediate roots in terminal and text-display conventions, but those conventions themselves developed in a computing culture long accustomed to 80-column formats.

Comparison of historical to modern: Jacquard card sequence (historical) compared to program/instructions (modern) swapping card sets (historical) compared to loading different software (modern) Babbage operation cards (historical) compared to instructions (modern) Hollerith card(historical) compared to database record (modern) punched hole/no punched hole (historical) compared to discrete encoded states (modern) card reader (historical) compared to input device (modern) tabulator (historical) compared to data-processing system (modern)

Modern Computing: Encode Programs and Data

The Man Whose Name Wouldn’t Fit

A satirical science fiction novel written in 1968 addresses limitations of early computer systems. Arthur Duane Cartwright-Chickering loses his job because his long, hyphenated surname exceeds the character limit of his company’s new mainframe computer system (learn more about the story).

Early computers such as ENIAC, completed in 1945, still required programmers to make physical changes to the machine. To set up a new task, they had to rewire cables and adjust switches. For a substantial change, this could take days.

John von Neumann described a different approach in 1945: put the program’s instructions in electronic memory alongside the data the program would use. The computer could then fetch its instructions from memory and execute them without being physically rewired for every new task. Instead of changing the machine itself, programmers could change the stored program.

The basic idea should sound familiar. Like the Jacquard loom, a general-purpose machine could be used for different tasks without rebuilding its hardware. What changed was the way the instructions were stored and delivered.

The more direct precursors of modern computers emerged in the mid-1900s. These were machines that were digital, programmable, and discrete, rather than analog. That's roughly 80 years of card-based computing where punch cards were a standard method of encoding data onto a physical medium. The next major shift was eliminating the distinction between the medium holding instructions and the machine's internal memory. Early electronic computers often required programs to be entered through switches, cables, or punched media. Stored-program computers instead placed program instructions in electronic memory alongside data. The physical card was no longer necessary for the machine to retain its instructions. But the idea introduced much earlier remained: the same hardware could perform different tasks depending on the instructions it received.

Summary

We examined the same concept from three distinct perspectives: weaving patterns, counting people, and powering computers. Jacquard, Babbage, and Hollerith each put holes in cards to represent something different (a pattern, a calculation, a person), but in every case, the specific meaning of the holes mattered less than the underlying idea: information could be encoded in a form a machine could act upon. That idea is what is carried forward into the modern computer, a general-purpose machine that can encode and process both programs and data.

From weaving patterns, to counting people, to powering computers, the throughline is the same: encode, automate, transform. Jacquard, Babbage, and Hollerith each put holes in cards to represent something different (a pattern, a calculation, a person) but in every case, the specific meaning of the holes mattered less than the underlying idea: that information could be encoded in a form a machine could act upon. That idea is what carried forward into the modern computer, a general-purpose machine that can encode and process both programs and data.

ENCODE: Represent information in a form a machine can interpret; encode data in a way that a machine can act on it.
AUTOMATE: Specify rules for a machine to act on the encoded information; the machine automates with rules and data.
TRANSFORM: Change what the machine can accomplish without changing the machine itself; a machine can perform different tasks not by changing its hardware, but by changing its instructions.

The punch card eventually disappeared. The idea behind it didn’t.

Encode: Represent information in a form a machine can interpret. Automate: Give the machine rules for acting on that representation. Transform: Change what the machine can accomplish without necessarily changing the machine itself.

References

Primary Source

Additional Online Source

Expand Your Knowledge

Scroll to Top