Skip to content

Instantly share code, notes, and snippets.

@MangaD
Created May 10, 2026 12:30
Show Gist options
  • Select an option

  • Save MangaD/c1e9173d45493eeb6b4414bb649a9cd7 to your computer and use it in GitHub Desktop.

Select an option

Save MangaD/c1e9173d45493eeb6b4414bb649a9cd7 to your computer and use it in GitHub Desktop.
The Evolution of Programming Languages: From Machine Code to Modern Paradigms

The Evolution of Programming Languages: From Machine Code to Modern Paradigms

CC0

Disclaimer: ChatGPT generated document.

The “first programming languages” depend on what you count as a programming language. There is a progression from mechanical instructions, to assembly-like systems, to high-level symbolic languages. The history is fascinating because it mirrors the evolution of computers themselves.

Before Electronic Computers

Ada Lovelace and the Analytical Engine (1840s)

Many historians consider Ada Lovelace the first programmer.

She wrote algorithms for Charles Babbage’s proposed mechanical computer, the Analytical Engine. The machine was never fully built, but Lovelace described how it could calculate Bernoulli numbers.

These “programs” were not programming languages in the modern sense, but they introduced key concepts:

  • symbolic instructions,
  • reusable procedures,
  • loops,
  • and the idea that machines could manipulate symbols, not just numbers.

Image

Image

Image

Image

Image

Image


The First Machine Languages (1940s)

The earliest electronic computers were programmed directly in machine code.

Examples include:

  • ENIAC
  • EDSAC
  • UNIVAC I

Programs consisted entirely of binary or numeric instructions like:

00101100 00010111

or numeric operation codes such as:

LOAD 7
ADD 9
STORE 10

Programming was extremely difficult because:

  • there were no variables,
  • no functions,
  • no abstractions,
  • and hardware architectures differed completely.

In some systems, programmers literally rewired hardware or flipped switches manually.


Assembly Language (Late 1940s)

The next breakthrough was assembly language.

Instead of raw numbers, programmers used symbolic mnemonics:

MOV AX, 5
ADD AX, BX

Assemblers translated these mnemonics into machine code.

Assembly languages were:

  • hardware-specific,
  • low-level,
  • but dramatically easier than binary programming.

One important early figure was Kathleen Booth, who helped develop one of the first assembly languages in the late 1940s.


The First High-Level Programming Languages

Plankalkül (1940s)

One of the earliest true high-level languages was:

Plankalkül

created by Konrad Zuse between 1942–1945.

It included concepts far ahead of its time:

  • variables,
  • arrays,
  • conditionals,
  • procedures.

However:

  • it was never implemented during that era,
  • and remained mostly unknown for decades because of World War II.

Many historians still regard it as the first genuine high-level programming language.


Short Code (1949)

Short Code was developed for early electronic computers like UNIVAC.

It allowed mathematical expressions to be written symbolically rather than in raw machine instructions.

Example style:

X = (A + B)/C

But programs still had to be interpreted manually into machine instructions, making execution slow.


Autocode (1952)

Autocode is often considered the first compiled high-level language used in practice.

Developed by Alick Glennie for the Manchester Mark 1 computer.

Important innovations:

  • symbolic variables,
  • automatic translation to machine code,
  • easier arithmetic programming.

This was a major step toward modern languages.


FORTRAN: The First Major Modern Language (1957)

The first truly influential high-level language was:

FORTRAN

developed at IBM under John Backus.

FORTRAN stands for:

FORmula TRANslation

It was revolutionary because it:

  • produced efficient machine code,
  • allowed portable scientific programming,
  • introduced structured programming ideas,
  • made programming accessible to scientists and engineers.

Example:

DO 10 I = 1,10
    SUM = SUM + I
10 CONTINUE

FORTRAN became enormously important in:

  • physics,
  • engineering,
  • aerospace,
  • scientific computing.

Even today, FORTRAN is still used in some supercomputing applications.

Image

Image

Image

Image

Image

Image


Other Early Landmark Languages

LISP (1958)

Lisp by John McCarthy.

Important because:

  • foundational for AI research,
  • introduced garbage collection,
  • symbolic computation,
  • functional programming concepts.

Example:

(+ 1 2 3)

COBOL (1959)

COBOL was designed for business applications.

Associated strongly with Grace Hopper.

Readable syntax:

ADD HOURS TO TOTAL-HOURS.

COBOL dominated:

  • banking,
  • government,
  • enterprise systems.

Large amounts of global financial infrastructure still run on COBOL today.


ALGOL (1958)

ALGOL introduced ideas that shaped many modern languages:

  • block structure,
  • lexical scope,
  • formal grammar notation.

Languages influenced by ALGOL include:

  • C,
  • Pascal,
  • Java,
  • C++.

The Evolution Path

A simplified lineage looks like this:

Machine Code
    ↓
Assembly
    ↓
Autocode / FORTRAN / LISP / COBOL / ALGOL
    ↓
C
    ↓
C++
    ↓
Modern languages

Since you work heavily with C++, it’s especially important that:

  • C++ inherits much of its syntax lineage from C,
  • C inherited major concepts from ALGOL,
  • and ALGOL traces back to the earliest structured language research of the 1950s.

So when you write modern C++20 code, you are using ideas that evolved over nearly 80 years of programming language history.


Why Early Languages Matter

These early languages introduced ideas we now take for granted:

Concept Early Source
Symbolic instructions Assembly
Variables Plankalkül / Autocode
Compilers Autocode / FORTRAN
Structured blocks ALGOL
Functional programming LISP
Business-oriented syntax COBOL
Portable scientific code FORTRAN

Modern languages are combinations and refinements of these foundational ideas.


A Fun Historical Perspective

The timeline from early programming to modern C++ is surprisingly short:

Year Event
1843 Ada Lovelace’s algorithm
1945 Plankalkül
1949 Assembly languages emerging
1957 FORTRAN
1958 LISP, ALGOL
1959 COBOL
1972 C
1985 C++
2020 C++20

That means modern software engineering evolved from raw machine switches to advanced generic metaprogramming in less than a century.


After the first generation of languages like FORTRAN, Lisp, COBOL, and ALGOL, programming languages began branching into entire families of ideas.

Some languages focused on:

  • object-oriented programming,
  • functional programming,
  • systems programming,
  • safety,
  • portability,
  • concurrency,
  • or developer productivity.

Many modern languages are descendants or hybrids of earlier ones.


Smalltalk (1970s)

Smalltalk is one of the most historically important languages ever created.

Developed at Xerox PARC by people including:

  • Alan Kay
  • Dan Ingalls
  • Adele Goldberg

It popularized:

  • pure object-oriented programming,
  • graphical IDEs,
  • windows,
  • mouse-driven interfaces,
  • live programming environments.

In Smalltalk:

  • everything is an object,
  • even numbers and classes themselves.

Example:

3 + 4

Message passing was central:

Transcript show: 'Hello World'

Smalltalk heavily influenced:

  • Objective-C
  • Ruby
  • Python
  • Java

Modern IDEs and GUI systems also owe a huge debt to Smalltalk.

Image

Image

Image

Image

Image

Image


C (1972)

C was developed by Dennis Ritchie at Bell Labs.

C changed computing forever because it:

  • enabled portable operating systems,
  • balanced high-level abstraction with low-level control,
  • became extremely efficient.

The operating system Unix was rewritten in C, which proved that an OS could be portable across hardware.

Example:

printf("Hello, world!\n");

Nearly every systems language afterward was influenced by C:

  • C++,
  • Objective-C,
  • Java,
  • C#,
  • Go,
  • Rust,
  • Zig,
  • JavaScript syntax.

Pascal (1970)

Pascal was created by Niklaus Wirth.

Goals:

  • structured programming,
  • teaching programming cleanly,
  • safer code than C.

Example:

writeln('Hello');

Pascal strongly influenced:

  • Delphi
  • Ada
  • Modula-2
  • Oberon

It was widely used in universities in the 1980s–1990s.


Prolog (1972)

Prolog introduced logic programming.

Instead of telling the computer how to solve something, you described facts and rules.

Example:

parent(alice, bob).

Then you could query:

?- parent(alice, bob).

Important in:

  • AI research,
  • theorem proving,
  • expert systems,
  • symbolic reasoning.

Ada (1980)

Ada was commissioned by the U.S. Department of Defense.

Named after Ada Lovelace.

Goals:

  • reliability,
  • safety,
  • maintainability,
  • concurrency.

Ada pioneered:

  • strong typing,
  • package systems,
  • task-based concurrency,
  • compile-time safety.

It became important in:

  • aerospace,
  • military,
  • avionics,
  • rail systems.

C++ (1980s)

C++ was created by Bjarne Stroustrup.

Originally called:

“C with Classes”

It combined:

  • C performance,
  • object-oriented programming,
  • generic programming,
  • later functional features.

Modern C++ became extremely broad:

  • RAII,
  • templates,
  • STL,
  • metaprogramming,
  • coroutines,
  • concepts,
  • compile-time computation.

Because you work extensively with C++20, you’re already interacting with one of the most historically layered languages ever created — it contains influences from:

  • ALGOL,
  • Simula,
  • C,
  • functional programming,
  • generic programming research.

Simula (1960s)

Simula is hugely important because it introduced:

  • classes,
  • objects,
  • inheritance.

Created by:

  • Ole-Johan Dahl
  • Kristen Nygaard

It directly inspired:

  • Smalltalk,
  • C++,
  • Java,
  • modern OOP.

Many people consider Simula the first object-oriented language.


Objective-C (1980s)

Objective-C combined:

  • C,
  • Smalltalk-style messaging.

Example:

[object doSomething];

It became the primary language for:

  • macOS,
  • iOS, before Swift.

Strongly associated with:

  • Apple
  • Steve Jobs’s NeXT ecosystem.

Java (1995)

Java by Sun Microsystems.

Famous slogan:

“Write once, run anywhere”

Features:

  • JVM bytecode,
  • garbage collection,
  • strong OOP focus,
  • portability.

Java dominated:

  • enterprise software,
  • Android development,
  • backend systems.

Example:

System.out.println("Hello");

Python (1991)

Python by Guido van Rossum.

Goals:

  • readability,
  • simplicity,
  • productivity.

Example:

print("Hello")

Python exploded because of:

  • scripting,
  • automation,
  • web development,
  • AI/ML,
  • data science.

Today it is one of the most influential languages in the world.


Haskell (1990)

Haskell is a pure functional programming language.

Features:

  • lazy evaluation,
  • immutability,
  • advanced type systems,
  • monads.

Example:

main = putStrLn "Hello"

It heavily influenced:

  • Scala,
  • Rust,
  • F#,
  • modern functional programming.

Scala (2004)

Scala was created by Martin Odersky.

Scala aimed to unify:

  • object-oriented programming,
  • functional programming.

Runs on the JVM.

Example:

println("Hello")

Key ideas:

  • immutability,
  • higher-order functions,
  • pattern matching,
  • advanced type systems,
  • interoperability with Java.

Scala became important in:

  • distributed systems,
  • big data,
  • Apache Spark.

It is one of the clearest examples of modern languages blending paradigms together.


Rust (2010)

Rust by Mozilla.

Major innovation:

  • memory safety without garbage collection.

Concepts:

  • ownership,
  • borrowing,
  • lifetimes.

Rust targets:

  • systems programming,
  • safety,
  • concurrency.

It is increasingly important in:

  • operating systems,
  • browsers,
  • embedded systems,
  • high-performance infrastructure.

Go (2009)

Go developed at Google.

Goals:

  • simplicity,
  • fast compilation,
  • concurrency,
  • cloud infrastructure.

Features:

  • goroutines,
  • channels,
  • minimalistic syntax.

Widely used in:

  • Kubernetes,
  • cloud services,
  • backend systems.

JavaScript (1995)

JavaScript by Brendan Eich.

Originally created in just 10 days.

Became:

  • the language of the web,
  • later also servers via Node.js.

Modern JavaScript evolved enormously:

  • async/await,
  • modules,
  • functional patterns,
  • JIT compilation.

Language Family Tree (Simplified)

ALGOL
 ├── Pascal
 │    └── Modula / Oberon
 ├── C
 │    ├── C++
 │    ├── Objective-C
 │    ├── Java
 │    │    └── Scala
 │    ├── C#
 │    ├── Go
 │    └── Rust (influenced partly)
 └── Simula
      ├── Smalltalk
      ├── C++
      └── Java

LISP
 ├── Scheme
 ├── Common Lisp
 └── Functional language research
       ├── ML
       ├── Haskell
       ├── Scala
       └── F#

Some Historically Important Languages Not Yet Mentioned

Language Importance
Scheme Elegant Lisp dialect
ML Type inference
Erlang Fault-tolerant concurrency
Forth Stack-based systems
Perl Text processing and scripting
Ruby Developer happiness philosophy
Swift Modern Apple ecosystem
Kotlin Modern JVM/Android
Zig Modern systems language
OCaml Functional + imperative hybrid

The Big Historical Shift

Over time, languages evolved through major eras:

Era Main Goal
1940s Make computers programmable
1950s Abstract machine code
1960s Structured programming
1970s Systems programming & OOP
1980s Software engineering scale
1990s Internet and portability
2000s Productivity and concurrency
2010s+ Safety, parallelism, cloud, AI

Modern languages increasingly combine multiple paradigms:

  • object-oriented,
  • functional,
  • generic,
  • concurrent,
  • declarative.

That hybridization is exactly why languages like Scala, Rust, and modern C++ feel so powerful — they are the result of decades of accumulated language research.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment