From: Ian Collins <ian-news@hotmail.com>
Subject: Re: Why use C++?
Date: Sat, 13 Aug 2011 23:10:48 +1200
Date: 2011-08-13T23:10:48+12:00 [thread overview]
Message-ID: <9an4doFdeuU2@mid.individual.net> (raw)
In-Reply-To: <m0g18wtbk40g$.1ebe2ndaeyvuj$.dlg@40tude.net>
On 08/13/11 09:52 PM, Dmitry A. Kazakov wrote:
> On Sat, 13 Aug 2011 21:29:05 +1200, Ian Collins wrote:
>
>> It's pretty rare for the application domain to be concerned about
>> the semantics of an integer beyond those specified by the language.
>
> If buffer overflows and code quality is not a concern, then yes.
Most variables have limited scope and a well defined range. So if I use
an int in a for loop over a small set of data, I'm not writing poor
quality code.
>>>>> In each such case I will have to use a type different from the machine
>>>>> type. This is just another argument why types need to be precisely
>>>>> specified. I addressed this issue above.
>>>>
>>>> But they are precisely specified on any given platform.
>>>
>>> 1. They are not. In order to see the specification of int, you have to read
>>> the compiler documentation. My point was that the program code does not
>>> specify the properties of int. The answer that it is defined somewhere
>>> somehow is not an argument at all, anything works in this or that way.
>>
>> If you want to get the best performance out of a given platform (which
>> many C and C++ programs do), you have to program to the characteristics
>> of the platform.
>
> First of all, performance is not a functional requirement.
It very often is the first one for most of the embedded systems I write!
> If functional
> requirements are not met, non-functional ones are irrelevant.
The functional requirements are irrelevant if they can not be met in the
required time.
> Thus the
> question stands: what does int implement? Where in the program code is any
> specification of the *functional* requirements which the implementation
> chosen to be int is supposed to fulfill [in the best etc possible way,
> which in its turn requires validation]? How do I know if int is OK, not
> unsigned, not long, not short and so on?
In general, you can't. Where it matters, you have to measure.
> Secondly, how do you know that int gives you the best performance across
> all possible implementations fulfilling the functional requirements? By
> choosing int you prohibit the compiler to select any other machine type,
> which also does the things you want. The point is, specify what you want
> and let the compiler to implement it in a best possible way. Choosing an
> implementation is an optimization issue, you can aim at memory use, at
> time, at best lock-free sharing and so on. Fixing a machine type makes your
> program potentially less efficient. More precisely you specify the
> semantics of required type, more knowledge the compiler has to generate
> efficient code.
I do see your point and for C or C++ the best we can do knowing a
variable is signed or unsigned of a given range is to use one of the C
fast_xx types. Far from ideal I know.
Yes I agree being able to specify a type without reference to an
underlying fundamental type is a powerful feature C and C++ lack.
--
Ian Collins
next prev parent reply other threads:[~2011-08-13 11:10 UTC|newest]
Thread overview: 87+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <fb9f787c-af06-427a-82b6-b0684e8dcbc5@s2g2000vby.googlegroups.com>
[not found] ` <j1kaj8$dge$1@adenine.netfront.net>
[not found] ` <1e292299-2cbe-4443-86f3-b19b8af50fff@c29g2000yqd.googlegroups.com>
[not found] ` <j1tha5$11q5$1@adenine.netfront.net>
[not found] ` <1fd0cc9b-859d-428e-b68a-11e34de84225@gz10g2000vbb.googlegroups.com>
2011-08-10 19:05 ` Why use C++? Niklas Holsti
2011-08-10 22:37 ` Randy Brukardt
2011-08-10 22:49 ` Ludovic Brenta
2011-08-12 4:54 ` Randy Brukardt
2011-08-11 7:54 ` Dmitry A. Kazakov
2011-08-11 8:20 ` Jed
2011-08-11 9:13 ` Dmitry A. Kazakov
2011-08-11 10:57 ` Jed
2011-08-11 11:43 ` Georg Bauhaus
2011-08-12 5:07 ` Jed
2011-08-11 13:11 ` Nomen Nescio
2011-08-11 15:11 ` Paul
2011-08-12 5:15 ` Jed
2011-08-12 21:39 ` Fritz Wuehler
2011-08-14 6:52 ` Jed
2011-08-14 8:13 ` Nomen Nescio
2011-08-11 15:09 ` Dmitry A. Kazakov
2011-08-12 5:03 ` Jed
2011-08-12 8:32 ` Georg Bauhaus
2011-08-12 13:15 ` Hyman Rosen
2011-08-12 22:09 ` Randy Brukardt
2011-08-12 15:14 ` Jed
2011-08-12 17:20 ` Georg Bauhaus
2011-08-12 19:51 ` Jed
2011-08-12 21:22 ` Ludovic Brenta
2011-08-14 7:00 ` Jed
2011-08-16 13:06 ` Ludovic Brenta
2011-08-13 9:37 ` Georg Bauhaus
2011-08-14 5:22 ` Jed
2011-08-13 10:27 ` Georg Bauhaus
2011-08-14 5:35 ` Jed
2011-08-14 20:13 ` Georg Bauhaus
2011-08-15 11:38 ` Georg Bauhaus
2011-08-13 11:02 ` Georg Bauhaus
2011-08-14 5:56 ` Jed
2011-08-12 9:21 ` Dmitry A. Kazakov
2011-08-12 13:26 ` Jed
2011-08-12 14:30 ` Dmitry A. Kazakov
2011-08-12 19:06 ` Jed
2011-08-12 20:05 ` Dmitry A. Kazakov
2011-08-13 7:53 ` Jed
2011-08-13 9:15 ` Dmitry A. Kazakov
2011-08-13 9:29 ` Ian Collins
2011-08-13 9:52 ` Dmitry A. Kazakov
2011-08-13 11:10 ` Ian Collins [this message]
2011-08-13 11:46 ` Georg Bauhaus
2011-08-13 20:30 ` Ian Collins
2011-08-13 11:54 ` Brian Drummond
2011-08-13 13:12 ` Simon Wright
2011-08-14 11:01 ` Brian Drummond
2011-08-14 4:54 ` Jed
2011-08-14 4:35 ` Jed
2011-08-14 6:46 ` Dmitry A. Kazakov
2011-08-14 4:49 ` Jed
2011-08-14 6:51 ` Dmitry A. Kazakov
2011-08-14 4:29 ` Jed
2011-08-14 7:29 ` Dmitry A. Kazakov
2011-08-16 8:18 ` Nick Keighley
2011-08-16 8:47 ` Dmitry A. Kazakov
2011-08-16 9:52 ` Nick Keighley
2011-08-16 10:39 ` Dmitry A. Kazakov
2011-08-16 10:23 ` Georg Bauhaus
2011-08-16 10:58 ` Dmitry A. Kazakov
2011-08-16 11:44 ` Georg Bauhaus
2011-08-16 14:51 ` Bill Findlay
2011-08-16 19:13 ` Dmitry A. Kazakov
2011-08-16 19:23 ` Bill Findlay
2011-08-12 11:48 ` Stuart Redmann
2011-08-12 13:12 ` Vinzent Hoefler
2011-08-12 15:50 ` Stuart Redmann
2011-08-12 17:02 ` Bill Findlay
2011-08-15 12:59 ` Vinzent Hoefler
2011-08-12 5:02 ` Randy Brukardt
2011-08-12 5:16 ` Robert Wessel
2011-08-12 16:39 ` Adam Beneschan
2011-08-12 5:24 ` Jed
2011-08-12 6:51 ` Paavo Helde
2011-08-12 7:41 ` Georg Bauhaus
2011-08-12 15:50 ` Fritz Wuehler
2011-08-12 19:59 ` Jed
2011-08-13 8:06 ` Stephen Leake
2011-08-12 9:40 ` Dmitry A. Kazakov
2011-08-12 9:45 ` Ludovic Brenta
2011-08-12 10:48 ` Georg Bauhaus
2011-08-12 15:56 ` Ludovic Brenta
2011-08-13 8:08 ` Stephen Leake
2011-08-18 13:39 ` Louisa
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox