Families

Before the families
Business data
ALGOL family
C family
Objects
Functional
Scripting
Databases
Just for fun

Programming Languages

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.

The family tree

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

★★★★★★★★★★★★
1843

Note G

Before the families

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

1945

Plankalkül

Before the families

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

1947

Assembly

Before the families

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

1952

A-0 System

Business data

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

1957

FORTRAN

ALGOL family

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

Inspired: ALGOL 60, BASIC

In my museum: IBM System/360

1958

FLOW-MATIC

Business data

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

1958

LISP

Functional

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

1959

COBOL

Business data

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

1960

ALGOL 60

ALGOL family

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

Inspired: BASIC, Simula 67, BCPL, Pascal, C

1964

BASIC

ALGOL family

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

1967

Simula 67

Objects

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

Inspired: Smalltalk, C++

1967

BCPL

C family

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

1969

B

C family

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

1970

Pascal

ALGOL family

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

Inspired: Ada, Go

In my museum: Apple II, Apple Lisa, Macintosh 128K

1972

C

C family

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 by: B, ALGOL 60

Inspired: Objective-C, C++, Perl, Python, PHP, Go

In my museum: DEC PDP-11, Unix V6

1972

Smalltalk

Objects

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

1973

ML

Functional

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

Inspired: Haskell, Rust

1974

SQL

Databases

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';
1980

Ada

ALGOL family

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

1984

Objective-C

Objects

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;
}

Inspired by: C, Smalltalk

Inspired: Java, Swift

In my museum: NeXT Computer, iPhone

1985

C++

C family

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";
}

Inspired by: C, Simula 67

Inspired: Java, C#, Rust

1987

Perl

Scripting

Larry Wall

A Unix scripting language that's great at working with text. In 1998 it was called the "duct tape that holds the Internet together."

Perl

print "hello, world\n";

Inspired by: C

Inspired: Ruby, PHP

1990

Haskell

Functional

a committee of researchers

A purely functional language designed by committee to bring many research languages together, and named after the logician Haskell Curry.

Haskell

main = putStrLn "hello, world"

Inspired by: ML

Inspired: Python, Swift, Rust

1991

Python

Scripting

Guido van Rossum

Designed to be easy to read, using indentation instead of brackets. It's named after Monty Python's Flying Circus, not the snake.

Python

print("hello, world")

Inspired by: C, Haskell, LISP

1995

Java

C family

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

1995

JavaScript

Scripting

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");

Inspired by: Java, LISP, Smalltalk

1995

Ruby

Scripting

Yukihiro "Matz" Matsumoto

Designed in Japan, blending ideas from Perl, Smalltalk and Lisp. Around 2005 the Ruby on Rails web framework made it famous.

Ruby

puts "hello, world"

Inspired by: Perl, Smalltalk, LISP

1995

PHP

Scripting

Rasmus Lerdorf

It started as "Personal Home Page" tools Lerdorf wrote for his own website, and grew into one of the most common ways to build websites on a server.

PHP

<?php echo "hello, world"; ?>

Inspired by: Perl, C

2000

C#

C family

Anders Hejlsberg at Microsoft

Microsoft's language for its .NET platform, with a lot in common with Java and C++.

C#

class Hello {
    static void Main() {
        System.Console.WriteLine("hello, world");
    }
}

Inspired by: Java, C++

2009

Go

C family

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")
}

Inspired by: C, Pascal

2014

Swift

Objects

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

2015

Rust

C family

Graydon Hoare at Mozilla

Hoare started it in 2006, and Rust 1.0 came out in May 2015. It catches many memory mistakes before a program ever runs, so code can be fast like C++ but safer.

Rust

fn main() {
    println!("hello, world");
}

Inspired by: C++, ML, Haskell

2026

Purl Logic

Just for fun

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

Inspired by: BASIC, Logo

Dates and creators are from Wikipedia. "Inspired by" is simplified: most languages borrowed from many more.