12 ms·
As someone who dropped C++ almost entirely a decade ago because I couldn't deal with both the immense complexity and the legacy baggage of C++, this is pretty e
by simias 4y ago
As someone who dropped C++ almost entirely a decade ago because I couldn't deal with both the immense complexity and the legacy baggage of C++, this is pretty exciting honestly.
What I find a bit strange is that he explains that he's been working on this since 2015 (with "most of the 'syntax 2' design work in 2015-16") and he doesn't want to give documentation because "that would imply this project is intended for others to use — if it someday becomes ready for that, I'll post more docs."
Why this reticence to opening the project and have others play with it and, potentially, contribute to it? I can't imagine a new language becoming successful with this mindset.
- mort96 4y agoBecause this isn't a new language which is attempting to become successful. This is a playground to experiment with ways to evolve C++ into a better language.
- simias 4y agoAll the more reason to have people play with it, no?
- bangonkeyboard 4y agoOther people playing with and using it decrease his ability to make breaking changes freely.
- jlarocco 4y agoIt seems like other people should come up with their own "playground" for experimenting?
- ablob 4y agoI think it's more about losing control. As soon as the documentation is open, there is a lot more pressure to explain the decisions made in an accurate or accepted fashion. Add some good old bike-shedding or contributions that miss the point and a project that was once fun becomes tedious to work for.
- samatman 4y agoIt also adds a lot of drag to iteration to have to go back and rework documentation. On this kind of project, it's more than syntax-deep. Documentation would have a lot of reasoning and justification in it, which can take deep work to keep up to date.
- kazinator 4y agoSutter isn't saying there isn't documentation, but that he's not releasing it.
- threatripper 4y agoDocumenting something for yourself and documentation that is ready for public release are two very different animals.
- gumby 4y agoA lot of decisions made, BTW, have been explained in proposals for the C++ committee that came out of this work.
- summerlight 4y agoYeah, I couldn't agree more. this is exactly what's happening in ISO C++ and Herb should be well aware of its problems since lots of his good proposals failed to proceed many times thanks to WG21 rife with all the bureaucracies and nitpicking. This kind of skunk works needs to be fully driven by a competent individual or small group until it's finally able to demonstrate a good value proposition and build trusts by the project itself.
- ethbr0 4y agoAnd a common cause of getting stuck in local maxima (specifically, in committee/consensus-driven projects) is that each individual decomposed feature doesn't obviously deliver value on its own merits, but the sum of a group of such features can reach a higher local maxima. Aka, why argue about feature A, when the goal and long game is how A+B+C+D works?
- nsajko 4y ago> As someone who dropped C++ almost entirely a decade ago because I couldn't deal with both the immense complexity and the legacy baggage of C++, this is pretty exciting honestly. This seems to be just a syntax frontend for C++. The underlying semantics stay the same. BTW, if you dropped C++ a decade ago, you should now look into the modern improvements (C++20).
- rrss 4y ago> Important disclaimer: This isn't about 'just a pretty syntax,' it's about fixing semantics
- xpe 4y ago> if you dropped C++ a decade ago … Fair. Still, the more recent C++ improvements tend to roll out slowly across the ecosystem and work environments.
- badtension 4y agoWhat does the C++20 change in a day-to-day work? I know they added "stuff" (as always) but is there anything that really benefits >80% of all cpp programmers?
- jcelerier 4y agoto me concepts and coroutines really reduce the amount of boilerplate needed. - just the ability of doing if constexpr(requires { T::some_member; }) { ... } to check if a type has a member variable / function / whatever makes code infinitely clearer than the previous mess requiring overloads. - coroutines finally enable to properly abstract the data structures used by a type's implementation, e.g. you don't need to spill out anymore that your type stores stuff in std::vector or std::array or boost::small_vector or std::list etc etc to client code, and they simplify async code very well. for instance with Qt: https://qcoro.dvratil.cz/reference/core/qprocess/#examples https://qcoro.dvratil.cz/reference/core/qprocess/#examples - three-way comparison and automtic generation of comparison / equality function is really great for removing needless boilerplate - void f(auto arg) { ... } instead of template<typename T> void f(T arg) { ... } - foo{.designated = 123, .init = "456" }; (although it was already more or less supported on every relevant compiler for years
- zulban 4y ago> Why this reticence to opening the project and have others play with it I heard this recently: open projects are like Good Will Hunting but in reverse. You start as a respected genius, and end up as a janitor getting into fights.
- nicky0 4y agoBecoming a successful lamnguage does not seem to be a goal of the project: "Cppfront is a personal experimental compiler from an experimental C++ 'syntax 2' to today's 'syntax 1,' to learn some things, prove out some concepts, and share some ideas."
- gumby 4y agoAnd this work has resulted in things that were discussed or even got into subsequent C++ standards.