Ironic to hear that coming from Stroustrup. The language he has created, C++, is notorious for allowing the programmer to make a wide variety of very subtle errors that are impossible in most other languages.
Yeah, to someone unfamiliar with the topic it would seem that I make very strong statements. “Very subtle”? “Impossible in most other languages”? But the crazy truth is, my words are completely warranted. The most well-known example: after the addition of exceptions and templates to the language, it took several years for people to realize that writing exception-safe template code is a minefield (see Tom Cargill’s 1994 article), and three more years till anyone proposed a valid solution (Herb Sutter in 1997). Note that generic containers were one of the major motivations for templates in the first place! So we see seven years passing from introduction of a feature into a widely-used language, to the first time someone manages to correctly use the feature for its intended purpose.
The good news is, the language is still growing. I think I can confidently predict that when (if) the new standard comes out, people will be finding weird new interactions between features for years to come. I mean, just read that Wikipedia article from beginning to end, and try to tell me you disagree :-)
Ironic to hear that coming from Stroustrup. The language he has created, C++, is notorious for allowing the programmer to make a wide variety of very subtle errors that are impossible in most other languages.
Yeah, to someone unfamiliar with the topic it would seem that I make very strong statements. “Very subtle”? “Impossible in most other languages”? But the crazy truth is, my words are completely warranted. The most well-known example: after the addition of exceptions and templates to the language, it took several years for people to realize that writing exception-safe template code is a minefield (see Tom Cargill’s 1994 article), and three more years till anyone proposed a valid solution (Herb Sutter in 1997). Note that generic containers were one of the major motivations for templates in the first place! So we see seven years passing from introduction of a feature into a widely-used language, to the first time someone manages to correctly use the feature for its intended purpose.
The good news is, the language is still growing. I think I can confidently predict that when (if) the new standard comes out, people will be finding weird new interactions between features for years to come. I mean, just read that Wikipedia article from beginning to end, and try to tell me you disagree :-)