3 ms·
> “Worse is Better”, in other words, asks us to accept a false dichotomy: either we write software that is ugly and full of hacks, or we are childish idealists
by haberman 12y ago
> “Worse is Better”, in other words, asks us to accept a false dichotomy: either we write software that is ugly and full of hacks, or we are childish idealists who try to create software artifacts of beauty and elegance.
I think this criticism is slightly misattributed. Ideologues ask us to accept a false dichotomy. Ideologues exist on both sides of an issue usually. For example, there are most definitely ideologues who believe this same dichotomy exists, but believe that the only option is to choose beauty and elegance, even at the expense of practicality. These are the people who (for example) wish Lisp machines had won and that we lived in a monoculture of only Lisp.
I like C++ because I think it's useful, but I'm not a Worse is Better Ideologue. For example, I like Rust as a potential "better is better" replacement for a lot of C++'s use cases. I like Rust particularly because it seriously addresses nearly all of the practical advantages of C++. Many "Better is Better" ideologues would rather just hand-wave away the negatives of the compromises required to achieve their vision (like mandatory GC).
Rust proves that "better is better" design can address real-world practical challenges, while also providing an escape hatch back into a more primitive "Worse is Better" kind of world (unsafe blocks). It will be interesting to see if this approach gains the traction that I hope it will.
- pcwalton 12y agoI think "worse is better" vs. "better is better" is best understood as a continuum rather than a black-and-white dichotomy. The popular impression of Rust is indeed better-is-better as you say, but many folks coming from Haskell think of Rust as a worse-is-better language, as it has control flow, impurity, strictness, no higher-kinded types, method notation, object types (as opposed to first-class existentials), curly brackets, etc. The truth is that they're both right: Rust is pragmatic where it needed to be and novel where it needed to be. I think"worse is better" vs. "better is better" is fundamentally business-driven: does your product deliver value through compatibility/familiarity or by doing things in a technically better way than the competition? Both have been successful, and choosing the right one is basically a question of business judgment.
- handsomeransoms 12y agoGreat point, just a nit: Rust does not have mandatory GC.
- steveklabnik 12y agoIt doesn't even have optional GC.
- dllthomas 12y agoArguably, it has mandatory manual GC.
- haberman 12y agoYes, that's what I was trying to say, sorry it if it was unclear. Some "better is better" ideologues will make mandatory GC a part of their vision despite of its costs. Rust has taken a different approach and come up with a "better is better" design that does not make this compromise.