# What Strong Typing Means in Programming Languages

DevFeed: [What Strong Typing Means in Programming Languages](<https://devfeed.tech/articles/strongly-typed-36221.md>)

Original publisher: [Read original article](<https://dotat.at/@/2025-08-28-strongly-typed.html>)

Published: 2025-08-28T01:33:05Z

Content type: opinion

Language: en

Sources: [Tony Finch's blog](<https://devfeed.tech/sources/tony-finch-s-blog.md>)

Topics: [Programming language](<https://devfeed.tech/topics/programming-language.md>), [Programming](<https://devfeed.tech/topics/programming.md>), [integrity](<https://devfeed.tech/topics/integrity.md>), [Polymorphism](<https://devfeed.tech/topics/polymorphism.md>), [Java](<https://devfeed.tech/topics/java.md>), [TypeScript](<https://devfeed.tech/topics/typescript.md>), [Lean](<https://devfeed.tech/topics/lean.md>)

Tags: [integrity](<https://devfeed.tech/tags/integrity.md>), [java](<https://devfeed.tech/tags/java.md>), [languages](<https://devfeed.tech/tags/languages.md>), [polymorphism](<https://devfeed.tech/tags/polymorphism.md>), [programming-language](<https://devfeed.tech/tags/programming-language.md>), [rust](<https://devfeed.tech/tags/rust.md>), [type-system](<https://devfeed.tech/tags/type-system.md>), [typescript](<https://devfeed.tech/tags/typescript.md>)

## AI overview

The article explains why "strongly typed" is a poorly defined term and examines several possible meanings, including static versus dynamic typing, soundness of static type systems, and runtime type safety. It argues that these properties are not simply yes-or-no and discusses trade-offs and examples from languages including Java, TypeScript, Rust, Lean, JavaScript, Lua, and C.

## Source excerpt

What does it mean when someone writes that a programming language is "strongly typed"? I've known for many years that "strongly typed" is a poorly-defined term. Recently I was prompted on Lobsters to explain why it's hard to understand what someone means when they use the phrase. I came up with more than five meanings! how strong? The various meanings of "strongly typed" are not clearly yes-or-no. Some developers like to argue that these kinds of integrity checks must be completely perfect or else they are entirely worthless. Charitably (it took me a while to think of a polite way to phrase this), that betrays a lack of engineering maturity. Software engineers, like any engineers, have to create working systems from imperfect materials. To do so, we must understand what guarantees we can rely on, where our mistakes can be caught early, where we need to establish processes to catch mistakes, how we can control the consequences of our mistakes, and how to remediate when somethng breaks because of a mistake that wasn't caught. strong how? So, what are the ways that a programming language can be strongly or weakly typed? In what ways are real programming languages "mid"? Statically typed as opposed to dynamically typed? Many languages have a mixture of the two, such as run time polymorphism in OO languages (e.g. Java), or gradual type systems for dynamic languages (e.g. TypeScript). Sound static type system? It's common for static type systems to be deliberately unsound, such as covariant subtyping in arrays or functions (Java, again). Gradual type systems migh have gaping holes for usability reasons (TypeScript, again). And some type systems might be unsound due to bugs. (There are a few of these in Rust.) Unsoundness isn't a disaster, if a programmer won't cause it without being aware of the risk. For example: in Lean you can write "sorry" as a kind of "to do" annotation that deliberately breaks soundness; and Idris 2 has type-in-type so it accepts Girard's paradox. T