By the way, about void-safety: for a decade now, Eiffel has been void-safe, meaning a compile-time guarantee of no run-time null pointer dereferencing. It is beyond my understanding how the rest of the world can still live with programs that run under myriad swords of Damocles: x.op (…) calls that might any minute, without any warning or precedent, hit a null x and crash.
—Bertrand Meyer, Why not program right?
I knew this would be exasperating, but really now. At this point, my eyes rolled completely out of my head and I no longer have eyes. ?
References don't just randomly become null without warning. You chose to call a function that might return null, and didn't bother to put in an if
or assert
when that's a possibility. Typically the exception system catches it if you do miss it.
The Objective-C model of nil messaging just returning nil or 0 was theoretically dangerous, but in practice incredibly useful. Crashing out in Javascript means I have to wrap everything with (x ? x.op() : null)
to get the same effect, which might require a lot of temp vars.
Do type devotees actually believe in randomly-appearing errors, or that dynamic programmers just flail our limbs on a keyboard until something manages to pass tests, or do they just exaggerate a rare edge case they saw once, or are they completely fabricating this stuff to justify their waste of time/perversion?
Type systems are self-inflicted BDSM, and it is not self-evident that everyone wants to wear a gimp suit.