The article quotes DHH:
[Ruby] offered a different and radical perspective on the role of the programmer: That they could be trusted with sharp knives… That’s an incredibly aspirational idea, and one that runs counter to a lot of programmer’s intuition about other programmers.
There’s nothing radical about this idea at all. It’s mundane (and wildly insecure) C programming. Programmers thinking that programmers are smart and should have unchecked power is just orthodoxy.
Further in the quoted article:
I’ve yet to hear a single programmer put up their hand and say “I can’t trust myself with this power, please take it away from me!”.
Well, maybe get out more?
[With Rust it’s] the first time in my life I feel like I could trust myself to write fast, efficient, low level systems code.
On the other hand, I would never be fully confident in a large system built on a DT language. It’s not because I don’t trust the language. It’s because I don’t trust myself.
…and so on. Not hard to find such examples if one listens. But I agree it’s the minority view. Most programmers do seem to crave unlimited and dangerous power. It’s not an “aspiration,” it’s a menace to society.
And if “power” is the best way to think about it, think of the power to set constraints. I want to make entire classes of errors impossible without losing expressive power, and I can’t do that in Ruby.
ironically, my mental image of static programming in ocaml is exactly “using a nice sharp knife”, because it let me score a very precise line between what i want to do and what i want not to do. i love ruby too, but i don’t get that feeling of sharpness and precision when i’m using it.
You might like this: http://blog.fogus.me/2013/10/07/scala-sharp-and-gets-things-cut/
This just shows that the “sharp knives” analogy is flawed.
The competent programmer is fully aware of the strictly limited size of his own skull[…] – Edsger W. Dijkstra
So if static typing, memory management or other tools and techniques can help us eliminate whole classes of bugs, I’m all for it.
I too like to eat my dinner with blades, only blades. No sense in forks they simply hold me back, slow me down. Sliced lips are a small price to pay for progress.
On the subject of tests vs. types, one of the great things about types is that by restricting the domain you can make many tests unnecessary by making it impossible for the programmer to create an erroneous value. Also, property-based testing (e.g. Haskell’s QuickCheck) are made much more approachable by a powerful type system.
The issue is much more complicated than what is presented in this blog post (and the follow-up on the same site.) Also the author uses far too many words to express the limited points that are covered. I’m not a fan of the “type wars” genre and this one is less useful than it could be.