Linked by Thom Holwerda on Mon 13th Aug 2007 17:57 UTC
General Development "A good programming language is far more than a simple collection of features. My ideal is to provide a set of facilities that smoothly work together to support design and programming styles of a generality beyond my imagination. Here, I briefly outline rules of thumb (guidelines, principles) that are being applied in the design of C++0x. Then, I present the state of the standards process (we are aiming for C++09) and give examples of a few of the proposals such as concepts, generalized initialization, being considered in the ISO C++ standards committee. Since there are far more proposals than could be presented in an hour, I'll take questions." Dr. Bjarne Stroustrup is the original designer and implementer of the C++ Programming Language.
Thread beginning with comment 263195
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE[5]: C: Esperanto
by falemagn on Mon 13th Aug 2007 22:41 UTC in reply to "RE[4]: C: Esperanto"
falemagn
Member since:
2005-07-06

Macros can change the way we think about truth.


As already said, blame the programmer, not the tool.

What's so bad about this?:

o.Lock();
// stuff
o.unLock();


The fact that you need to invoke the unLock() method explicitely, which is prone to error and is the reason for using the macro in the first place.

You shouldn't need a special class to have a bounds-checked array.


Why not?

Reply Parent Score: 1

RE[6]: C: Esperanto
by butters on Mon 13th Aug 2007 23:02 in reply to "RE[5]: C: Esperanto"
butters Member since:
2005-07-08

Placing the closing bracket of your for loop is prone to error, and if you leave it out completely, I imagine the resulting compiler error being non-trivial to track down. Coverity is useful for verifying arbitrary locking conventions.

Why make the bounds-checked array the default array? Because you very rarely want to reference outside the bounds of an array, and you very rarely care enough about the minimal overhead to warrant the risk of bugs and vulnerabilities. For those times where you want to linearly traverse a 2D array or where you need to squeeze everything out of that inner loop, you can opt for the simple array.

Reply Parent Score: 2

RE[7]: C: Esperanto
by falemagn on Tue 14th Aug 2007 03:29 in reply to "RE[6]: C: Esperanto"
falemagn Member since:
2005-07-06

"Placing the closing bracket of your for loop is prone to error, and if you leave it out completely, I imagine the resulting compiler error being non-trivial to track down.


1) It's less prone to error than having to write a full method call, since you're likely to get a graphical hint from the editor you're using. In any case, it's not more prone to error than omitting any other closing braket.

2) The compiler might emit a non trivial error, this depends on the compiler, but at least it will complain. A far better situation than it not complaining at all.

"Coverity is useful for verifying arbitrary locking conventions."


Quite a controversial statement from soneone who advocates the compiler to have all features one needs... then use an external tool to do something the compiler can already do? ;-)

"Why make the bounds-checked array the default array? Because you very rarely want to reference outside the bounds of an array, and you very rarely care enough about the minimal overhead to warrant the risk of bugs and vulnerabilities. For those times where you want to linearly traverse a 2D array or where you need to squeeze everything out of that inner loop, you can opt for the simple array."


I don't agree, I don't want to pay for what I don't use. But in any case, "default array" is nonsense: declaring the type of an object is up to me, it's me who decides whether or not to use a certain type or not, certainly not the compiler. Therefore, wherever I want I can use the bound-checked array.

That is to say, the "default bound-checked array" is a policy I, the programmer, have to and can adopt without any extra efforts.

Reply Parent Score: 1