Saved
Software

Objective-C

1984

Objective-C didn’t bring objects to C—it brought uncertainty to the call stack.

Worth your time?3.5/5Yes.Study the whole thing.What works, what does not, who it is for ↓
8:34in productionCh. 1 · A Pre-Processor, Not a Language/ 8:34 · ceiling 15 min
4 chapters · 8:34Ceiling 15:00

The brief is written and checked. The video joins this page when it is cut.4 chapters · 1 min read · 8:34 planned

Read the brief

Objective-C is a strict superset of C that introduces Smalltalk-style message passing as its core object-oriented mechanism. It was developed by Brad Cox and Tom Love in the early 1980s and first formally described in Cox’s 1986 book. Its design centers on runtime message resolution — not compile-time method binding — enabling dynamic typing, delegation, and forwarding. Syntax for non-object features matches C exactly; object features use Smalltalk-inspired messaging syntax. The language was standardized informally through that 1986 publication and later implemented in GCC and Clang.

Chapters & takeaways4
  1. 1:01
    A Pre-Processor, Not a Language

    It is not a new language—it is C plus a pre-processor that injects Smalltalk messaging.

  2. 2:11
    Strict Superset, Zero Migration Cost

    Every C program runs unmodified; non-object syntax is identical to C.

  3. 3:39
    Message Passing, Not Method Calling

    You send messages—you do not call methods—and the receiver decides what to do, at runtime.

  4. 5:22
    1984 Invention, 1986 Standard

    Brad Cox and Tom Love built it in the early 1980s; its formal description appeared in 1986.

1 more chapterFewer chapters
Worth your time?

Yes. Study the whole thing.

3.5/ 5
What works
  • C interoperability
  • Smalltalk-style messaging
  • Runtime resolution enabling delegation and categories
What does not
  • enforce type safety at compile time
  • resolve messages early
  • eliminate C’s memory management hazards
Study it if
  • developers needing dynamic object behaviour within a C ecosystem
  • teams maintaining legacy NeXTSTEP or early macOS codebases
Skip it if
  • teams prioritising static analysis or compile-time safety
  • projects requiring modern tooling or memory safety guarantees
Who should study it, and who should skipHide who it is for
The written brief1 min read

What it is and the problem it solves

Objective-C is a C superset that adds dynamic message passing to enable object-oriented programming. It solves the problem of extending procedural C with flexible, runtime-modifiable object behaviour—without abandoning C’s portability or low-level control.

How it works

Objective-C works by layering Smalltalk-style message passing onto C. It uses a pre-processor to translate messaging syntax into C-compatible runtime calls. Message targets are resolved at runtime, not compile time. Objects interpret messages dynamically, enabling delegation and forwarding.

What works

C interoperability works: any C program compiles unchanged. Smalltalk-style messaging works: objects respond to messages they understand, ignore others, and can forward unknown ones. Runtime resolution works: it enables delegation, categories, and dynamic method injection.

What does not

It does not enforce type safety at compile time. It does not resolve messages early, so errors surface only at runtime. It does not eliminate C’s memory management hazards—manual retain/release remains error-prone and unenforced.

What it changes

It changes how programmers think about interfaces: from rigid method calls to fluid, late-bound interactions. It shifts responsibility from the compiler to the object, making behaviour more adaptable but less verifiable. It establishes runtime introspection as a first-class language feature—not an add-on.

Is it worth your time

Yes—if you need dynamic object behaviour within a C ecosystem and are willing to absorb the runtime cost and syntax friction. No—if you prioritise static analysis, compile-time safety, or modern tooling. It has no intrinsic advantage over later alternatives unless legacy integration is non-negotiable.

Same field · Software4 of 114
10:46
C++Bjarne Stroustrup · 1983C++ is a systems programming language that enables high-level abstractions without runtime overhead. It delivers performance and control—but only to those who master its intricate, unforgiving rules.
11:20
FortranJohn Backus · 1957Fortran is the first high-level programming language to achieve broad use. It succeeded not by abstracting away hardware, but by proving abstraction could coexist with assembly-level performance — specifically for numeric computation on the IBM 704. Its compiler introduced the basic block and Monte Carlo–driven memory layout, establishing techniques that remain standard. It made computing accessible to scientists — but only those doing number-crunching, and only on IBM hardware.
11:03
Lisp (programming language)John McCarthy · 1958Lisp is the first language to treat code as data—and the first to prove that a small set of primitives plus eval suffices for universal computation. Its cost is runtime overhead; its payoff is programmable programmability.
10:01
Python (programming language)Guido van Rossum · 1991Python is a dynamically typed, whitespace-delimited programming language conceived by Guido van Rossum in December 1989 as a successor to ABC. Its first release was Python 0.9.0 in 1991. It introduced a strict visual grammar for code blocks, paired dynamic typing with reference counting and cycle detection for memory management, and codified its philosophy in PEP 20. Python 3.0 (2008) broke backward compatibility. Optional static typing arrived in 3.5. Van Rossum named it after Monty Python's Flying Circus and wrote the first interpreter as a Christmas holiday project.
Up next in Technology

Multiplayer video game

· 9:58

Multiplayer video games are not about playing together—they’re about negotiating presence across broken pipes.

9:58