5 ms·
Committees tend to design less beautiful things. Look at modern c++ too. What a mess. Everyone in the committee has to jam in their favorite feature, much of wh
by skellington 3y ago
Committees tend to design less beautiful things. Look at modern c++ too. What a mess. Everyone in the committee has to jam in their favorite feature, much of which is sugar.
- nsajko 3y agoModern C++ is actually going relatively OK? You may be thinking of the old, pre-C++11 C++?
- chippiewill 3y agoModern C++ _is_ actually a mess to be fair. Overall it's still an improvement on pre-c++11, but when looking at it end-to-end it feels awfully disjointed.
- Sankozi 3y agoIf you have a mess and add something to it, you still have a mess, probably a bigger one. To clean the mess you need to remove something (which is really hard in a programming language) not to add something. Selecting and enforcing usage of a subset of C++ is a way to deal with that mess which companies frequently use.
- zozbot234 3y ago> To clean the mess you need to remove something Sure, but that's why Carbon and Cppfront are a thing now. These two actively remove stuff from C++. We'll probably see this happen in the Rust community as well once the newer Crab language becomes established. Then we'll have to rewrite everything in Crab, but it will probably be a lot simpler than the Rust rewrite.
- deleted 3y ago[deleted]
- nsajko 3y agoEverything is a mess. The universe is a mess. That doesn't make perfectionism a good thing. Besides, the C++ committee does, in fact, remove stuff from the language to clean the mess, just not without due care.
- rcxdude 3y agoThey do so once in a blue moon, and only for ideas so spectacularly bad that either they were never implemented or never used by anyone. Those aren't the main problem with C++ mess, the issue is the many small but important details which are deeply embedded into the language since it started as a super-set of C.
- flohofwoe 3y agoC++11 is exactly where the mess started ;) C++ releases got more frequent since then, but at the same time, more half-baked features slip in that haven't been battle tested in the real world before, or need refinement over the next decade worth of releases (if they can be fixed at all).
- rcxdude 3y agoI don't think that modern C++ is any less messy than old C++. If anything it's more so, as even more difficult conscessions to backwards compatibility emerge. That's not the say the new functionality isn't useful, but I don't think it cleans anything up. Modern C++ is approaching an order of magnitude more complexity than pre-C++11 (which is not surprising if you are adding features but not removing or changing old functionality), and I don't think it's a sustainable increase.
- eru 3y agoHaskell is designed by committee, and it's a fairly alright language.
- asplake 3y agoModulo which prelude you're supposed use. That was enough to put this newcomer off
- tinco 3y agoIt suffers from the same problem C++ does though, it's got a broken "prelude" and the committee just doesn't have the courage to ever fix it. Weirdly a long time ago the opinion was that since the language was academic they weren't hindered by the demands of stability that corporate users might so they could do epic things like the switch to monadic I/O. I feel if the Haskell committee could simply pick one of the alternative preludes, and gather some packages into a new standard library, and announce it all as a Haskell 2.0 or Haskell prime or whatever it could really reinvigorate the community. But what committee would be motivated to do such a thing, bearing the responsibility if it went wrong?
- marcosdumay 3y agoThey are fixing it... it's just happening at committee speeds. I would really like to be able to specify what prelude I want at the .cabal file. AFAIK, that's one change that wouldn't break anything. (Anyway, Haskell is one case of a language asking for a fork. Maybe it takes the form of Idris or some other derived language having some sudden growth instead, but you are right, the committee currently isn't as fast as the community.)
- eru 3y agoI agree with the broken "Prelude". Fortunately, you can mostly ignore the Prelude and replace it with your own fairly easily. (As you suggest.) The bigger problem is that strings are broken: by default they are linked lists of Characters. You can use better strings (like Data.Text) and you even get to use them as literals in your source, but the language ecosystem of libraries mostly assumes that you are using the default strings. And converting back and forth is annoying. Because of all the existing libraries, it's harder to route around [Char] by yourself.