comp.lang.ada
 help / color / mirror / Atom feed
From: "Jed" <jehdiah@orbitway.net>
Subject: Re: Why use C++?
Date: Sun, 14 Aug 2011 00:22:28 -0500
Date: 2011-08-14T00:22:28-05:00	[thread overview]
Message-ID: <j27o23$6ha$6@dont-email.me> (raw)
In-Reply-To: 4e4645c0$0$7629$9b4e6d93@newsspool1.arcor-online.net

Georg Bauhaus wrote:
> On 12.08.11 21:51, Jed wrote:
>
>>> The general idea is that you start from the problem
>>> without giving thought to representation.  Typically,
>>> without loss of efficiency.  Compiler makers know a fair
>>> bit about good choice of representation.  This means:
>>> Describe precisely what matters to your program, on
>>> any machine, without reference to any representation.
>>> Then, and only then, and only if necessary, throw in your
>>> knowledge of representation.
>>
>> That doesn't work when you do IO.
>
>
> Specifying representation when needed, and separate  from
> the type declaration, works perfectly well for I/O.
> For I/O in particular!

Maybe true, but maybe I'd agree, and maybe I'd maybe I'd "bail out" at 
the last step before boarding the airplane, which of course I could maybe 
never ever do, for being so afraid of being in the sky under someone(s) 
else's control... I mean, like Rain Man.

>
> Short summary:
>
> Declaring a type for computation does *not* require specification
> of representation.

That goes without saying. But maybe I LIKE it that way.

> However, should it become necessary

It's not a question of necessity.

> to
> specify a representation of objects of a type, the programmer
> should be able to do so, but *not* by forcing the representation
> into every existing type.

Maybe, but maybe that is too "pie in the sky" academia/wishful-thinking, 
etc. Who are the beneficiaries of such and it is a benefit at all?

>
>
> (Incidentally, bit-oriented, abstracting types (bit fields
> in C, std::bitset in C++, bit arrays in D, or packed arrays of
> Booleans in a host of Pascalish languages) don't make a
> language 4GL.)

I know what a 4GL is, do you? ;)

>
> Examples of how omitting (implied) representation from type
> declaration works well with I/O.
>
> 1. (I/O As-is) Suppose I/O means writing to a particular address.
> There is an output port to write to.  It has CHAR_BIT bits,
> and CHAR_BIT == 8.  You want to write an object of type long
> which happens to consists of four octets.  One approach is to
> write a function that shifts bits into a char object and then
> pushes this object out the port.
>
> Using the fundamental type system of C++, you need some size
> computations, at compile time, or by the programmer, so that
> the program will perform the right number of shifts, for a
> given implementation.  With C++ and long, long[], etc, there
> are idioms. They typically use the sizeof operator, and division.
>
> The very same technique is available for objects declared of a
> type 1e0 .. 1e5 that does not mention any other type's name!
> The programmer may leave it to the compiler to choose a
> representation for objects of type 1e0 .. 1e5 that is
> best on the target hardware for computation.  For I/O, the
> programmer again uses the type system and inquires of the type
> how many octets there are in the type.  But!  He does not have
> to name a type for the "computational objects", such as
> declaring them to be "long", he just lists the values that
> should be stored in objects of the type, and exactly these, no
> more, no less.

Pfft. There is no "int", "long", "short"... but there is int32, uint8, 
etc. Don't bother me with past mistakes. Given that, then move on. All 
else is banter/irrelevant (to progress).

>
> In pseudo code,
>
>    type T is exactly 1e0 .. 1e5.
>    T obj.   // representation left to the compiler
>
>    // compute, compute, compute, ...  then,
>
>    for k in [0, octet_size(T)) do
>      x <- shift_octet_from (obj@k),
>      write_octet(x, port_address)
>    done.

Ech, I have to skip past example code mostly. Until the higher level is 
worked out. "Design in code" is a fantasy (for the most part, it is just 
wailing on the guitar, which is, of course, masturbation).

>
> 2. (Conversion) Suppose I/O means writing a number of structured
> objects to a stream.

Suppose? Suppose this: there is no "stream". :P
 





  reply	other threads:[~2011-08-14  5:22 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 [this message]
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
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