Composition

How Multicore CPUs Changed Object-Oriented Programming
OOP’s implicit reference semantics were manageable in single-threaded code. But when CPUs went multicore in 2005, hidden shared state went from ‘confusing’ to ‘catastrophic.’ This is why Go and Rust refined OOP: keeping methods and encapsulation while replacing inheritance with composition and implicit references with value semantics.
Go Interfaces: The Type System Feature You Implement By Accident
You write a struct with a Write method. Three months later, you discover it implements io.Writer. You never declared this. How did it happen? Exploring Go’s implicit interfaces and the power of accidental implementation.