3 ms·
I agree that not all of the things you list necessarily reduce errors, or that those that do increase productivity over the long run, because you sort of straw-
by bguthrie 16y ago
I agree that not all of the things you list necessarily reduce errors, or that those that do increase productivity over the long run, because you sort of straw-manned me a little bit there. Me, I don't love strong type systems. But garbage collection doesn't fall into that category.
As for state, the concerns there are confined primarily to concurrent systems, and about a gazillion people have discussed its problems with greater eloquence than I can muster (Joshua Bloch comes to mind). But you're a great programmer--no sarcasm intended--and if you say you can produce a great concurrent system and still carry around a ton of state then I believe you. I'm genuinely looking forward to the fruits of your labor. Most people, myself included, can't.
The goal isn't to twist yourself or your users into a pretzel trying to build a language that prevents any error whatsoever from occurring, as far as I'm concerned. The goal is to produce a language that shrinks the potential for bad stuff on the downside and encourages good practices (and stays out of your way) on the upside. C did, in its day, accomplish both things admirably, and for some tasks it remains the best tool. It does not, however, follow that all of its shortcomings are in fact virtues, and that those who say otherwise are marketing.
- zedshaw 16y agoI'll give you a hint about how it's done: Finite State Machines. They're provable, simple, and are designed to handle state. Removing state isn't the answer. Giving programmers great FSM tools is (like in Erlang).
- jrockway 16y agoYou are confusing mutable state and state. Of course you need state. What you don't need is randomly overwriting blocks of memory when your program makes a state transition. Instead, you want more structured state transitions. A FSM is one way of getting that.