Even more new C++ features
ib-krajewski.blogspot.com
ib-krajewski.blogspot.com
It's easy to sound smart when you're only detracting from something because you aren't providing a (complete) counterproposal that could be criticized. And it's easy to say "don't add features, remove them" if the feature being removed is not one you personally depend on. And if you're not an actual user of the C++ language it's especially easy to say "don't add features, remove them" because you aren't depending on ANY features!
There are minimalist languages; C++ is not one of them.
I think it is much more interesting and useful to explore how far you can go if you program entirely using the new syntax features. This may make it look and feel like completely a different language than old C++, but rather than put it up as a straw man and knock it down, recognize that this new language is an exciting undiscovered country.
I'd love a statically typed Ruby, for example. Duby looks interesting, but a bit young and incomplete to use.
Here are a few similarities:
* concise syntax (Ruby via dynamic typing, Scala via type inference)
* hybrid OO-functional (Ruby isn't normally described this way, but it has a lot of functional idioms built in, and unlike in Python, they're often considered good style)
* dogmatic wrt the OO part (i.e. every value is an object, unlike Java or C++)
* TIMTOWTDI (should my Scala higher-order function take a function or a lazy value?)
* DSL fetishism
* very flexible and adaptable syntax, which (for both languages) is a two-edged sword - esp. things like Ruby's optional method invocation, and Scala's optional dot
* both allow adding methods to existing classes (Scala fakes this via implicit conversions, but I believe it's idiomatic)
http://macstrac.blogspot.com/2009/04/scala-as-long-term-repl...
The thing which appeals about Duby is that it uses the underlying Java typesystem, and doesn't have a runtime library. If it ever gets finished, it can be as fast as any Java code, and there's been a lot of effort put into making Java code fast.
Instead of adding features, they should be cutting them. C++ is 27 years old, yet there still isn't a full production-quality implementation of the specification. And they carry on regardless, adding more and more features.
C++ could learn a lot from the way Python is managed. PEPs, a reference implementation, and an individual with the power to veto - to keep the language heading in a single direction.
If Guido puts a feature in CPython, that's a iron-clad edict to all other would-be implementors, because CPython has a huge majority market share. Not implementing the same feature means you aren't implementing python. There is nothing equivalent in the C++ world so no one has power, either through standardization or implementation, to single-handedly steer the language.
In fact there are members of the standards committee who do control a language implementation, like Herb Sutter. The committee is full of prominent members with intellectual capital who exercise their formal voting rights as well. There is no dictator.