Beyond OOP: The Evolution of Subtyping in Programming Languages

2025-03-29

This article explores the crucial role of subtyping in programming language design. The author, drawing on their experience developing several programming languages, explains that subtyping is not limited to class inheritance in object-oriented programming but is a more fundamental concept: type X is a subtype of type Y if a value of type X can be used wherever a value of type Y is expected. The article clearly explains why subtyping is crucial even in performance-oriented low-level languages, enabling the compiler to statically check for null values, aliasing, and other issues, thereby improving code reliability and ultimately driving the evolution of programming languages.

Development subtyping