technologybriefs
8:34in productionCh. 1 · A Pre-Processor, Not a Language/ 8:34 · ceiling 15 min
Software

Objective-C

1984

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

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.

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
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 102
10:03
Go (programming language)Robert Griesemer, Rob Pike, Ken Thompson · 2009Go is a statically typed, compiled programming language designed in 2007 by Robert Griesemer, Rob Pike, and Ken Thompson at Google to improve programming productivity for multicore, networked machines and large codebases. It combines static typing and runtime efficiency like C, readability and usability like Python, and high-performance networking and multiprocessing. Publicly announced in November 2009 and released as version 1.0 in March 2012, Go emphasizes simplicity, safety, and developer tooling — especially around concurrency via goroutines and channels, packaging, testing, and deployment — while deliberately omitting features like inheritance, assertions, pointer arithmetic, and implicit type conversions. Its design reflects a focus on the software development process itself rather than just language syntax or semantics.
9:44
Apache CassandraFacebook · 2008Cassandra is a distributed, wide-column database built for write-heavy, multi-datacentre workloads. It prioritises availability and scalability over consistency. It requires upfront schema design aligned to access patterns. It was developed at Facebook for inbox search and released open-source in July 2008.
10:00
Apache HadoopYahoo · 2006Hadoop is not a database or a query engine. It is a fault-tolerant batch-processing substrate built for scale, not speed or simplicity.
10:34
Amiga 10001985The Amiga 1000 is not defined by what it promised, but by what it delivered on day one: a working, shipped, ROM-locked implementation of preemptive multitasking — alongside deliberate physical design choices that treated the case as functional infrastructure. Its limitations are architectural, not aspirational.
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