comp.lang.ada
 help / color / mirror / Atom feed
From: anon@anon.org (anon)
Subject: Re: Learning Ada (Was: unsigned type)
Date: Sun, 05 Jul 2009 23:21:36 GMT
Date: 2009-07-05T23:21:36+00:00	[thread overview]
Message-ID: <4Aa4m.421894$4m1.207252@bgtnsc05-news.ops.worldnet.att.net> (raw)
In-Reply-To: 4a4f6cce$0$31869$9b4e6d93@newsspool3.arcor-online.net

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 5868 bytes --]

Wrong!
        I was not talking about the Ada Statements "Type" or "Subtype" but 
true Standards that go beyond Ada.

An example that is listed in the Ada RM, is the standard character sets:
  ISO 10646 Universal Multiple-Octet Coded Character Set
  ISO 8859-1 (Latin-1)

        But Ada also, use standards for it types, "Integer", and "Float', with 
their associate subtypes.  One reason but not the only reason for the range of 
these built-in types are the hardware.  If the hardware uses 32-bits integers 
then the Ada "Integer" is based on 32-bit. And in todays systems the Ada 
"Float" is normally based on the FPU (hardware) range.  And the numeric 
ranges for the FPU is based on standard that are defined and adopted by the 
agencies like IEEE and ISO. 

        But some people like "Ludovic Brenta, state that most Ada programmers 
would prefer to create their own types. In some case, that goes against the RM 
because it can create a non-standardize form of an Ada programs, that violate 
other RM rules. Plus, the RM states that a number of numeric types are 
predefined, such as "Integer", and it subtypes "Natural" and "Positive" as 
well the type "Float" and its subtypes. Redefining those predefines types are 
legal in Ada, by simply re-defining the type. Like for example, using 24 bit 
integer:

    type Integer is range -2 ** 24 .. +2 ** ( 24 - 1 ) ;

To use this new definition of "Integer", globally it needs to be define in the 
standard package, but for a single package or routine it better to create a new 
type or subtype and for the routine or package. But in most programming this 
is not necessary. That is, since Ada creation and the DOD dropping it full 
support of Ada, the usage for redefining the numeric data types is almost nil, 
not the norm any more.  Plus, the DOD require full documentation on all new 
define types. And no matter what type is defined the compiler will fall back to the 
basic standards of the universal-integer and universal-real aka CPU integer 
and FPU float and their operations. If you study most of the implementations of 
Ada, one can see that the types "Integer" and "Float" that are defined in the 
"Standard" package are basically equivalent to the Ada's universal-integer and 
universal-real.

        Now, "Rob Solomon" stated that he think "it would be beneficial, if 
the types Float and Integer were removed from the language". 

        First, if this could happen the RM would need a MAJOR overhaul. 
It would be easier to create a new language. Because both types are used 
throughout the RM defined packages. 

        Second, the predefined types allow for the program to be more portable, 
because a users type might not be accepted on the new system. But using the 
standards or creating a subtype from the standards is better. An example is:

    type Integer is range -2 ** 256 .. +2 ** ( 256 - 1 ) ;

which is a valid Ada statement but in a 32-bit and most 64-bit system this 
type is not allowed. You would need to use a special array or record type that 
is based on the universal-integer or CPU and define the operations in a math 
package or packages. There are a few special scientific projects that could 
use that type of maybe even a larger type like 1024-bit, but there's not 
enough applications for most to spend their time in creating such a package.  
Normally, its the scientist that ask for help that developes such packages for 
his project and only for his project and then sets the big price tag for others 
that package.

        Then third, is without standards types like "Integer" and "Float" how 
would the system work.  Using Ada, define a "=" or "*" without using the 
universal-integer and universal-real types or there operations.  You can not! 
You must have some basic standard types and operations to define other 
operations. Ada calls these types universal-integer and universal-real and uses 
their operations to build the predefine types and their operations.

        Fourth, is to interface with other languages. which also use standards. 
Some Ada programmer prefer pure Ada code.  Like using the "Interface" 
package to only define the standard unsigned types and to use the low-level 
shift and rotate routines for those unsigned types. But there are times when 
interfacing is required.


In <4a4f6cce$0$31869$9b4e6d93@newsspool3.arcor-online.net>, Georg Bauhaus <rm.tsoh.plus-bug.bauhaus@maps.futureapps.de> writes:
>anon wrote:
>> Standards are the way to go.  
>
>Yes, standards are the way to go.
>
>And this *is* standard Ada:
>
>   type T is range 1_000_000 .. 9_999_999;
>
>The type T has the exact same set of operations as Standard.Integer.
>It is just as efficient as implementation defined Standard.Integer.
>The types Integer or Boolean you mentioned are not needed in
>order to define T.  Universal_integer is the type of integer
>literals like 1_000_000; it is *not*  declared in package Standard, it
>does not even have a name, it is just a predefined anonymous
>type.
>
>> Also, Its kind of funny.  Other than me not one person here tried to answer the 
>> original person question from "unsigned type".
>
>The first answer by Florian Weimer answered the original
>question, implying, I guess, that CARDINAL is not a mod
>type and so cannot be replaced with a mod type like Unsigned_N
>as you seem to suggest: For Modula-2's CARDINAL, there
>is overflow check control... So CARDINAL is not the same
>as a modular type in Ada.
>
>The second answer, by Albrecht K�fer, in addition
>points to modular types and to how they
>differ from Modula-2's CARDINAL.
>
>Maybe it is part of Ada culture to explain how
>a problem is solved in Ada, not how you can
>write Ada in the language you know, even when
>that might make some Ada teachers more popular
>among those students who do not have the, uhm, time
>to really learn Ada.




  reply	other threads:[~2009-07-05 23:21 UTC|newest]

Thread overview: 113+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-06-28 15:36 unsigned type Rob Solomon
2009-06-28 15:45 ` Florian Weimer
2009-06-28 15:48 ` Albrecht Käfer
2009-06-28 17:56 ` anon
2009-06-28 19:17   ` Ludovic Brenta
2009-06-28 23:08     ` anon
2009-06-29  0:19       ` tmoran
2009-06-29  8:00         ` anon
2009-06-29  9:56           ` Jean-Pierre Rosen
2009-06-29 10:21             ` Ludovic Brenta
2009-06-29 11:23               ` sjw
2009-06-29 12:07                 ` Jean-Pierre Rosen
2009-06-29 20:06                 ` anon
2009-06-29 19:31               ` anon
2009-06-29 21:49                 ` Georg Bauhaus
     [not found]                 ` <zuKdneNYxfFNLNTXnZ2dnUVZ_t2dnZ2d@earthlink.com>
2009-06-30 11:29                   ` anon
2009-06-30 12:19                     ` Ludovic Brenta
2009-06-29 20:19             ` anon
2009-06-29 20:41               ` Ludovic Brenta
2009-06-29 22:15               ` Georg Bauhaus
2009-06-29 23:08               ` Adam Beneschan
2009-06-29 23:11               ` Adam Beneschan
2009-06-30 12:39               ` Martin
2009-06-29 10:25           ` Georg Bauhaus
2009-06-29 20:02             ` anon
2009-06-29 22:08               ` Georg Bauhaus
2009-06-30 23:01                 ` Randy Brukardt
2009-06-30 13:46               ` Jean-Pierre Rosen
2009-06-30 15:22                 ` Adam Beneschan
2009-06-30 15:59                   ` Albrecht Käfer
2009-06-30 16:59                     ` Adam Beneschan
2009-06-30 17:44                       ` Albrecht Käfer
2009-06-30 18:13                         ` Robert A Duff
2009-06-30 18:16                           ` Albrecht Käfer
2009-06-30 23:48                       ` anon
2009-07-01  1:39                         ` Adam Beneschan
2009-07-02 19:04                           ` anon
2009-07-02 19:49                           ` anon
2009-07-02 21:37                             ` Adam Beneschan
2009-07-03  1:42                             ` anon
2009-07-03  2:10                               ` Adam Beneschan
2009-07-03  7:07                             ` Jean-Pierre Rosen
2009-07-03 20:53                               ` anon
2009-07-03 21:24                                 ` Georg Bauhaus
2009-07-04  9:09                                   ` anon
2009-07-04 13:43                                     ` Georg Bauhaus
2009-07-06  9:04                                     ` AdaMagica
2009-07-03 21:46                                 ` Adam Beneschan
2009-07-04 12:39                                   ` Martin
2009-07-01  8:09                   ` Jean-Pierre Rosen
2009-07-01 15:08                     ` Albrecht Käfer
2009-07-11 14:40           ` Hibou57 (Yannick Duchêne)
2009-07-11 17:18             ` sjw
2009-07-11 18:15               ` Hibou57 (Yannick Duchêne)
2009-07-11 20:20             ` anon
2009-07-12 17:57               ` Samuel Tardieu
2009-07-12 18:24                 ` AdaMagica
2009-07-13 22:03                 ` anon
2009-07-14  7:58                   ` Martin
2009-07-16 13:54                     ` anon
2009-07-16 14:41                       ` Martin
2009-07-16 15:12                         ` Adam Beneschan
2009-07-11 14:43           ` Hibou57 (Yannick Duchêne)
2009-07-11 15:22             ` Albrecht Käfer
2009-06-29  8:42       ` Martin
2009-06-29  8:54         ` Dmitry A. Kazakov
2009-06-29 10:10           ` Martin
2009-06-29 12:34             ` Dmitry A. Kazakov
2009-06-29 19:26             ` anon
2009-06-29 23:02               ` Martin
2009-06-29 19:47           ` anon
2009-06-30  8:31             ` Ludovic Brenta
2009-06-28 19:54   ` tmoran
2009-06-28 22:34     ` Gary Scott
2009-06-28 23:15       ` John B. Matthews
2009-06-28 23:21       ` anon
2009-06-29  7:18       ` Dmitry A. Kazakov
2009-06-29  9:52         ` Georg Bauhaus
2009-06-29 12:43           ` Dmitry A. Kazakov
2009-06-29 13:36     ` Rob Solomon
2009-06-29 14:03       ` Robert A Duff
2009-06-29 14:13       ` Georg Bauhaus
2009-06-29 14:18       ` Ludovic Brenta
2009-06-29 15:40         ` Robert A Duff
2009-07-03  1:41         ` Rob Solomon
2009-07-03  7:12           ` Learning Ada (Was: unsigned type) Jacob Sparre Andersen
2009-07-03  8:38             ` Learning Ada Peter Hermann
2009-07-03  9:44               ` Georg Bauhaus
2009-07-03 22:20             ` Learning Ada (Was: unsigned type) anon
2009-07-04 14:53               ` Georg Bauhaus
2009-07-05 23:21                 ` anon [this message]
2009-07-06  0:05                   ` Ludovic Brenta
2009-07-06  0:19                   ` Learning Ada Albrecht Käfer
2009-07-06  2:50                     ` anon
2009-07-06  6:18                       ` AdaMagica
2009-07-06  7:47                         ` Jean-Pierre Rosen
2009-07-06 20:21                         ` anon
2009-07-06 21:08                           ` Georg Bauhaus
2009-07-06 22:43                           ` Frank J. Lhota
2009-07-09 22:28                             ` anon
2009-07-10  6:23                               ` AdaMagica
2009-07-06 10:53                   ` Learning Ada (Was: unsigned type) Georg Bauhaus
2009-07-06 19:34                     ` anon
2009-07-06 20:29                       ` Learning Ada Albrecht Käfer
2009-07-06 21:04                       ` Learning Ada (Was: unsigned type) Georg Bauhaus
2009-07-07 19:25                       ` sjw
2009-07-06 23:15                   ` Randy Brukardt
2009-07-07 15:29                     ` Adam Beneschan
2009-07-09  0:15                       ` Randy Brukardt
2009-07-09 15:26                         ` Adam Beneschan
2009-06-29 15:37       ` unsigned type Adam Beneschan
2009-07-06 20:20       ` Dave
2009-06-29 16:51 ` Martin Krischik
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox