A Brief History of Computer Programming: From Wires to Apps
From Ada Lovelace’s 1843 notes to today’s apps and AI coding assistants, see how programming changed—and what a program really is—in plain language.
On this page
Every app, website, game, and smart device follows instructions written by people. That work is called computer programming. It may look recent, but its roots reach back almost two centuries—to a time before electronic computers existed.
This is a simple tour of how programming changed: from planning steps for a machine that was never built, to connecting cables on room-sized computers, to writing code that runs on phones and across the internet.
What does programming mean?
A program is a set of instructions that tells a computer what to do. Programming is the work of designing, writing, and improving those instructions.
A programming language is a precise way to write instructions. It is designed for people to read and for computer tools to translate or carry out. It is not ordinary English, Portuguese, or another spoken language: small changes in punctuation or order can change what the computer does.
1843: Ada Lovelace imagines instructions for a machine
In 1843, mathematician Ada Lovelace published notes about Charles Babbage’s proposed Analytical Engine, a general-purpose mechanical computer that was never completed. One note described steps for calculating Bernoulli numbers, values used in mathematics.
Lovelace is often called the first computer programmer. That label is a useful shorthand, but the full story is more careful: the machine did not exist to run her instructions, and “first” depends on what we count as a program. Her notes still showed something new: a programmable machine could, in principle, work with more than numbers.

This is a later model of the proposed Analytical Engine, not Babbage’s unfinished original. Photo by Mirko Tobias Schäfer, CC BY-SA 2.0; source.
The 1940s: programming meant setting up the machine
Early electronic computers did not work like a laptop with an app store. To give the ENIAC a new job, its operators changed switches and connected cables between the machine’s units. Planning and checking those connections was programming, even though it did not look like typing code on a screen.
The ENIAC’s programmers included six women: Jean Jennings Bartik, Betty Holberton, Kathleen Antonelli, Marlyn Meltzer, Frances Spence, and Ruth Teitelbaum. They learned how the machine worked and helped make it useful. For years, their contributions received far less public attention than the machine’s designers.

U.S. Army photo, public domain. Image source and details.
1948: instructions begin to live in computer memory
A major shift came when a computer could store a program in its memory, then follow the instructions one after another. On June 21, 1948, the Manchester “Baby” ran a short program stored in electronic memory. Instead of rewiring the whole machine for each calculation, people could change the instructions it read.

This is a later replica on display in Manchester. Photo by KGGucwa, CC BY-SA 3.0; source.
The 1950s: translators and languages make programming easier
In 1952, Grace Hopper’s team completed A-0, an early system often described as a compiler. A compiler translates a program written in a more human-friendly language into instructions a computer can run. Programmers could now reuse named operations instead of manually entering every low-level step.
Two influential languages soon made programming useful to more people:
- FORTRAN, commercially released in 1957, helped scientists and engineers express mathematical formulas for computers.
- COBOL, developed by a group in 1959, was designed for business records and reports. Its words were intended to be more readable, though it was still a formal language with strict rules.
These languages did not make computers understand ordinary conversation. They gave people a clearer way to describe tasks, while translation tools handled much of the machine-specific detail.

Photographer unknown; CC BY 2.0. Image source and details.
The 1960s and 1970s: computers spread, and languages branch out
BASIC appeared in 1964 with beginners and students in mind. At Dartmouth College, a time-sharing system let several people use a computer through terminals—an important step toward making computing less exclusive.
In 1972, the C language helped developers rewrite the Unix operating system so it could be adapted to different computers. That portability mattered: software no longer had to be rebuilt entirely from scratch for every machine.
As computers became smaller and less expensive, they began to appear in schools, workplaces, and homes. People could learn programming on personal computers, while professionals built larger systems with languages suited to different jobs.

Photo by Luca Boldrini, CC BY 2.0; source.
The 1990s and the web: software reaches more people

NCSA Mosaic for X, version 1.2. Screenshot by Charles Severance, CC0; source and details.
Python was first released in 1991. Its emphasis on readable code helped it become useful in education, automation, science, and many other areas.
JavaScript arrived in web browsers in 1995 and made it possible for websites to respond to what people clicked or typed. The web created new programs that could be shared with people almost anywhere, without mailing them a disk.
Since then, programming has expanded into phones, games, online services, scientific research, and connected devices. Open-source projects also let people around the world contribute to shared software.
Today: more tools, same basic idea
Modern programmers have editors that highlight mistakes, libraries with ready-made building blocks, and online services that help teams work together. AI assistants can suggest or explain code, too. These tools can save time, but people still decide what to build, check whether the code works, and fix mistakes.
The tools have changed dramatically. The central task is familiar: understand a need, describe clear steps, and see whether the computer’s result is useful.
How does code turn into something a computer can do?
A person writes instructions in a programming language. A compiler or interpreter translates or carries them out in a form the computer can execute. The computer follows those instructions to produce a result—such as showing a page, saving a file, or controlling a device.

Think of a recipe: a cook can follow clear steps without knowing how the oven was built. Programming languages give people a practical way to describe the steps; the computer’s hardware carries them out.
A short timeline

From wires to readable code
Programming did not change in one straight line, and older approaches did not all disappear. But over time, tools let programmers express their goals with less attention to a machine’s exact switches and wiring.

Why this history matters
Programming is not simply typing mysterious symbols. It is a way for people to turn an idea into instructions precise enough for a computer to follow. Each generation created tools that made that work more capable or accessible—and each depended on people who tested, maintained, and improved what came before.
For another part of computing’s story, read A Brief History of Artificial Intelligence.
Sources and further reading
- Ada Lovelace and the Analytical Engine — Computer History Museum
- ENIAC — Computer History Museum
- Programming the ENIAC and the question of “firsts” — Computer History Museum
- The stored program — Computer History Museum
- Grace Hopper and early compilers — Computer History Museum
- FORTRAN — IBM
- BASIC — Computer History Museum
- C programming language, 1972 — Computer History Museum
- Python history — Python documentation
- JavaScript history — MDN Web Docs
Read next
A Brief History of Programming Languages: From Machine Code to Modern Tools
From machine code and FORTRAN to Python, JavaScript, and Rust, explore how programming languages evolved and why there are so many.
Getting Started with GraphQL and Express
You can employ GraphQL in your Express server using a middleware. If you get a request that goes to the endpoint POST /graphql, it will pass through the GraphQL Express middleware and handle the…
JavaScript: Stop Using var with ES6
With the advent of ES6, two new keywords for the definition of variables have come forth: const and let. Now, whenever you need to define a variable, don't use var -- start off with const. Once you…
Comments
Be kind and specific. Comments with links from new accounts appear after a moderator reviews them.