# Type Systems Vocabulary

A short post by [[lewis-campbell]] arguing that online programming discussion often misuses type-system terminology — making the discussion either hard to follow or actively misleading. The fix is to keep the two axes straight: static/dynamic and strong/weak.

## The two axes

**Static vs dynamic** is about *when* types are checked. Static type systems read source code as a static asset and reject programs that fail the check before they run. Dynamic type systems attach a type to each value and check on demand at run time.

**Strong vs weak** is about how much implicit coercion the language performs. C is weak — pointer arithmetic happily reinterprets bytes. Python is strong — calling a method that expects one type with another type raises an error rather than silently converting.

The two axes are orthogonal. Campbell deliberately picks C and Python as examples to make this concrete: C is **statically + weakly** typed, Python is **dynamically + strongly** typed. Neither pair travels together as a package deal. See [[type-system-axes]] for the four-quadrant matrix.

## Things people get wrong

**Dynamic ≠ untyped.** Dynamically typed languages have types; the name says so. Untyped means no checking happens at all, statically or dynamically. The two are different categories.

**Strong ≠ static, weak ≠ dynamic.** This is the point of the C/Python example. Conflating the axes produces sentences that sound meaningful but resolve to nothing specific.

**"Strict typing" and "loose typing" are amateur terms.** They appear to be invented by people who haven't internalized the two-axis model. A reader can't tell whether "strict" means static, strong, or both — so the term obscures rather than communicates.

## Why this matters

The post is short, but the underlying point generalizes. When a vocabulary collapses two independent dimensions into one slider, the resulting conversations cannot reach agreement: the speakers are arguing about different things while sharing a word. Keeping the axes separate is what makes the conversation possible at all.
