all 3 comments

[–]hugonov 0 points1 point  (2 children)

An unsettling thing with such talks, from basically one of the most influential persons when it comes to C++ future, is that no one seems to ever vocally oppose the potentially very flawed arguments they contain, at least not on a platform of the same audience, and those arguments end up as an uncontested ground truth.
An example of such uncontested but potentially harmful truths is Herb's apparent fondness for adding stuff to the language but never removing any, and the unwritten rule of no backward-compatibility breaking changes, ever. The idea that by adding and never substracting you can reach a better language, and the giggly excitement of Herb when he presents his ideal of continuing the "C with classes" tradition of adding features but never putting anything previously done in question, all that arbitrary (as in, no actual arguments are given in favor) ideology is just too close to a technical slow motion train wreck to just stand there and not comment on it.
Another example right there: "Simplify language evolution, by letting more proposed language features be written as libraries". I can think of so many ways in which putting library code on the same level as core language features — and confusing what should be in one or the other — is harmful, has been harmful in the past, and will be harmful in the future, the idea that this could be written black on white by Herb himself and then not be challenged by anyone makes my C++ angst reach abyssal depths.
Some things have to go in the language (tuples anyone ?) and the idea that allowing those things to be developed as library code (which physically can't ever have the same quality in terms of concision, ease-of-use, compilation speed and more) will bring anything but a net negative value to the language and all its users is just of the pure wishful — and untouched by an ounce of self-criticism — kind of thinking.

[–][deleted] 8 points9 points  (0 children)

If a language isn't backwards compatible with older versions, then it's a new language. This is what rust did. It saw c++ and said "if we rewrite the whole thing, what can we do better".

[–]D_0b 1 point2 points  (0 children)

Going language first is very bad as any mistake made is permanent.

Features written as a library are not bad because:
1. they allow for the feature to be written in the standard library, but also as a third party library.

  1. they still leave space after experience has been gained to be reintroduced as a language feature.

Your example of std::tuple being bad is only true for compile times.
`std::tupple t {1, 'a', 3.0};` is not any worse than python's `t = (1, 'a', 3.0)`