A family tree of programming languages, from Ada Lovelace's notes in 1843 to languages people use today. It isn't a complete list: there are thousands of languages, and these are some of the most influential. Each one borrowed ideas from the languages before it, and each card shows the same small program, "hello, world," so you can see how the way we write code has changed.
Hover over (or tap) a language to light up the languages it came from and the ones it inspired. Click it to jump to its card. On a phone, swipe sideways to see the whole tree, and tap twice to jump.
Before the families Note G, Plankalkül, Assembly
Business data A-0 System, FLOW-MATIC, COBOL
ALGOL family FORTRAN, ALGOL 60, BASIC, Pascal, Ada
C family BCPL, B, C, C++, Java, C#, Go, Rust
Objects Simula 67, Smalltalk, Objective-C, Swift
Functional LISP, Logo, ML, Haskell
Scripting Perl, Python, JavaScript, Ruby, PHP
Databases SQL
Just for fun Purl Logic
Ada Lovelace
In 1842–43, Ada Lovelace translated an article about Babbage's Analytical Engine and added seven notes of her own, labeled A to G. The last one, Note G, laid out step by step how the machine could compute Bernoulli numbers. It's often called the first published computer program, a century before there was a computer to run it.
No "hello, world" here: the Analytical Engine was never built.
In my museum: Analytical Engine
Konrad Zuse
While his Z3 lay in rubble, Konrad Zuse designed Plankalkül ("plan calculus") between 1942 and 1945. It already had assignments, loops and structured data, but nobody built a compiler for it until 1975, so for thirty years no one could run a program written in it.
No "hello, world": the first compiler arrived thirty years later.
In my museum: Zuse Z3
Kathleen Booth
Kathleen Booth is credited with inventing assembly language, starting in 1947 while working on the ARC2 computer at Birkbeck, University of London. Short words like LDA and JSR stand in for a processor's own instructions, so every chip on my processor timeline has its own.
6502 assembly for a Commodore 64
LDX #0
LOOP LDA MSG,X
BEQ DONE
JSR $FFD2 ; print a character
INX
BNE LOOP
DONE RTS
MSG .BYTE "HELLO, WORLD",0
Inspired: A-0 System, FORTRAN
In my museum: Commodore 64
Grace Hopper
Hopper wrote the A-0 System in 1951 and 1952 for the UNIVAC I. It worked more like a linker than a modern compiler, stitching together pieces of prewritten code, but it started the idea of a computer writing its own machine code.
No "hello, world": A-0 strung together numbered library routines.
Inspired by: Assembly
Inspired: FLOW-MATIC
In my museum: UNIVAC I
John Backus and a team at IBM
FORmula TRANslation, written for the IBM 704 and the first widely used high-level language: scientists could write math almost the way they'd write it on paper. It's still used for heavy number crunching today.
FORTRAN 77
PROGRAM HELLO
PRINT *, 'HELLO, WORLD'
END
Inspired by: Assembly
In my museum: IBM System/360
Grace Hopper's team at Remington Rand
Hopper's team developed it for the UNIVAC from 1955, and it became available in 1958. Business customers didn't want to write math symbols, so FLOW-MATIC used English words, an idea that went straight into COBOL.
No "hello, world": FLOW-MATIC programs processed files of business records.
Inspired by: A-0 System
Inspired: COBOL
In my museum: UNIVAC I
John McCarthy at MIT
Short for List Processor, LISP was built for artificial intelligence research, with both code and data written as lists in parentheses. It's the second-oldest high-level language still in common use, after FORTRAN.
Common Lisp
(print "hello, world")
Inspired: Logo, Smalltalk, ML, Python, JavaScript, Ruby
In my museum: DEC PDP-10
the CODASYL committee
COmmon Business-Oriented Language, started in 1959 by a committee backed by the U.S. Department of Defense and based partly on Hopper's FLOW-MATIC. Its wordy, English-like style was made for business records.
COBOL
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO.
PROCEDURE DIVISION.
DISPLAY "HELLO, WORLD".
STOP RUN.
Inspired by: FLOW-MATIC
In my museum: IBM System/360
an international committee including John Backus and Peter Naur
ALGOrithmic Language. It wasn't used much to build programs, but almost every later language borrowed its ideas, like blocks of code between begin and end. The notation used to describe its grammar, Backus–Naur form, is still used to describe languages today.
ALGOL 60 (printing worked differently on every computer)
begin
outstring(1, "hello, world")
end
Inspired by: FORTRAN
John Kemeny and Thomas Kurtz at Dartmouth
Beginner's All-purpose Symbolic Instruction Code, first released on May 1, 1964, so students outside math and science could use computers. A decade later, a version of BASIC came built into almost every home computer.
Commodore 64 BASIC
10 PRINT "HELLO, WORLD"
20 GOTO 10
Inspired by: FORTRAN, ALGOL 60
Inspired: Purl Logic
In my museum: Altair 8800, Apple II, Commodore PET, TRS-80 Model I, Commodore VIC-20, BBC Micro, Commodore 64, ZX Spectrum
Ole-Johan Dahl and Kristen Nygaard
Made in Norway for running simulations, Simula 67 introduced objects, classes and inheritance, and is considered the first object-oriented language.
Simula
Begin
OutText ("hello, world");
OutImage;
End;
Inspired by: ALGOL 60
Wally Feurzeig, Seymour Papert and Cynthia Solomon
An educational language best known for turtle graphics: you steer a little turtle around the screen (or a robot across the floor), and it draws as it goes.
Logo
print [hello world]
Inspired by: LISP
Inspired: Smalltalk, Purl Logic
Martin Richards at Cambridge
Basic Combined Programming Language: a simplified version of an earlier language called CPL, designed so that its compilers could be small. It led straight to B, and from there to C.
BCPL
GET "LIBHDR"
LET START() BE WRITES("hello, world*N")
Inspired by: ALGOL 60
Inspired: B
Ken Thompson and Dennis Ritchie at Bell Labs
Thompson made B for the PDP-7 by simplifying BCPL until it fit in memory. The first known "hello, world" program comes from Brian Kernighan's 1972 tutorial for B, and this is it.
B, from Kernighan's 1972 tutorial
main( ) {
extrn a, b, c;
putchar(a); putchar(b); putchar(c); putchar('!*n');
}
a 'hell';
b 'o, w';
c 'orld';
Inspired by: BCPL
Inspired: C
In my museum: DEC PDP-7
Niklaus Wirth
Designed to teach clear, structured programming, and named after the mathematician Blaise Pascal. A version called Object Pascal was used by Apple for the Lisa and the Macintosh.
Pascal
program Hello;
begin
writeln('hello, world')
end.
Inspired by: ALGOL 60
In my museum: Apple II, Apple Lisa, Macintosh 128K
Dennis Ritchie at Bell Labs
Ritchie built C on the PDP-11 between 1972 and 1973 to write Unix programs, and in 1973 Unix itself was rewritten in it. It gives programmers direct access to the hardware and is still used for operating systems and tiny devices. (My terminal has a copy: try cat hello.c.)
C, from Kernighan and Ritchie's 1978 book
#include <stdio.h>
main()
{
printf("hello, world\n");
}
Inspired: Objective-C, C++, Perl, Python, PHP, Go
In my museum: DEC PDP-11, Unix V6
Alan Kay, Dan Ingalls and Adele Goldberg at Xerox PARC
Everything is an object, and objects talk by sending each other messages. It ran on the Xerox Alto, along with the windows and mouse that Apple later borrowed.
Smalltalk
Transcript show: 'hello, world'.
Inspired by: Simula 67, LISP, Logo
Inspired: Objective-C, Java, JavaScript, Ruby
In my museum: Xerox Alto
Robin Milner and others at the University of Edinburgh
Short for Meta Language: it was made as the language for controlling LCF, a theorem-proving program at Edinburgh. It's a functional language that can work out the types in your program by itself, so you rarely have to write them down.
Standard ML
print "hello, world\n";
Inspired by: LISP
Donald Chamberlin and Raymond Boyce at IBM
SQL grew out of math rather than an earlier programming language, starting with Edgar Codd's 1970 IBM paper, “A Relational Model of Data for Large Shared Data Banks,” which later won him the Turing Award. Chamberlin and Boyce's first try at a language for it, SQUARE, was hard to use because of its subscripts and superscripts. Their second was SEQUEL, a way to ask a database questions in something close to English. It was renamed SQL because “SEQUEL” was another company's trademark. It became an ANSI standard in 1986 and is still how most databases are queried.
SQL
SELECT 'hello, world';
Jean Ichbiah's team, for the U.S. Department of Defense
Designed to replace the more than 450 languages the Department of Defense was using, with safety built in for systems that can't fail. Its standard was approved on December 10, 1980, Ada Lovelace's birthday, and numbered MIL-STD-1815 after the year she was born.
Ada
with Ada.Text_IO;
procedure Hello is
begin
Ada.Text_IO.Put_Line ("hello, world");
end Hello;
Inspired by: Pascal
Brad Cox and Tom Love
C with Smalltalk-style messages added on. NeXT chose it for NeXTSTEP, and after Apple bought NeXT it was Apple's main language for Mac and iPhone apps until Swift arrived in 2014.
Objective-C
#import <Foundation/Foundation.h>
int main(void) {
NSLog(@"hello, world");
return 0;
}
In my museum: NeXT Computer, iPhone
Bjarne Stroustrup at Bell Labs
Started in 1979 as "C with Classes," adding Simula's objects to C. It's used for games, web browsers and other software that has to be fast.
C++
#include <iostream>
int main() {
std::cout << "hello, world\n";
}
James Gosling at Sun Microsystems
Started in 1991 as Oak, named after a tree outside Gosling's office. Its promise was "write once, run anywhere": programs run on a virtual machine instead of directly on the hardware.
Java
public class Hello {
public static void main(String[] args) {
System.out.println("hello, world");
}
}
Inspired by: C++, Objective-C, Smalltalk
Inspired: JavaScript, C#
In my museum: T-Mobile G1
Brendan Eich at Netscape
Netscape hired Eich to put the Scheme language in its browser, then decided it should look more like Java. It shipped as LiveScript in a September 1995 beta and was renamed JavaScript in December. Every game on this site, and the terminal, is written in it.
JavaScript (open your browser's console on this site for a hello from Hammy)
console.log("hello, world");
Robert Griesemer, Rob Pike and Ken Thompson at Google
Designed at Google in 2007 for Google's huge codebases and its networked machines with many processor cores, and released as open source in November 2009, along with its gopher mascot. Its designers, including Ken Thompson, who made B forty years earlier, were partly motivated by their shared dislike of C++. Google still develops it with community contributors, and it's used inside Google and in tools like Docker and Kubernetes.
Go
package main
import "fmt"
func main() {
fmt.Println("hello, world")
}
Chris Lattner and others at Apple
Apple's replacement for Objective-C, for apps on Macs, iPhones and Apple Watches.
Swift
print("hello, world")
Inspired by: Objective-C, Haskell
me
My own tiny language for knitting patterns: KNIT and PURL are the two kinds of stitches, ROW starts a new row, and LOOP repeats. Easily the least important language on this page.
Purl Logic
# a striped swatch
LOOP 2
KNIT 6
ROW
PURL 6
ROW
END
Dates and creators are from Wikipedia. "Inspired by" is simplified: most languages borrowed from many more.