Atlas · Details
Is Weak Typing Strong Enough?
Author’s note
Not a bad read. It starts off with a bunch of kind of obvious distinctions, but then it becomes clear why. My Java/Perl showdown from Customer Service Apps at Amazon made it clear, over a period of several years, that all the FUD around dynamic languages was over nothing.
Back then, it was pretty unusual for a "real" company to be written entirely in a dynamic language. Today we have lots of examples, like Stripe using mostly Ruby, and Booking.com using mostly Perl.
Node and TypeScript had a huge impact on the ecosystem and adoption of dynamic languages. Now they're everywhere, but back when I wrote this, they were definitely considered to be for Losers Only. That's why I'd do these rants.
AI Notes
The piece rests on evidence most language essays don't have: a multi-year, mostly apples-to-apples Perl-vs-Java comparison running in the same production environment at Amazon's Customer Service Apps group, on the same tasks, with the same engineers rotating between them. Steve lays out the five honest advantages of static typing and the six honest disadvantages, then reports what he saw — the Perl code stayed smaller and simpler, the team shipped use cases faster, the data-integrity problems were manageable, and the static-typing camp kept cutting holes in their own type systems (the CORBA-interface-with-an-XML-string-parameter escape valve) to survive change. Static type systems, he argues, are bureaucracy — sometimes the right bureaucracy (a bank; a hard real-time system) but bureaucracy nonetheless, and most of what Amazon was building couldn't afford the overhead. The careful version of the conclusion is the one to remember: enforced static typing is detrimental, the complete absence of static-typing affordances is also problematic, and Lisp's add-types-where-they-pay-for-themselves model is close to ideal.
This is the empirical leg of Steve's 2004–2006 language arc, and a clear statement of the type-system debate from a working production engineer. The December 2005 postscript apologising for "deliberately misusing" strong/weak terminology after some Python folks didn't appreciate the poetic licence is itself an early example of the audience-feedback dynamic that would shape much of Steve's Blogspot-era writing.
Related listings
-
2004
When Polymorphism Fails
The design-essay companion. Polymorphism Fails is about where class-based OO breaks; Weak Typing is about where static type-systems break. Same underlying complaint, two scales.
-
2005
Choosing Languages
Same arc — the framework piece. Weak Typing is the empirical evidence that put Steve in the four-bucket framework's dynamic-by-default position.
-
2004
Tour de Babel
Same year — the broad survey this piece updates. Tour de Babel ranks languages by feel; Weak Typing tests that ranking against a multi-year side-by-side at Amazon.