comp.lang.ada
 help / color / mirror / Atom feed
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



  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