Java introduced lambda expressions in 2014, but functional programming concepts date back to Lisp in 1958. Why the 56-year gap? This post argues that languages adopt features only when external pressures make them unavoidable. The trigger was the end of Dennard scaling around 2005, which halted the era of ever-increasing CPU clock speeds. With single-thread performance plateauing, developers needed new tools to exploit multi-core processors. Functional programming's emphasis on immutability and statelessness made it ideal for parallel execution. The author frames this as a core lesson for architects: technology choices are often reactive responses to constraints, not pure innovation. Understanding this pattern helps engineers anticipate future language shifts and design systems that align with hardware realities.
Java's 2014 adoption of lambdas wasn't about novelty—Lisp had them in 1958. It was a response to the 2005 end of CPU clock speed scaling, forcing a shift to parallel and functional paradigms.